Я пытаюсь написать сценарий, который перезапускает tomcat, но не могу понять, в чем моя проблема.
если я выполню следующую команду в командной строке, она будет работать нормально:
/usr/local/etc/rc.d/tomcat7 start
Однако внутри скрипта myshell.sh я попытался выполнить ту же команду с обратными кавычками и без них:
rc=`/usr/local/etc/rc.d/tomcat7 start`
rc=/usr/local/etc/rc.d/tomcat7 start
rc=$(/usr/local/etc/rc.d/tomcat7 start)
но ничего не происходит, и я не получаю никаких сообщений об ошибках.
Что он может запускать из командной строки, но не внутри моего сценария оболочки?
Заранее спасибо.
Поскольку вы сказали, что столкнулись с этой проблемой при запуске скрипта через cron, вот пара идей.
99% проблем, возникающих при запуске скриптов через cron, связаны с $PATH
. Путь, используемый cron, очень минимален. Вы указываете полный путь к сценарию инициализации, поэтому я не ожидал, что это будет проблемой. Ваш скрипт больше ничего не делает?
Кроме того, в вашем скрипте, если вы используете bash, вы можете изменить первую строку (shebang) и добавить вторую строку следующим образом
#!/bin/bash -x
exec &>/tmp/script.log
Это включит отладку при запуске скрипта cron. Он также будет записывать весь вывод сценария в /tmp/script.log. Как только вы решите проблему, вы можете вернуть это обратно.
Почему вы пытаетесь присвоить это переменной?
Просто
/usr/local/etc/rc.d/tomcat7 start
в сценарии должно помочь. Если вам нужен текстовый вывод этой команды, вы можете перенаправить его в файл с >
оператор, и вы можете использовать $?
специальная переменная для проверки кода возврата команды.