2015-09-10 1 views
1

У меня есть сценарий, который я пытаюсь отлаживать.«set -x» в bash и ksh не производит вывод для задания cron

Скрипт отлично работает из командной строки, но при вызове с теми же аргументами в cron он дает ошибку, связанную с конкретным приложением, о невозможности передачи файлов.

Чтобы отладить проблему, я добавил set -x во вторую строку сценария. Теперь, когда я запускаю его из командной строки, я получаю много подробного вывода отладки.

Из cron я получаю исходную ошибку, зависящую от приложения, без вывода отладочной информации.

Я попытался изменить линию shebang от #!/bin/ksh до #!/bin/ksh -x, и я даже попытался запустить работу cron с /bin/ksh -x /usr/local/bin/theapp.

У меня нет отладочного вывода.

Я также попытался перенаправить STDERR, добавив 2>&1 к моему заданию cron.

Не хватает ли какой-либо cron-магии для получения отладочного вывода?

UPDATE: @barmar правильно, я отправил свою хрон строку:

*/5 * * * * /bin/bash -x /usr/local/bin/myapp 2>&1

+1

Как это связано с 'bash'? Вы также пытались изменить его из скрипта 'ksh' в скрипт' bash'? – Barmar

+0

Bash и ksh очень похожи. Я написал простой скрипт bash, который будет эхом «hello» и попытался запустить его с -x. Из командной строки это работает, от cron вы не получаете отладочного вывода. –

+3

Вы проверили свой адрес электронной почты? Любой выход, не перенаправленный, будет отправлен вам по почте. – Barmar

ответ

1

хрон линия:

*/5 * * * * /bin/bash -x /usr/local/bin/myapp 2>&1

не производит никакого вывода отладки, даже если у меня есть STDERR перенаправлен на STDOUT.

я, наконец, сдался и сделал:

*/5 * * * * /bin/bash -x /usr/local/bin/myapp >> /tmp/cron.log 2>&1

И выход показывает в журнале.

Мех.

Смежные вопросы