Я пытаюсь выполнить свое задание крона с моим пользователем (пользователь).
Задание крона не имеет никакой проблемы при установке и работ сценария, если я просто выполняю его. Это - исполняемый файл, и я имею bash
флаг для указания на это является сценарием удара.
Я создал сценарий путем выполнения crontab -e
зарегистрированный как user
.
Для тестирования я запущу этот скрипт каждая минута, но в конечном счете изменю его на 10 минут.
мой cronjob должен запустить мой скрипт, который ping гуглит сервер каждые 10 минут и создает журнал его так, я могу знать, теряют ли мои устройства когда-нибудь интернет-соединение для отслеживания проблемы. У меня есть другой сценарий, который перемещает файл журнала каждый день и затем регистрирует его с датой, и затем этот сценарий должен создать другой файл журнала. в настоящее время это не делает файл с этим cronjob или обновляет файл, после того как я запускаю скрипт.
мой cronjob
*/1 * * * * bash /home/user/ping_scripts/ping-test.sh
мой сценарий
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
exec sudo "$0" "$@"
fi
if [ ! -e /var/log/ping.log ];then
touch /var/log/ping.log
fi
ping -q -c5 google.com > /dev/null
if [ $? -eq 0 ];then
echo -e "[$(date)] \t\t google ping successful" >> /var/log/ping.log
else
echo -e "[$(date)] \t\t google ping failed" >> /var/log/ping.log
fi
Я считал несколько других решений на, но не зафиксировал мою ошибку.
(Я наклоняюсь, описывают, как мое сообщение отличается кроме него, просто вопрос, тот, на который я не мог найти ответ при прохождении через, Почему crontab сценарии не работают? который является для уникальных ошибок к крону, и решение не было действительно уникально для крона конкретно. это имело отношение больше к моему сценарию. Для получения ответа, просто обратитесь к помеченному ответу ниже.)
Моя проблема состояла в том, что мой пользователь не был a sudoer
.
Эта проблема может быть решена путем добавления пользователя к /etc/sudoers
файл или путем добавления задания крона как root
.
sudo su
crontab -e
и размещение задания крона там
Попытайтесь дать cronjob как
* 1 * * * cd /home/user/ping_scripts/ && ./ping-test.sh
и также удостоверьтесь, что сценарий является исполняемым файлом