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


5

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

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

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

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.