Я должен записать сценарий для периодического обновления системы, я создал этот сценарий тестирования, который делает это каждые 2 минуты, чтобы проверить, работает ли это, однако если я запускаю скрипт и через какое-то время проверяю/var/log каталог там нет моего .log файла. Я проверил crontab-l, и он показывает недавно добавленный cronjob. Какова может быть проблема и что я делаю неправильно?
#!/bin/bash
log_dir=$(date +'%Y%m%d')
crontab -l > mycron
#echo new cron into cron file
echo "*/2 * * * * (sudo apt-get -y update && sudo apt-get -y upgrade) >> /var/log/update-$log_dir.log 2>&1" >> mycron
#install new cron file
crontab mycron
rm mycron
Вы не должны звонить sudo
в crontab. Для выполнения команды как другого пользователя, использующего крон, отредактируйте crontab для того пользователя. В crontab корня Вы могли просто работать apt-get
команды без sudo
.
Для редактирования crontab корня используйте:
sudo crontab -e
(Я не сделал бы сценарий для добавления строки к crontab, поскольку это - одноразовое задание, которое не стоит автоматизировать его.)