Назад | Перейти на главную страницу

su на Perl скрипт не работает из crontab

У меня есть сценарий Perl, работающий нормально. на машинах unix и вручную от пользователя root, но не из crontab на машине linux:

проблемная команда: su - $ user

system("su - togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");

команда на crontab:

23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log

пожалуйста, порекомендуйте.

Первое, что нужно сделать, это захватить stderr из вашего скрипта.

23 59 .../tc-rotate.pl 2>/tmp/script.log >/home/...

а затем проверьте журнал на наличие сообщений об ошибках

РЕДАКТИРОВАТЬ: Отвечая на комментарий:

Записи в crontab имеют довольно ограниченную среду, поэтому перечисленные вами переменные среды недоступны, хотя вы можете установить их в своем crontab файл например

APACHE_HOME=/some/path
CATALINA_HOME=/some/other/path
RUN_ENV=someValue
23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log 

Если переменные заданы в рамках вашего Perl-скрипта, попробуйте su -m

-m, --preserve-environment не сбрасывать переменные среды

Ваша команда может быть:

system("su -m togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");