#sh #ubuntu-18.04
Вопрос:
Я использую ubuntu 18.04 LTS, и у меня есть две небольшие ситуации
- Я хочу написать сценарий, который проверит, не запущена ли служба elasticsearch, тогда этот сценарий также остановит службу tomcat.
- Также я хочу запускать скрипт каждые 5 секунд.
Я могу выполнить 2-ю задачу с помощью crontab, но вот небольшой поворот: я хочу удерживать сценарий crontab в течение 30 секунд, когда система загружается/перезагружается(потому что для запуска службы elasticsearch требуется немного времени).
Я думаю, что я не могу использовать здесь режим сна, потому что тогда он будет каждый раз задерживать выполнение на 30 секунд.
Для 1 — го задания сценарий, который я сейчас использую, таков:
#!/bin/sh
command = $(/bin/ps -ef|/bin/grep -c /var/run/elasticsearch/elasticsearch.pid)
if [ ${command} == 1 ];
then
service tomcat stop
fi
Это ошибка, которую я получаю.
./myscript.sh: 2: ./myscript.sh: =: not found
./myscript.sh: 3: [: ==: unexpected operator
ОБНОВЛЕНИЕ-1:
Мой первый сценарий запущен, но не работает должным образом, это означает, что он останавливает службу tomcat, даже если служба elasticsearch работает, но я хочу написать сценарий, который остановит службу tomcat, только если служба elasticsearch не запущена.
Я уверен, что это какая-то логическая ошибка.
#!/bin/sh
command=$(/bin/ps -ef|/bin/grep -c /var/run/elasticsearch/elasticsearch.pid)
echo $command
if [$command=1];
then
echo "ok"
fi
Получение ошибки:
./myscript.sh: 4: ./myscript.sh: [2=1]: not found
ОБНОВЛЕНИЕ-2: Я изменил свое утверждение if, и оно сработало
if [ "$command" = 1 ];
Теперь кто-нибудь знает, как решить 2-ю ситуацию.
Комментарии:
1. Вокруг ни одного свободного места
=
.2.
[
у него нет==
оператора. Ты, наверное, хочешь=
.3. Обратите внимание, что в вашем сообщении говорится
sh
, что вы пометили вопрос Bash. Они (не совсем) одинаковы.4. (На самом деле нет никакой причины использовать переменную и
grep -c
;if ps -ef | grep -q ...
было бы достаточно.)5. Шеллчек -твой друг.