私のプロセスのリストは次のとおりです。
$ 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 dockerd
2つのプロセスが印刷されます。
$ 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