Как запустить задание cron сейчас и никогда не запускать его снова или запускать каждый месяц? - PullRequest
0 голосов
/ 09 мая 2020

Мне нужно написать задание cron для написания сценария Python, назовем его «script.py», а команда будет python3 script.py

Обратите внимание: это сценарий, который постоянно запускается и если я настрою его на повторный запуск, он будет выплевывать скрипт каждый раз, когда это будет запланировано, как если бы я помещал его каждую минуту. Я попытался запланировать задание cron для запуска скрипта каждую минуту, и это сработало (но это не то, что я хочу).

Есть ли способ заставить его запускаться «сейчас», но никогда больше или нет , делать это каждый месяц или около того? Я так не понимаю, как это сделать.

Например, сегодня 8 мая 2020 г., а сейчас 19:21. Я хочу начать выполнение этого cronjob сейчас (в следующую минуту в 19:22) и больше никогда не запускать скрипт после этого?

Когда я пытался запустить его 8-го числа каждого месяца в 19:22 например, сценарий не работал, когда сегодня было 19:22.

Как мне go об этом?

1 Ответ

0 голосов
/ 09 мая 2020

Если вы хотите запустить задание только один раз, не используйте cron; у него нет способа добиться этого.

Если вы хотите запустить его позже, возможно, после выхода из системы, используйте at(1).

Если вы хотите запустить его после небольшой задержки, например, 1 минуту в вашем примере, и вы планируете оставаться в системе (или задание становится демоном), может быть проще просто сделать sleep 1m; myjob в оболочке.

Если вы хотите запускать задание один раз в месяц, в 19:22 8-го числа, вы сможете выполнить

22 19 8 * * myjob

, но учтите, что время интерпретируется относительно глобального часового пояса, который может не соответствовать часовому поясу, который вы установили для себя с помощью переменной среды TZ. Согласно https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab это должен быть часовой пояс, указанный в файле /etc/localtime. Если это не тот часовой пояс, который вы ожидаете, вы можете соответствующим образом настроить время в записи crontab.

...