2017-01-16 9 views
-3

返される値が必要です。 それは何でもかまいません。空でない出力を返す:grep httpd | | 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配列は、何かと動作することを期待しています。

私は何かを何かの代わりに何かを返すことができますか?

巨大な複雑さに頼ることなく。

でも、次のようなシナリオでも大丈夫です。

は単に、おそらくそれは、コンピュータのためのストレスの少ないだろう。..かかわらず、出力が何であるかを

を出力するchracterを追加またはprepanding?

出力が何であれ、単に「0」を付加します。それは何も(空)

+0

grep。 ||エコー "一致しない"。 – Cyrus

+0

'etime'をしたいときに最初に' comm'を出力するのはなぜですか? – hek2mgl

+0

さて、あなたがしたいのは、(1)httpのpidファイルをピックアップしてそこからPIDを取得し、(2)PIDがまだ動作しているかどうかをチェックし、そうであれば(3)psを実行するシェルスクリプトを書くことです-o etime = -p PID || echo '00:00'' – hek2mgl

答えて

0

されていない場合でも、これがpgrepのための仕事です:

pgrep httpd 

プロセスは終了ステータス($?)を実行している場合はSTDOUTにSTATとともに、0になります。プロセスが実行されていない場合、終了ステータスは1になります。

あなたがしたい場合は、コマンドライン全体の一致:

pgrep -f httpd 

あなたがSTDOUT必要がない場合:

pgrep -f httpd >/dev/null 

はあなたがSTDOUTに何かをしたい場合は、プロセスが実行されていない場合、失敗したケースの短絡評価を行います。

pgrep httpd || echo NO 

これは、プロセスが実行されていないときにSTDOUTにNOを出力します。

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。私の以前の答えは間違っています。あんまり。パイプ付きの場合は非常に難しい(ツリーの場合でも)。 –

0

私はpgrepコマンドがより良い選択であることを@heemaylに同意します。しかし、これは役に立ちます:

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

私は 'printf'に関してあなたのコメントを理解できません。 –

関連する問題