Есть ли способ добавить строки в cron пользователя через скрипт?
Я обычно делаю это с использованием crontab -e
, но я хотел бы автоматизировать эту задачу с помощью сценария оболочки.
Есть ли способ добавить строки в cron пользователя через скрипт?
Я обычно делаю это с использованием crontab -e
, но я хотел бы автоматизировать эту задачу с помощью сценария оболочки.
Ответы:
Вы можете отобразить строку в нижней части текущего файла crontab следующим образом:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
cron
была изменена.
crontab
для этого пользователя еще не существует (?)
Если вы хотите отредактировать значение в вашем 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 будет делать то , что ад будет делать, но это всегда хорошо иметь дополнительный инструмент на швейцарский армейский нож. ^. ^