Интересно, кто-нибудь имел представление, почему возникает следующая проблема, или имел какие-нибудь советы, где искать… Я могу запустить скрипт оболочки вручную в ssh, но если я настрою его для запуска в crontab, я получу проблемы ниже.
Сервер: FreeBSD 8, и у меня есть доступ ко всем корневым разрешениям
У меня есть сценарий оболочки (Bourne), который запускается с правами «root» с использованием crontab со следующей командой:
* * * * * /data/backups/scripts/server_log_check.sh > /data/backups/logs/cron_logs/server_log_check.sh_cron.log
Сценарий «server_log_check.sh» проверяет, запущен ли «сервер отчетов» с помощью этой команды:
if ps -xauww | grep -v grep | grep java | grep www > /dev/null
then
#“reports are running, no need to try to restart it”
Else
/usr/local/etc/rc.d/tomcat55 start #start report server because it is not running
Fi
Проблема возникает в этой строке: «/usr/local/etc/rc.d/tomcat55 start
», когда скрипт запускается с помощью crontab, но если я запускаю скрипт вручную через ssh, эта строка кода запускается без проблем, но весь остальной код в скрипте исполняется нормально, только не эта строка. Кроме того, если я вставлю эту строку /usr/local/etc/rc.d/tomcat55 start
в командную строку ssh, она тоже будет работать нормально.
Я изменил владельца «server_log_check.sh» на «root», но это ничего не изменило, и владельцем сценария «tomcat55» является «www». Запись в crontab выполняется под профилем «Root», поэтому я предположил, что нет проблем с запуском файла, владельцем которого является разрешение арендодателя, например, «www» имеет
У вас есть идеи, почему cron делает это?
Заранее спасибо