Проблемы, добирающиеся crontab для работы.

Эй парни, я действительно плохо знаком с 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), это появляется правильно, поскольку я спросил это к. Однако сценарий никогда не работает.

Вы у парней есть какие-либо общие советы относительно того, что могло быть неправильным? Я могу обеспечить больше информации в случае необходимости.Заранее спасибо!

0
задан 22 March 2018 в 09:10

2 ответа

Как Вы знаете, что это никогда не работает? Это не собирается отзываться эхом к Вашему терминалу. Сначала отбросьте sudo..., который никогда не должен быть в cronjob. crontab для корневых выполнений как корень, crontab для пользователя работает как пользователь, поместите свой сценарий соответственно.

Передайте свой вывод по каналу в файл как так

echo "I work" > /path/to/some/file.txt

или

* * * * * /home/lskidson/tests/script.sh > /path/to/some/file.txt

Используйте> для перезаписи файла,>> для добавления к нему.

1
ответ дан 30 October 2019 в 05:11

Ели с хижиной #!/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

Ссылки:

2
ответ дан 30 October 2019 в 05:11

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

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