Я хочу запустить скрипт каждый день в определенный час, таким образом, я видел, что мог использовать cron
для этого.
После учебного руководства я отредактировал crontab
файл как это: crontab -e
и добавил:
26 13 * * * ./home/user/backup.sh && echo "Backup done: $(date +"%Y%m%d%H%M%S")" >> /home/user/log.txt
13:26 было 2 минуты назад, однако в/home/user нет никакого log.txt
Что не так?
Если Вы работаете в терминале:
./home/user/backup.sh
Вы получите, вероятно, ошибку как:
bash: ./home/user/backup.sh: No such file or directory
Это, потому что в этом случае не корректно для использования этого .
(точка) перед путем к scipt (/home/user/backup.sh
). Также убедитесь это backup.sh
исполняемый файл путем выполнения:
chmod +x /home/user/backup.sh
И также, быть уверенным, что Вы chage user
с Вашим именем пользователя везде.
И наконец, быть уверенным, что статус выхода /home/user/backup.sh
сценарий 0. Если статус выхода отличается 0, вторая команда (echo "Backup done: $(date +"\%Y\%m\%d\%H\%M\%S")"
- где необходимо выйти из всех %
символы), никогда не будет выполняться из-за &&
оператор.
Как я сказал, необходимо выйти из всех %
(процент) в crontab записи, потому что это имеет особое значение в этом случае:
Знаки процента (
%
) в команде, если не оставлено с обратной косой чертой (\
), изменяются в символы новой строки и все данные после того, как первый % будет отправлен в команду как стандартный вход.Источник: крон