Задача запускается вручную, работает из cron я получаю сигфолт - PullRequest
1 голос
/ 05 ноября 2008

Я унаследовал чужое чудовище от BASH-скрипта. Сценарий был написан таким образом, что он использует смешной объем памяти (около 1 ГБ). Я могу запустить его из оболочки без проблем, но если я запускаю его из cron, то вылетает с ошибкой sig.

Помимо поиска плохо прокомментированного бегемота, есть ли способ запустить его из cron, не сталкиваясь с ошибкой sig?

Приветствия

Steve

Ответы [ 3 ]

1 голос
/ 05 ноября 2008

Ожидается ли подключение к tty или открытый порт? Попробуйте перенаправить файл чего-нибудь случайного на него, как inout, когда он запускается из cron?

Какие сегфолты? Баш, или как он это называет?

Есть ли какие-либо подсказки из основного файла о том, в чем проблема?

1 голос
/ 05 ноября 2008

Когда вы запускаете что-то с помощью cron, вы сталкиваетесь с проблемами, когда переменные окружения отличаются или просто не устанавливаются по сравнению с вашими собственными переменными при выполнении вручную. Часто такие вещи, как PATH, не устанавливаются должным образом, когда cron выполняет что-то, поэтому важно указывать полные пути к исполняемым файлам в сценарии, даже для таких вещей, как perl или общие команды, которые вы, как вы думаете, должны найти в ПУТЬ по умолчанию. Без дополнительной информации трудно предположить, в чем именно заключается проблема.

0 голосов
/ 05 ноября 2008

попробуйте убедиться, что stdout и stderr есть куда идти

/path/to/bigscript.sh &> /dev/null

[Edit] вы можете использовать файл, отличный от / dev / null, особенно если вы запускаете его в режиме отладки;)

Будучи таким огромным, я бы не стал, если бы отладка помогла, но вы можете попробовать. В bash это опция '-x', которую вы можете просто вставить в shebang.

И, как сказано в других ответах, есть большая вероятность, что это может быть переменная окружения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...