Поиск…


Выполнять задание один раз в определенное время

Примечание: at не устанавливается по умолчанию в большинстве современных дистрибутивов.

Чтобы выполнить задание один раз в другое время, чем сейчас, в этом примере 17:00 вы можете использовать

echo "somecommand &" | at 5pm

Если вы хотите поймать вывод, вы можете сделать это обычным способом:

echo "somecommand > out.txt 2>err.txt &" | at 5pm

at понимании многих временных форматов, поэтому вы также можете сказать

echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17

Если год или дата не указаны, он принимает следующий раз, когда будет указано указанное вами время. Поэтому, если вы дадите час, который уже прошел сегодня, это займет завтра, и если вы дадите месяц, который уже прошел в этом году, он будет принят в следующем году.

Это также работает вместе с nohup, как вы ожидали.

echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm

Есть еще несколько команд для управления заданиями по времени:

  • atq перечисляет все заданные по времени задания ( atq ueue)
  • atrm удаляет заданное время ( atr e m ove)
  • пакет работает в основном так же, как и у, но выполняет задания только тогда, когда загрузка системы ниже 0,8

Все команды применяются к заданиям пользователя, вошедшего в систему. Если вы вошли в систему с правами администратора, все системные задания обрабатываются, конечно.

Повторное выполнение заданий в указанное время с помощью systemd.timer

systemd обеспечивает современную реализацию cron . Для выполнения периодического сценария необходима служба и файл таймера. Файлы службы и таймера должны быть помещены в / etc / systemd / {system, user}. Файл службы:

[Unit]
Description=my script or programm does the very best and this is the description

[Service]
# type is important!
Type=simple
# program|script to call. Always use absolute pathes 
# and redirect STDIN and STDERR as there is no terminal while being executed 
ExecStart=/absolute/path/to/someCommand >>/path/to/output 2>/path/to/STDERRoutput
#NO install section!!!! Is handled by the timer facitlities itself.
#[Install]
#WantedBy=multi-user.target

Затем файл таймера:

[Unit]
Description=my very first systemd timer
[Timer]
# Syntax for date/time specifications is  Y-m-d H:M:S 
# a * means "each", and a comma separated list of items can be given too
# *-*-* *,15,30,45:00  says every year, every month, every day, each hour,
# at minute 15,30,45 and zero seconds

OnCalendar=*-*-* *:01:00  
# this one runs each hour at one minute zero second e.g. 13:01:00 


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow