jobs
이 명령은 현재 셸 세션에서 실행 중인 작업만 표시한다는 것을 알고 있습니다 .
셸 세션 전체에서 현재 사용자의 작업(예: 다른 터미널 탭의 작업)을 표시할 수 있는 bash 코드가 있습니까?
답변1
jobs
현재 사용자( )가 소유한 모든 프로세스를 나열하는 것 외에 이 전역 호출이 수행하려는 작업이 무엇인지는 확실하지 않지만 ps x
터미널 및/또는 상태별로 목록을 필터링할 수 있습니다.
프로세스를 나열하십시오.
- 아무 터미널에나 연결하세요:
ps x |awk '$2 ~ /pts/'
- 작업 제어로 인해 중지됨( Ctrl+ z없음
bg
):ps x |awk '$3 ~ /T/'
- 포그라운드에서 실행:
ps x |awk '$3 ~ /\+/'
AWK정말 강력합니다. 여기서는 필드를 숫자로 호출하고 $
정규식 일치자( )를 사용하여 해당 값을 확인합니다 ~
. 역 매칭을 사용할 수 있습니다 !~
. 조건은 다음과 같습니다. 우리는 AWK의 기본 동작(일치 항목을 인쇄하며 { print $0 }
전체 행을 인쇄하도록 작성할 수도 있음)을 사용하고 있습니다.
AWK 명령에 헤더 'NR == 1 || …
(레코드 수 = 1, 행 1이라고도 함)를 추가할 수 있습니다. 예를 들어 이들은 결합될 수 있습니다 ps x |awk 'NR == 1 || $3 ~ /T/ || $2 ~ /pts/
. 정규식을 사용하면 처음 두 개의 글머리 기호를 로 결합할 수 있습니다 ps x |awk '$3 ~ /[T+]/'
. 이러한 조건문은 논리적이므로 및 괄호로 결합할 수 있습니다 ||
.&&
ps x |awk 'NR == 1 || ($3 ~ /\+/ && $2 ~ /pts/)'
나는 당신이 원하는 것이 다음과 같다고 생각합니다.ps x |awk 'NR == 1 || $2 ~ /pts/
나는 이것을 Linux 시스템에서 실행했습니다. 다른 프로그램을 실행하는 경우 터미널 에뮬레이터의 이름이 다를 수 있습니다. 실행하여 ps $$
활성 쉘이 목록에 어떻게 나타나는지 확인하고 두 번째 열에서 정규식을 작성하십시오.