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

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

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

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

6 ответов

Решение

Вы можете использовать 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

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

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

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

Больше о:

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

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

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

В системах Ubuntu на основе Gnome инструмент "Назначенные задачи Gnome" (из пакета gnome-schedule) в меню "Приложения" -> "Системные инструменты" предоставляет графический интерфейс с подсказками для использования Cron. Веб-сайт проекта находится по адресу http://gnome-schedule.sourceforge.net/; программное обеспечение можно установить из Центра программного обеспечения или набрав

sudo apt-get install gnome-schedule

в терминале.

С помощью gnome-scheduleДля сценария в вашем домашнем каталоге новая команда "at" будет настроена с использованием этого типа окна:

введите описание здесь

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

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

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

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

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

Если вы используете bash на Mac, вы столкнетесь с некоторыми трудностями при использовании atпрограмма. В этом случае вы можете улучшить исходное предложенное решение,

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

с этим,

      nohup bash -c "sleep $(echo '8 * 60 * 60' | bc) ; ./mycommand.sh" &

что является более удобочитаемой формой того, как долго вы хотите ждать. В этом примере 8это количество часов, которое вы хотите подождать перед запуском вашего скрипта mycommand.sh.

Чтобы установить gnome-scheduleв Ubuntu 21.04 вы можете сделать

      $ sudo snap install gnome-schedule --edge --jailmode
Другие вопросы по тегам