프로세스 이름에서 시스템 단위 파일 식별


5

일부 서비스 장치 파일의 경우 장치 파일 이름이 데몬의 이름과 일치하지 않습니다.

예 : Postfix : 단위 파일이 호출 postfix.service되지만 시작된 기본 데몬의 이름은 master(메인 데몬) qmgrtlsmgr(헬퍼 데몬)입니다.

데몬 이름을 기반으로 장치 이름을 얻는 방법을 찾고 있습니다.

systemctl status postfix(예를 들어) 사용하면 생성 된 프로세스를 보여줍니다.

systemctl --all status내가 사용 하면 모든 것을 얻을 수 있습니다 ....하지만 그 혼란에 대한 평범한 grep은 장치 이름을 다시 얻지 못할 것입니다.

답변:


5

libsystemd API 함수입니다 sd_pid_get_unit(…). 명령 행 ps에서 UNIT 열과 함께 사용할 수 있습니다 (libsystemd 지원으로 컴파일 된 경우).

$ ps -e -o pid, 단위, cmd
    PID 단위 명령
      1 init.scope / usr / lib / systemd / systemd
    315 postfix.service tlsmgr -l -t 유닉스 -u
   3057 cronie.service / usr / bin / CROND -n
   3107 galed.service / usr / bin / galed
   3182 getty@tty1.service / sbin / agetty --noclear tty1 리눅스
  29171 postfix.service / usr / lib / postfix / bin / master -w
  32758 postfix.service qmgr -l -t 유닉스 -u

$ ps -o 단위 = 32758
postfix.service

$ ps -o 단위 = -C tlsmgr
postfix.service

$ systemctl 상태 $ (pidof pickup)
● postfix.service-Postfix 메일 전송 에이전트
   로드 됨 :로드 됨 (/usr/lib/systemd/system/postfix.service; 활성화; 공급 업체 사전 설정 : 비활성화)
   활성 : 일요일 이후 활성 (실행 중) 2016-03-27 17:24:24 EEST; 2 주 전
 메인 PID : 29171 (마스터)
    작업 : 4 (제한 : 512)
   C 그룹 : /system.slice/postfix.service
           ├─ 315 tlsmgr -l -t 유닉스 -u
           ├─ 8720 픽업 -l -t unix -u
           ├─29171 / usr / lib / postfix / bin / master -w
           └─32758 qmgr -l -t 유닉스 -u

$ grep : name = systemd : / proc / $ (pidof pickup) / cgroup
1 : name = systemd : /system.slice/postfix.service
# 앞으로 몇 달 동안 cgroup 구조가 바뀔 것이기 때문에 이것에 의존 하지 마십시오.

2
ps -o unit = -C tlsmgr은 내가 찾던 것입니다. systemctl status $ (pidof pickup)에 대해 알고 있었지만 장치 이름 (postfix.service)을 얻기 위해 출력을 구문 분석하는 것은 거의 불가능합니다. 감사!
Zee99
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.