Удобно планировать выполнение команды позже?

72

Какой простой способ запустить команду, скажем, через 8 часов? Я могу думать так:

nohup bash -c "sleep 28800 ; ./mycommand.sh" &

Есть ли более «правильный» способ?

    
задан Steve Bennett 30.08.2013 в 13:25
источник

4 ответа

106

Вы можете использовать команду at . Команды at выполняются позднее. Утилита at должна читать команды со стандартного ввода и группировать их вместе как задание, которое будет выполнено позднее.

Обычно, at устанавливается по умолчанию в Ubuntu, но если ваша версия не включает его, установите через:

sudo apt-get install at

Дополнительные сведения, параметры, примеры и другие сведения см. в Репозитории репозитория Ubuntu

Пример:

at now +8 hours -f ~/myscript.sh

Вы также можете использовать удобные сокращения, например tomorrow или noon , как в

echo "tweet fore" | at teatime 

Предупреждение: . Это приведет к немедленному выполнению команды слева от трубы , а только ее последующий вывод. В этом примере также показано, как вы можете выполнять транзакции в at . at -c - это способ проверки запланированных действий, которые вы можете удобно перечислить с их номером, например:

at -c 3
    
ответ дан Mitch 30.08.2013 в 13:39
источник
9

Да, вы можете установить задание cron.

Например, если сейчас время 14:39:00, а сегодня - пятница, 30 августа, вы можете добавить следующее задание cron (которое будет выполнено через 8 часов) в файле crontab с помощью команды crontab -e :

39 22 30 8 5  /path/to/mycommand.sh

Подробнее о:

ответ дан Radu Rădeanu 30.08.2013 в 13:34
7

Используйте графический интерфейс на основе Gnome для cron , at и т. п.:

Внедрение CronHowto предполагает использование gnome-schedule gui, что намного лучше, чем печатать весь мусор в терминал (например, для «средних» пользователей Ubuntu, которые не являются «мощными» пользователями * nix / bsd.)

Запустите его, используя кнопку Unity Dash (или другое приложение), чтобы найти Запланированные задания или запустить gnome-schedule .

On Gnome-based Ubuntu systems Gnome Scheduled tasks tool (from the gnome-schedule package) in Applications --> System Tools provides a graphical interface with prompting for using Cron. The project website is at http://gnome-schedule.sourceforge.net/; the software is installable from the Software Center or by typing

sudo apt-get install gnome-schedule

in a terminal.

Используя gnome-schedule , для скрипта в вашем домашнем каталоге новая команда «at» будет настроена с использованием этого типа окна:

    
ответ дан user29020 16.07.2014 в 21:20
3

Я выяснил быстрый и грязный способ сделать это, прежде чем обнаружил, что at - вещь.

Скажите, что вы хотите, чтобы ваш скрипт работал в полдень:

until [[ "$(date)" =~ "12:00:" ]]; do
    sleep 10
done
./mycommand.sh

Скажите, что вы хотите, чтобы он работал завтра в полдень (сегодня для меня 24 ноября):

until [[ "$(date)" =~ "25 12:00:" ]]; do 
    sleep 30
done
./mycommand.sh
    
ответ дан wjandrea 24.11.2015 в 07:07