я использую команду linux screen
для выполнения фонового скрипта на моем сервере. Скрипт должен запускаться каждый день, но в течение определенного диапазона времени (с 7:00 до 21:00). На данный момент я вручную выхожу из экрана (используя
ctrl+c
, а затем команду exit
) каждый день в 9 вечера и пересоздание экрана (используя экран
-S <ИМЯ>
) в 7 утра следующего дня.
Есть ли способ сделать экран «автоматически» спать с 9 вечера до 7 утра? (Так что мне не нужно каждый день вмешиваться вручную.)
Я бы не стал использовать экран, но если вы настаиваете, вы можете сделать это так:
0 7 * * * some_user sh -c 'screen -d -m -S 7to9am -s /usr/local/bin/the_script.sh ; sleep 2h ; screen -X -S 7to9am quit'
В конце/etc/crontab
Правильный способ сделать это без экрана:0 7 * * * some_user timeout 2h /usr/local/bin/the_script.sh