Добавьте строки к крону из сценария

Существует ли способ добавить строки к крону пользователя с помощью сценария?

Я обычно делаю это использование crontab -e, но я хотел бы автоматизировать эту задачу со сценарием оболочки.

40
задан 3 April 2014 в 20:47

2 ответа

Вы можете добавить эту строку в нижнюю часть crontab текущего пользователя следующим образом:

#!/bin/bash

line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
49
ответ дан 23 November 2019 в 00:09

Если Вы хотите отредактировать значение в своем 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 сделают то, что сделает редактор, но всегда хорошо иметь дополнительный инструмент на швейцарском ноже. ^.^

3
ответ дан 23 November 2019 в 00:09

Другие вопросы по тегам:

Похожие вопросы: