Есть ли способ добавить строки в cron с помощью скрипта?
Я обычно делаю это с помощью crontab -e, но я хотел бы автоматизировать эту задачу с помощью сценария оболочки.
Если вы хотите отредактировать значение в своем crontab, вы можете сделать что-то в соответствии с:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Очевидно, что вам нужно быть осторожным с вашей подстановкой, чтобы убедиться, что она соответствует строке (ы), которые вы хотите изменить; в противном случае все foos будут изменены на bars (в этом примере).
Преимущество этого метода заключается в том, что вы не заменяете весь crontab. (Метафорический пинцет, а не кувалда).
Вы можете использовать любую команду редактирования вместо sed. Например, если вы хотите использовать ed для создания строки, которая начинается следующим образом:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Скажите, что эта строка относится к числу строк или у вас есть много разных crontab для обновления на разных системах и вы знаете, что ваша линия будет единственной строкой с термином flitch в ней.
Это может выглядеть так:
$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...
Теперь я должен признать, что почти 100 % времени sed будет делать то, что будет делать, но всегда полезно иметь дополнительный инструмент для швейцарского армейского ножа. ^. ^