Скрипт запуска Crontab при запуске

У меня есть .sh, который выполняет команду. Я хочу использовать crontab -e и войти в файл @reboot /path/to/command.

Как выполнить это в одной команде, а не отдельно запускать crontab -e, а затем вручную вставить строку, а затем сохранить файл.

1
задан 2 June 2017 в 18:22

4 ответа

Когда вы используете crontab -e, файл будет создан в /var/spool/cron/crontabs/, имя которого будет равно вашему имени.

Так что просто перенаправьте нужную строку в этот файл:

echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER , используя tee -a, мы говорим tee добавить @reboot /path/to/file.sh в конец этого файла, а не перезаписывать его. если его там нет, он будет создан.
0
ответ дан 18 July 2018 в 12:17

Вероятно, правильный способ сделать это - как описано в разделе «Как программно добавить новый файл crontab без замены предыдущего» - это выгрузить существующий crontab во временный файл, изменить его, а затем прочитать его обратно. Например: [ ! d0] cmd='@reboot /path/to/file' tmpfile=$(mktemp) && crontab -l > "$tmpfile" cmd='@reboot /path/to/command' grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile" crontab "$tmpfile" && rm -- "$tmpfile"

Опция «quick'n'dirty» - если вы не заботитесь о проверке - будет

crontab -l | sed '$a@reboot /path/to/command' | crontab -

, предполагая, что GNU sed, что позволяет a ppend текст на одной строке.

right

0
ответ дан 18 July 2018 в 12:17

Когда вы используете crontab -e, файл будет создан в /var/spool/cron/crontabs/, имя которого будет равно вашему имени.

Так что просто перенаправьте нужную строку в этот файл:

echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER , используя tee -a, мы говорим tee добавить @reboot /path/to/file.sh в конец этого файла, а не перезаписывать его. если его там нет, он будет создан.
0
ответ дан 24 July 2018 в 19:56

Вероятно, правильный способ сделать это - как описано в разделе «Как программно добавить новый файл crontab без замены предыдущего» - это выгрузить существующий crontab во временный файл, изменить его, а затем прочитать его обратно. Например: [ ! d0] cmd='@reboot /path/to/file' tmpfile=$(mktemp) && crontab -l > "$tmpfile" cmd='@reboot /path/to/command' grep -Fxq "$cmd" "$tmpfile" || echo "$cmd" >> "$tmpfile" crontab "$tmpfile" && rm -- "$tmpfile"

Опция «quick'n'dirty» - если вы не заботитесь о проверке - будет

crontab -l | sed '$a@reboot /path/to/command' | crontab -

, предполагая, что GNU sed, что позволяет a ppend текст на одной строке.

right

0
ответ дан 24 July 2018 в 19:56

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

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