Я программист, и я не знаю много о кронах, но я хочу знать, возможно ли это.
Допустим, у меня есть массив [option1, option2, option3]
и скрипт, который я запускаю в NodeJS script.js
. Я хочу запускать этот скрипт каждый день в 1 час ночи. Команда cron
этого будет:
0 1 * * * node ~/script.js
Ну, теперь сложная часть, я хочу менять параметры каждый день, например, в понедельник, когда я хочу запустить node ~/script.js option1
, на следующий день node ~/script.js option2
и так далее. Кроме того, я хочу иметь возможность добавлять / удалять параметры, когда это необходимо, но вращение должно оставаться неизменным.
Это возможно каким-либо образом? Я знаю, что мог бы сделать это и внутри узла, но я бы предпочел сделать это вне скрипта и оставить скрипт как есть.
Ответы:
Это сложно. Что означает, что вращение остается неизменным после изменения списка опций? В конце концов, вы могли бы полностью перестроить список, уничтожив любую подсказку о том, где вы находитесь.
То, что вы, вероятно, могли бы сделать, это создать каталог с файлами, которые представляют ваши параметры (либо по имени файла, либо по их содержимому). Затем, когда бы ни выполнялось задание cron, вы бы перечислили этот каталог, отсортировав файлы по времени последней модификации. Вы берете самую старую запись,
touch
этот файл, чтобы изменить его время модификации на текущее время, а затем используете его для запуска скрипта.Если вы хотите, вы также можете написать это в одной строке для cron, хотя это будет труднее читать.
Добавление параметров означает добавление новых файлов в каталог параметров. Удаление параметров означает удаление файлов. В любой момент самым старым файлом будет тот, который будет запущен следующим, поэтому новые опции будут добавлены в самом конце цикла, как если бы он только что был запущен. Если вы хотите изменить порядок вариантов, вы можете коснуться их в любом порядке.
источник
$(ls -rt | head -n1)
конечно, будут ломаться на имена файлов, которые включают в себя новые строки, но для этой цели вы, вероятно, можете сойти с рук просто "не делай этого".Допустим, вы хотите другой вариант для каждого дня недели. Вы можете:
Есть отдельная работа cron для этих:
и т.д...
У вас есть
bash
нужные варианты:(Я не запускал последний, так что, возможно, потребуется немного подправить - но это общая идея.)
источник
echo option1
т.д., потому что мои варианты могут меняться от недели к неделе. Я просто сделаю это в моем приложении Node и отследю, какой из них я запускал последним в моей БД.Нет, я не могу придумать чистого способа сделать это. Просто напишите простой сценарий оболочки-оболочки, который проверяет дату и запускает приложение узла с необходимыми опциями каждый день.
источник