Эй парни, я действительно плохо знаком с Linux и все еще изучением так, надо надеяться, это будет легким для Вас парни.
Я пытаюсь узнать больше, как использовать крон для планирования событий на мою машину человечности. Прямо сейчас у меня есть сценарий (script.sh), который является следующие:
#!/bin/bash
echo "I work"
Я вхожу в терминал как в корень (sudo-i), и вхожу:
sudo bash /home/lskidson/tests/script.sh
Это правильно выполняет сценарий, когда я делаю это. (Все еще вошел в систему как корень), у меня есть crontab, настроенный для выполнения этого сценария каждую минуту, что я не могу взяться за работу его, следующим образом (я установил его использующий crontab-e),
* * * * * sudo bash /home/lskidson/tests/script.sh
Я пишу это в файл затем, когда я печатаю список задания (crontab-l), это появляется правильно, поскольку я спросил это к. Однако сценарий никогда не работает.
Вы у парней есть какие-либо общие советы относительно того, что могло быть неправильным? Я могу обеспечить больше информации в случае необходимости.Заранее спасибо!
Как Вы знаете, что это никогда не работает? Это не собирается отзываться эхом к Вашему терминалу. Сначала отбросьте sudo..., который никогда не должен быть в cronjob. crontab для корневых выполнений как корень, crontab для пользователя работает как пользователь, поместите свой сценарий соответственно.
Передайте свой вывод по каналу в файл как так
echo "I work" > /path/to/some/file.txt
или
* * * * * /home/lskidson/tests/script.sh > /path/to/some/file.txt
Используйте> для перезаписи файла,>> для добавления к нему.
Ели с хижиной #!/bin/bash
Вы уже определили, это - сценарий Bash. Следующий шаг должен создать исполняемый файл файла для выполнения его без команды bash
в от него:
chmod +x /home/lskidson/tests/script.sh
В целом команда sudo
не применимо в crontab
. Если необходимо выполнить Cronjob корнем, можно использовать crontab корня, который может быть достигнут командой sudo crontab -e
.
Теперь мы можем перейти к вопросу Crontab. Где Вы ожидаете получать сообщение, "Я работаю"? Существует немного случаев.
1. Если исполняемый файл генерирует выходной файл или просто изменяет некоторые вещи, задание Крона должно быть:
* * * * * /home/lskidson/tests/script.sh
2. Если программа не пишет выходного файла и просто генерирует некоторые данные в stdout (как это находится в Вашем случае), необходимо перенаправить его в файл для наблюдения его в соответствующее место (эта часть 2>&1
перенаправления и сообщения об ошибках к stdout):
* * * * * /home/lskidson/tests/script.sh >> /home/lskidson/tests/script.sh.log 2>&1
3. В то время как stdout не перенаправляется, Крон будет, отправляя местные почты пользователю (если Ваша местная почта будет установкой правильно), если это не переопределяется путем установки переменной MAILTO
в crontab
:
MAILTO="my@custom.mail"
* * * * * /home/lskidson/tests/script.sh
Ссылки: