Чи є спосіб додати рядки до крона користувача через скрипт?
Я зазвичай роблю це за допомогою crontab -e
, але я хотів би автоматизувати це завдання за допомогою сценарію оболонки.
Чи є спосіб додати рядки до крона користувача через скрипт?
Я зазвичай роблю це за допомогою 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
(у цьому прикладі).
Перевага цього методу полягає в тому, що ви не замінюєте весь кронтаб. (Метафоричний пінцет, а не кувалда.)
Ви можете використовувати будь-яку команду редагування замість sed . Наприклад, якщо ви хочете скористатися ed, щоб торкнутися лінії, яка починається приблизно так:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Скажімо, цей рядок є між багатьма рядками або у вас є багато різних кронових вкладок для оновлення в різних системах, і ви знаєте лише, що ваша лінія буде єдиним рядком із терміном 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 буде робити те, що буде робити Ед , але завжди добре мати додатковий інструмент на ножі швейцарської армії. ^. ^