데몬 의 개념은 파일이 아닌 프로세스에 연결됩니다 . 이러한 이유로 "파일 시스템에서 데몬 찾기"에는 의미가 없습니다. 개념을 좀 더 명확하게하기 위해서 : 프로그램은 실행 가능한 파일이다 (의 출력에서 볼 수있다 ). 프로세스는 해당 프로그램의 인스턴스입니다 (의 출력에 표시됨).ls
ps
이제 우리가 대답으로 제공 한 정보를 사용하면 제어 터미널이 연결되지 않은 상태에서 실행되는 프로세스를 검색하여 실행중인 데몬을 찾을 수 있습니다 . 이것은 다음과 ps
같이 매우 쉽게 수행 할 수 있습니다 .
$ ps -eo 'tty,pid,comm' | grep ^?
tty
출력 필드가 포함되어 있습니다 "?" 프로세스에 제어 터미널이없는 경우
여기서 큰 문제는 시스템이 그래픽 환경을 실행할 때 발생합니다. GUI 프로그램 (예 : Chromium)은 터미널에 연결되어 있지 않으므로 출력에도 나타납니다. root가 그래픽 프로그램을 실행하지 않는 표준 시스템에서는 단순히 이전 목록을 root의 프로세스로 제한 할 수 있습니다. ps
' -U
스위치를 사용하여 달성 할 수 있습니다 .
$ ps -U0 -o 'tty,pid,comm' | grep ^?
그러나 여기서 두 가지 문제가 발생합니다.
- root가 그래픽 프로그램을 실행중인 경우 표시됩니다.
- 루트 권한없이 실행되는 데몬은 그렇지 않습니다. 부팅시 시작되는 데몬은 일반적으로 루트로 실행됩니다.
기본적으로 GUI 터미널이 아닌 제어 터미널이없는 모든 프로그램 을 표시하려고합니다 . 다행스럽게도 GUI 프로세스를 나열하는 프로그램이 있습니다 xlsclients
. 이 slm의 답변은 모든 GUI 프로그램을 나열하는 데 사용하는 방법을 알려주지 만 제외하기를 원하기 때문에 되돌려 야합니다. --deselect
스위치를 사용하여 수행 할 수 있습니다 .
먼저 프로세스를 실행하는 모든 GUI 프로그램 목록을 작성합니다. 방금 연결 한 답변에서 이것은 다음을 사용하여 수행됩니다 ...
$ xlsclients | cut -d' ' -f3 | paste - -s -d ','
이제 명령 이름으로 선택할 수 ps
있는 -C
스위치가 있습니다. 방금 명령 목록을 얻었으므로 ps
명령 행에 삽입 해 봅시다 . --deselect
나중에 선택을 취소하기 위해 사용하고 있습니다.
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect
이제 모든 비 GUI 프로세스 목록이 있습니다. "TTY 첨부 없음"규칙을 잊지 마십시오. 이를 -o tty,args
위해 tty
각 프로세스 (및 전체 명령 행) 를 출력하기 위해 이전 행에 추가하겠습니다 .
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --deselect -o tty,args | grep ^?
마지막 grep
은 "?"로 시작하는 모든 라인, 즉 제어 tty가없는 모든 프로세스를 캡처합니다. 그리고 당신은 간다! 이 마지막 줄은 제어 터미널없이 실행중인 모든 비 GUI 프로세스를 제공합니다. 예를 들어 커널 스레드 (프로세스가 아닌)를 제외 하여 여전히 개선 할 수 있습니다 .
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,args | grep ^?
... 또는 읽을 수있는 몇 가지 정보 열을 추가하여 :
$ ps -C "$(xlsclients | cut -d' ' -f3 | paste - -s -d ',')" --ppid 2 --pid 2 --deselect -o tty,uid,pid,ppid,args | grep ^?
network-manager
, 없습니다NetworkManager
.