LINUX.ORG.RU

Как проверить запущен ли процесс в условии?

 


0

3

Я знаю, что тема избитая, но у меня все равно не получается.
Мне необходимо следующее: если процесс запущен, то выполнить echo. Пытаюсь сделать так:

if [ -n `pgrep processname` ]; then 
	echo "..."
fi
Но оно выводит текст в любом случае, независимо от статуса процесса. ЧЯДНТ?


pgrep processname > /dev/null && echo "..."
kostik87 ★★★★★
()

Но оно выводит текст в любом случае, независимо от статуса процесса. ЧЯДНТ?

Потому что ты не ловишь «printf», а ловишь значение return

snaf ★★★★★
()

Фиг знает, что там за механика, но

ЧЯДНТ?

Возьми в кавычки:

if [ -n "`pgrep processname`" ]; then

или используй [[:

if [[ -n `pgrep processname` ]]; then
anonymous
()
Ответ на: комментарий от snaf

4.2.

Ошибочность этого утверждения легко проверить, подставив вместо pgrep true, а потом false.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.