正確なコマンドでプロセスを見つける方法は?

正確なコマンドでプロセスを見つける方法は?

私のプロセスのリストは次のとおりです。

$ ps
PID   USER     TIME  COMMAND
    1 root      0:00 bash -c cp -R /docker /var/lib; echo Loading...; wrapdocker
    7 root      0:00 bash --login
  312 root      0:00 dockerd
  321 root      0:00 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
  488 root      0:00 ps

プロセスがdockerd実行中であることを確認したいと思います。
実行すると、ps | grep dockerd2つのプロセスが印刷されます。

$ ps | grep 'dockerd'
  312 root      0:00 dockerd
  492 root      0:00 grep dockerd  

特定のコマンドラインで検索する必要がありますが、そうではdockerdありませんgrep dockerd

dockerd実行中であることを確認するには、シェルスクリプトの一部として必要です。

答え1

pgrep process代わりに使用する必要がありますps aux | grep process

現在gnome-terminal実行中なので

ps aux | grep gnome-terminal
user    2045  0.9  0.9 459456 36084 ?        Ssl  17:33   0:00 
/usr/lib/gnome-terminal/gnome-terminal-server
user    2206  0.0  0.0  12780   996 pts/0    S+   17:33   0:00 grep 
gnome-terminal

しかし、

pgrep gnome-terminal
2045

現在chomeが実行されていないので

ps aux | grep chrome
user    2212  0.0  0.0  12780   976 pts/0    S+   17:34   0:00 grep chrome

しかし、pgrep chrome何も返されません。

あなたの場合はpgrep dockerd動作します。

答え2

#!/bin/bash

ps -ef | grep -q "[d]ockerd"
if [ "$?" -eq "0" ]
then
      echo "dockerd is running"
else
      echo "dockerd is not running"
fi

関連情報