"ps" 또는 "ps -ef" 명령 출력에서 ​​프로세스가 백그라운드 또는 포그라운드로 실행 중인지 어떻게 알 수 있나요?

"ps" 또는 "ps -ef" 명령 출력에서 ​​프로세스가 백그라운드 또는 포그라운드로 실행 중인지 어떻게 알 수 있나요?

ps명령 또는 에서 프로세스가 백그라운드 또는 포그라운드로 실행 중인지 어떻게 알 수 있나요 ps -ef?

처음에 를 입력하면 ps -efTTY라는 섹션이 있는 줄 알았습니다. TTY 목록을 찾아보면 대부분이 ?. 그 물음표가 백그라운드에서 실행 중인 프로세스를 의미하는지 궁금합니다.

내 말이 맞는지 확인하고 싶어요! 그렇지 않다면 프로세스가 백그라운드에서 실행되고 있는지 포그라운드에서 실행되고 있는지 어떻게 알 수 있는지 알고 싶습니다.

추신. 여기서는 명령이 jobs사용되지 않습니다.

답변1

필드stat+포그라운드 프로세스에 대한 추가 기능이 있습니다.:

ps -e -o pid,tty,stat,cmd

포그라운드 프로세스는 프로세스 그룹 ID( pgid)가 터미널( tpgid)의 포그라운드 프로세스인 프로세스입니다.

ps -e -o pid,pgid,tpgid,tty,cmd | awk '$2==$3'

TTY 목록을 보면 대부분 '?' (물음표) 저 물음표가 백그라운드에서 실행 중인 프로세스를 의미하는지 궁금합니다.

아니요, 이는 제어 tty(데몬 또는 커널 스레드, 전경이나 배경 모두 아님)가 없음을 의미합니다. 목록의 경우배경프로세스:

ps -e -o pid,pgid,tpgid,tty,cmd | awk '$3!=-1 && $2!=$3'

답변2

OP는 "... 프로세스가 백그라운드에서 실행되고 있는지 포그라운드에서 실행되고 있는지 어떻게 알 수 있나요?"라고 물었습니다.

전경 및 배경 상태프로세스ps다음과 같이 보고됩니다.상태프로세스의. man ps이것들을 나열한다프로세스 상태이라는 제목 아래에 PROCESS STATE CODE.

ps -ef프로세스 상태를 보고하지 않지만 섹션을 참조하면 인수가 하나 이상의 출력을 지정하는 데 사용될 수 있음 을 man ps알 수 있습니다.OUTPUT FORMAT CONTROL-ops키워드. 이것들키워드섹션 에 나열되어 STANDARD FORMAT SPECIFIERS있으며 특별한 끈기를 가지고 결국에는 s, statstate키워드가 나열되어 있음을 발견하게 될 것입니다. 하지만 이 세 가지 모두키워드제공 할것이다상태출력에서는stat 예어줄 것이다 multi-character process state! 요점:ps부지런한 사용자를 선호합니다.

예를 들어, 다음 ps명령은 다음을 출력합니다.PID,상태, 그리고명령이는 다음을 사용하여 프로세스를 시작했습니다.키워드 pid, stat그리고 command:

ps -eo pid,stat,command

이것이 어떻게 작동하는지 보려면 다음 예를 고려하십시오.

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

ping 8.8.8.8 > /dev/null

다른 터미널에서:

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

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

  • PID는12518
  • 과정상태is S+(키워드를 통해 stat)
  • command프로세스를 생성한 것은ping 8.8.8.8

이 프로세스가 전경인지 배경인지 알아보려면 한 가지 단계가 더 필요합니다.상태값은 다음과 S+같아야 합니다.디코딩된man ps- 라는 제목 아래 에 PROCESS STATE CODE다음과 같은 내용이 나와 있습니다.

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

결과적으로, 우리는 +이 프로세스가 두 번째 문자 위치에서 실행되고 있음을 알 수 있습니다.전경. 백그라운드 프로세스는 첫 번째 문자 위치에 나열되고 S두 번째 위치에는 아무 것도 나열되지 않을 수 있습니다. 백그라운드 프로세스를 나타내는 몇 가지 다른 문자 조합이 있습니다. 보다이것목록을 위해.


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

관련 정보