2017-01-16 3 views
-3

Мне нужно какое-то значение. это может быть что угодно.Возврат Непустой Выход: grep httpd | head -1 | tail -c 9

этот код возвращает «08:10», если служба запущена.

ps -eo comm,etime | grep httpd | head -1 | tail -c 9 

но что делать, если служба не работает?

service httpd stop 

и давайте попробуем еще раз:

ps -eo comm,etime | grep httpd | head -1 | tail -c 9 

абсолютно ничего.

это проблема для меня. мой php-массив ожидает, с чем работать.

Как я могу вернуть что-то, а не ничего?

не прибегая к огромным сложностям.

Даже следующий сценарий со мной был бы в порядке.

просто добавляя или prepanding в chracter к выходу независимо от того, что выход ..

, возможно, будет меньше стресса для компьютера?

просто добавьте «0» к тому, что выводится. даже если он ничего (пусто)

+0

Попробуйте добавить '| grep. || echo "no match" '. – Cyrus

+0

Почему вы выставляете 'comm' в первую очередь, когда вам просто нужно« etime »? – hek2mgl

+0

Ну, что вы хотите сделать, это написать сценарий оболочки, который (1) подбирает pidfile http и получает из него pid, (2) проверяет, работает ли PID, и если да, (3) запускает ps -o etime = -p PID || echo '00: 00'' – hek2mgl

ответ

0

Это работа для pgrep:

pgrep httpd 

Если процесс запущен статус выхода ($?) будет 0, наряду с стат на STDOUT. Если процесс не выполняется, статус выхода будет 1.

Если вы хотите, матч для всей командной строки:

pgrep -f httpd 

Если вы не нуждаетесь в STDOUT:

pgrep -f httpd >/dev/null 

Если вы хотите что-то на STDOUT, когда процесс не работает, примите оценку короткого замыкания для неисправного случая:

pgrep httpd || echo NO 

Это приведет к выводу NO на STDOUT, когда процесс не запущен.

0

Это не может быть настолько сложным:

ret=$(ps -eo comm,etime | grep httpd | head -1 | tail -c 9) 
if [ -z "$ret" ];then 
echo "What you want" 
else 
echo "${ret}" 
fi 
+0

@Suspended. Да, вы можете написать ret = "." $ (....); echo $ {ret} –

+0

@Suspended. Мой предыдущий ответ неправильный. На самом деле, нет. A если с трубой довольно сложно (даже с деревом). –

0

Я согласен с @heemayl, что pgrep будет лучшим выбором. Однако это может помочь:

{ ps -eo comm,etime; echo "httpd not running"; } | grep -m 1 httpd | cut -d- -f2 
+0

Боюсь, я не понимаю ваш комментарий относительно 'printf'. –

 Смежные вопросы

  • Нет связанных вопросов^_^