Удобно ли запланировать команду для запуска позже?
Какой простой способ запустить команду, скажем, через 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