Как выглядит ваша запись crontab для этого?
Кроме того, проблема с этим сценарием может быть, что вы не указываете bash
в качестве переводчика:
jettyPid=`pgrep -f solr`
if [ "$jettyPid" == "" ]
then
/etc/init.d/jetty start &
fi
Попробуйте добавить #!/bin/bash
в качестве первой строки в файле так:
#!/bin/bash
jettyPid=`pgrep -f solr`
if [ "$jettyPid" == "" ]; then
/etc/init.d/jetty start &
fi
Если вы не укажете bash
, задание cron будет использовать стандартную системную оболочку. Также обратите внимание, что я добавил ;
и переместил then
до линии if
. Этот вид синтаксиса более стандартен по отношению к тому, как обрабатываются сценарии bash
.
Прошлое ни одного из них, если для установки Jetty необходимы любые библиотеки, которые являются частью вашего личного $PATH
, но не являются частью общенационального $PATH
, это не удастся. Ответ chamzzey
является правильным, но если какой-либо из путей изменится, это снова сломается. Лучше всего в долгосрочной перспективе заглянуть в код Jetty & установить явные пути к библиотекам или необходимые инструменты, если это возможно.
Отлично: D работал. Большое спасибо – elf