ps aux | grep firefox
"firefox"라는 문자열이 포함된 모든 프로세스를 나열합니다.
ps aux | grep -v firefox
"firefox" 문자열이 없는 모든 프로세스를 나열합니다.
ps aux | grep -v grep | grep firefox
?
두 번째 grep은 무엇을 합니까? grep 자체는 명령인데 왜 다른 grep을 grep해야 합니까?
답변1
다음과 같은 명령을 실행할 때
ps aux | grep firefox
그런 다음 grep
프로세스그 자체찾고 있는 단어가 이미 존재하기 때문에 출력에 나타날 수 있습니다. 예를 들어 내 컴퓨터에서 실행 chrome
하면 비슷한 결과가 나타납니다.
% ps aux | grep chrome
sweh 3384 0.0 0.0 11128 1024 pts/1 S+ 07:08 0:00 grep chrome
sweh 23698 0.0 0.0 6384 620 ? S Jul04 0:00 /usr/lib/chromi
grep
우리는 프로세스 3384가 명령이고 일치한다는 것을 알 수 있습니다.크롬 합금나타나다.
이를 피하기 위해 어떤 사람들은 두 번째 줄을 추가하여 | grep -v grep
줄을 제거합니다.
하나 있다속이다하지만...
ps aux | grep '[f]irefox'
grep '[f]irefox'
정확히 같은 줄과 일치 grep firefox
하지만 이제 grep
단어가 실제로 명령에 나타나지 않기 때문에 명령 자체가 일치하지 않습니다.
답변2
이 ps
명령은 현재 실행 중인 모든 프로세스를 출력합니다. 첫 번째는 목록에서 grep
프로세스를 제거 합니다. grep
두 번째는 firefox
필터링된 목록의 모든 프로세스를 추출합니다.
이는 firefox
프로세스의 프로세스 ID(PID)를 가져오려는 시도의 일부일 수 있으며, 실행 중인지 확인하거나 종료하기 위한 것일 수도 있습니다.
이 경우 pgrep
(또는 pkill
프로세스를 종료하려면 )를 사용하는 것이 좋습니다.
if pgrep firefox 2>/dev/null; then
echo "firefox is already running"
else
echo "starting firefox..."
firefox &
done
종료 firefox
:
pkill firefox
그건,아니요먼저 PID를 찾기 위해 먼 길을 가야 합니다.
pgrep
pkill
시스템 설명서 도 참조하십시오 .
답변3
분석하다ps aux | grep -v grep | grep firefox
ps aux
프로세스의 출력을 제공합니다. 첫 번째 grep( )은 grep -v grep
해당 단어가 포함된 모든 줄을 제거합니다. 그 후, 출력은 다시 grep()되어 단어를 찾고 출력됩니다.ps aux
grep
grep firefox
firefox