Crontab Запускающий скрипта при запуске

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

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

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

2 ответа

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

Поэтому просто перенаправляют Вашу желаемую строку в этот файл:

echo "@reboot /path/to/file.sh" | sudo tee -a /var/spool/cron/crontabs/$USER
  • использование tee -a мы говорим tee добавлять @reboot /path/to/file.sh в конце этого файла вместо того, чтобы перезаписать его.
  • , если это не там это, будет создан.
1
ответ дан 7 December 2019 в 13:32

Вероятно, право способ сделать это - как объяснено в , Как программно добавить, новый crontab файл, не заменяя предыдущий один - должен вывести существующий crontab во временный файл, изменить его, затем читать, это въезжает задним ходом. Например:

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 текст на одной строке.

<час>

Примечание: в отличие от записи в /var/spool/cron/crontabs непосредственно, для этого подхода не нужно sudo (потому что crontab setuid).

1
ответ дан 7 December 2019 в 13:32

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

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