
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 ps
STANDARD FORMAT SPECIFIERS
stat
상태, 키워드는 state
한 문자만 생성 하지만상태.
노트 2:이는 Debian 기반 시스템(버전으로 보고됨 ps from procps-ng 3.3.15
)과 macOS 10.15(BSD 버전의 후속 버전 ps
)에서 작동합니다.