정확한 명령으로 프로세스를 찾는 방법은 무엇입니까?

정확한 명령으로 프로세스를 찾는 방법은 무엇입니까?

내 프로세스 목록은 다음과 같습니다.

$ 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두 가지 프로세스가 인쇄됩니다.

$ 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

관련 정보