ps를 사용하여 포그라운드 프로세스 보기

ps를 사용하여 포그라운드 프로세스 보기

ps를 사용하여 백그라운드 프로세스를 볼 수 있습니다. 하지만 포그라운드 프로세스를 볼 수 있는 방법이 있습니까? 예를 들어,

$nohup 프로세스1 &

그 다음에

ps -ef | grep "프로세스1"

실행 중인 프로세스 "process1"이 표시됩니다. 그러나 위 명령은 다음과 같이 실행되는 포그라운드 프로세스를 표시하지 않습니다.

$프로세스2

답변1

ps기본적으로 호출된 동일한 터미널에 있는 프로세스 ps(예: 동일한 터미널 창에서 시작된 프로세스) 를 표시 하므로 혼란스러울 수 있습니다.

ps -u $LOGNAME터미널 이름을 알고 있다면 시도해보세요 ps -t $THETTYNAME1,$THETTYNAME2. (터미널 이름은 일반적으로 "ttyN" 또는 "pts/N"과 같습니다).

답변2

이상하게도 ps 명령을 사용하면 포그라운드와 백그라운드 모두에서 모든 활성 프로세스의 상태를 모니터링할 수 있습니다.

예를 들어 첫 번째 셸에서 다음 프로세스를 시작합니다.

$ startNetworkServer 
Security manager installed using the Basic server security policy.
Apache Derby Network Server - 10.3.2.1 - (599110) started and ready to accept connections on port 1527 at 2010-06-18 14:14:33.277 GMT 

그리고 다른 쉘에서는:

$ ps aux  | grep NetworkServer | grep -v grep
pascal    5928  0.3  1.4 661492 29216 pts/0    Sl+  16:14   0:03 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start

프로세스가 예상대로 나열됩니다(그리고 +포그라운드 프로세스 그룹에 있음이 표시됩니다).

답변3

질문:

"포그라운드 프로세스를 볼 수 있는 방법이 있나요?"그런 다음 질문은 ps -ef포그라운드에서 실행 중인 프로세스를 표시하지 않는다는 주장으로 이어집니다.

답변:

, 방법이 있습니다. 또한:ps -ef 하다포그라운드에서 실행 중인 프로세스 표시 -하지만 그것은 보여주지 않습니다상태프로세스의. 이는 문서( man ps)에 설명되어 있으며, 간단한 실험을 통해 확인할 수 있습니다. 다음 예를 고려하십시오.

한 터미널에서 다음을 실행합니다.

ping 8.8.8.8 > /dev/null

다른 터미널에서:

ps -ef | grep ping | grep -v grep
seamus        1161   974  0 23:20 pts/1    00:00:00 ping 8.8.8.8

ps -ef제공하지 않는다는 점 참고하세요상태출력에 정보가 포함됩니다. 그러나 man ps다음과 같이 설명한다.상태정보사용할 수 있습니다-o키워드와 함께 올 때 인수 사용 stat:

ps -eo pid,stat,command | grep ping | grep -v grep
 1161 S+   ping 8.8.8.8

이는 우리에게 다음을 알려줍니다.

  • 프로세스 PID는 1161키워드를 통해 이루어집니다.pid
  • 과정상태S+키워드를 통해 이루어짐stat
  • 키워드 는 프로세스를 생성했음을 command보여줍니다.ping 8.8.8.8

그만큼상태의 값 S+디코딩된man ps이라는 제목 아래 에 있습니다 PROCESS STATE CODE. 이는 우리에게 다음을 알려줍니다.

S 인터럽트 가능한 절전(이벤트가 완료되기를 기다리는 중)
+ 포그라운드 프로세스 그룹에 있음

QED

우리는 PID ps -ef가 인 프로세스를 나열하는 것을 보았습니다 1161.ps -eo pid,stat,command상태PID 1161전경프로세스.


참고 1: 키워드인수 에 대한 내용은 제목 아래 -o에 설명되어 있습니다 . 여기서는 키워드가 두 문자 프로세스를 생성한다고 설명합니다.man psSTANDARD FORMAT SPECIFIERSstat상태, 키워드는 state한 문자만 생성 하지만상태.

노트 2:이는 Debian 기반 시스템(버전으로 보고됨 ps from procps-ng 3.3.15)과 macOS 10.15(BSD 버전의 후속 버전 ps)에서 작동합니다.

관련 정보