У меня нет преимуществ использовать crontab -e для запуска моего скрипта. Есть ли другой способ периодически запускать мой скрипт? В основном мне нужно запускать его раз в неделю.
4 ответа
Если он включен и установлен, вы можете использовать команду at
. Однако это единовременное планирование ... вам нужно будет запустить новую команду at
в том месте, которое вы хотели перепланировать.
Проверьте страницы man
для помощи , по at
команде.
Но помните, он не всегда устанавливается / включается во всех системах Linux / UNIX.
НАСТОЯЩИМ ответом на это является обращение к вашему дружественному администратору систем соседства, объяснение вашей проблемы и просьба разрешить вам доступ к cron. Вы должны объяснить, как работает ваша программа, каковы ее требования к ресурсам, и, как правило, дать обещание, что вы не будете вредить системе, если получите cron access privs.
Другой подход заключается в том, чтобы cronjob работал на другом компьютере, который использует ssh
для выполнения определенной команды на целевом сервере. Если вы настроите регистрацию на основе ключа, это будет легко.
Просто установите cronjob на другой машине, которая выглядит, например, как
0 0 * * 7 /usr/bin/ssh remoteuser@remotehost mycommand
За исключением того, что удаленный сервер находится в автономном режиме во время выполнения, это будет надежно при перезапусках удаленного сервера и других вещах.
Если вы не можете / не хотите держать терминал открытым, вы можете запустить его в GNU Screen / tmux или с nohup
.
Примеры:
screen sh -c 'while sleep 7d; do mycommand; done'
или же
tmux 'while sleep 7d; do mycommand; done'
Примечание: эти команды будут запускать mycommand
первый раз через неделю, а затем периодически, а не напрямую. Изменить в соответствии с предпочтениями.
См. Проектную документацию для получения дополнительной информации о присоединении / отключении сеансов.
(7d
- это конкретная GNU, я считаю. Просто поместите туда 604800
если sleep
версия поддерживает только секунды.)