今日の雑記

生きることでいっぱいいっぱい

プロセスをプロセス名でチェックする

はまったのでメモ。
例えば以下のようなプロセスがあったとする。


$ ps | grep ssh
1468 1 1468 1468 ? 1000 21:43:57 /usr/sbin/sshd
Cygwinssh-host-config を実行すると、まず ssh が起動してるかどうかをチェックするのだが、そん時は以下のようなスクリプトを実行する。

if ps -ef | grep -v grep | grep -q ssh
then


上のコマンドをターミナルで実行した結果はこんな感じだ。

$ ps -ef | grep -v grep | grep ssh
isshiki1 1108 1 con 21:42:42 /usr/bin/bash
isshiki1 1264 1108 con 21:48:17 /usr/bin/ps
isshiki1 1468 1108 con 21:48:17 /usr/bin/bash
と、全部出てきてしまう。 ssh は実行して無いのに、だ。
犯人はコイツ。「[]」で括った部分だ。

i[ssh]iki1 1108 1 con 21:42:42 /usr/bin/bash
ユーザー ID が悪さしてたのねん...。きづかねーよこんなの。
スクリプトを以下のように書き換えて解決したが。

# if ps -ef | grep -v grep | grep -q ssh
if ps -ef | grep -v grep | grep -q '/ssh'
まあ、これで通ったからよしとする。