![현재 사용자가 모든 셸 세션(현재 셸뿐만 아니라)의 모든 작업을 나열합니다.](https://linux55.com/image/150817/%ED%98%84%EC%9E%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20%EB%AA%A8%EB%93%A0%20%EC%85%B8%20%EC%84%B8%EC%85%98(%ED%98%84%EC%9E%AC%20%EC%85%B8%EB%BF%90%EB%A7%8C%20%EC%95%84%EB%8B%88%EB%9D%BC)%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EC%9E%91%EC%97%85%EC%9D%84%20%EB%82%98%EC%97%B4%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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 $$
활성 쉘이 목록에 어떻게 나타나는지 확인하고 두 번째 열에서 정규식을 작성하십시오.