Существует ли способ добавить строки к крону пользователя с помощью сценария?
Я обычно делаю это использование crontab -e
, но я хотел бы автоматизировать эту задачу со сценарием оболочки.
Вы можете добавить эту строку в нижнюю часть crontab текущего пользователя следующим образом:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
Если Вы хотите отредактировать значение в своем crontab, можно сделать что-то вроде:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Очевидно, необходимо быть осторожными с заменой, чтобы быть уверенными, что она только соответствует строке (строкам), которую Вы хотите изменить; иначе все foos
изменяются на bars
(в этом примере).
Преимущество для этого метода состоит в том, что Вы не заменяете весь crontab. (Метафорический пинцет, а не кувалда.)
Можно использовать любую команду редактирования вместо sed. Например, если Вы хотели использовать редактора для исправления строки, которая начинает быть похожей на это:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Скажите, что эта строка среди многих строк, или у Вас есть много различных crontabs для обновления в различных системах, и Вы только знаете, что Ваша строка будет единственной строкой с термином 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 сделают то, что сделает редактор, но всегда хорошо иметь дополнительный инструмент на швейцарском ноже. ^.^