저는 Ubuntu Server 10.10을 사용하고 있으며 어떤 프로세스가 실행되고 있는지 확인하고 싶습니다. PostgreSQL이 내 컴퓨터에서 실행되고 있다는 것을 알고 있지만 top
또는 명령을 사용하여 볼 수 없으므로 ps
실행 중인 프로세스가 모두 표시되지 않는 것으로 가정합니다. 실행 중인 모든 프로세스를 표시할 수 있는 다른 명령이 있습니까? 아니면 이 명령 top
이나 ps
이 목적으로 사용할 수 있는 다른 매개 변수가 있습니까 ?
답변1
ps
매뉴얼 페이지 에서 :
-e는 모든 프로세스를 선택합니다. -A와 동일합니다.
따라서 ps -e
모든 프로세스가 표시됩니다. "모든 것을 나에게 주세요"에 대한 일반적인 옵션은 ps -ely
또는 이며 ps aux
, 후자는 BSD 스타일입니다. 일반적으로 grep
xenoterracide의 답변과 같이 이 출력을 검색 프로세스 로 파이프합니다 . grep
출력에서 자신을 보지 않으려면 다음과 같은 내용이 자주 표시됩니다.
ps -ef | grep [f]oo
여기서 foo는 찾고 있는 프로세스 이름입니다.
그러나 특정 프로세스를 찾고 있다면 pgrep
가능하다면 이 명령을 사용하는 것이 좋습니다. 나는 그것이 우분투 서버에서 작동한다고 믿습니다. 이를 사용하면 pgrep
위에서 언급한 경쟁 조건을 피할 수 있습니다. 또한 grep
복제하기 위해 점점 더 정교한 트릭이 필요한 여러 가지 다른 기능도 제공합니다 . 구문은 간단합니다.
pgrep foo
foo는 당신이 찾고 있는 프로세스입니다. 기본적으로 프로세스가 발견되면 프로세스의 프로세스 ID(PID)만 인쇄됩니다. 추가 출력 옵션을 참조하세요 man pgrep
. 다음 페이지가 매우 유용하다고 생각합니다.
답변2
시도해 보셨나요 ps aux | grep postgres
? postgres가 실행 중이라면 실제로 표시되어야 합니다. 그렇지 않다면... postgres가 실행 중인지 어떻게 알 수 있나요?
(참고: 이는 일반적인 오해이지만 ps -aux
잘못된 것입니다.)
답변3
답변에는 출력의 효율적인 필터링과 자동화된 bash
기능이 포함됩니다.
ps -elf | head -n 1; ps -elf | grep -i search_term | grep -v grep | grep -v "ps -elf"
0개 이상의 프로세스를 찾으려면 위의 search_term
검색어를 검색하려는 용어로 바꾸세요(예: ) term
.
사용 예:
ps -elf | head -n 1; ps -elf | grep -i term | grep -v grep | grep -v "ps -elf"
산출:
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 S user 14919 1394 0 80 0 - 217553 poll_s 04:14 ? 00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server
오토메이션
홈 디렉터리의 루트에 .bash_aliases 파일이 아직 없는 경우 다음을 입력합니다.
touch .bash_aliases
다음으로, .bash_aliases 파일 끝에 명령을 실행하는 함수를 추가합니다.
echo 'pself() { ps -elf | head -n 1; ps -elf | grep -i "$1" | grep -v grep | grep -v "ps -elf"; }' >> .bash_aliases
사용 예(먼저 새 터미널 창을 엽니다):
pself term
산출:
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 S user 14919 1394 0 80 0 - 217553 poll_s 04:14 ? 00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server
(위 내용은 Ubuntu 18.04에서 테스트되었습니다.)
이 기사에서는 모든 내용을 자세히 설명합니다.여기