对于某些服务单元文件,单元文件名与守护程序的名称不对应。
例如 Postfix:单元文件被调用,postfix.service但启动的底层守护进程被命名为master(主守护进程)和qmgr和tlsmgr(辅助守护进程)。
我正在寻找一种根据任何守护程序名称获取单元名称的方法。
使用systemctl status postfix(作为示例),我可以看到它显示了它产生的进程。
使用systemctl --all statusI 可以得到所有东西......但只是简单的 grep 进入那个烂摊子是不会得到单位名称的。
该libsystemd API函数sd_pid_get_unit(…)。从命令行,您可以使用psUNIT 列(如果它是使用 libsystemd 支持编译的):
$ ps -e -o pid,unit,cmd
PID 单元 CMD
1 init.scope /usr/lib/systemd/systemd
315 postfix.service tlsmgr -l -t unix -u
3057 cronie.service /usr/bin/CROND -n
3107 galed.service /usr/bin/galed
3182 getty@tty1.service /sbin/agetty --noclear tty1 linux
29171 postfix.service /usr/lib/postfix/bin/master -w
32758 postfix.service qmgr -l -t unix -u
$ ps -o 单位= 32758
后缀服务
$ ps -o 单位= -C tlsmgr
后缀服务
$ systemctl status $(pidof Pickup)
? postfix.service - Postfix 邮件传输代理
已加载:已加载(/usr/lib/systemd/system/postfix.service;已启用;供应商预设:已禁用)
Active:自 EEST 星期日 2016-03-27 17:24:24 起处于活动状态(正在运行);2 周 2 天前
主PID:29171(主)
任务:4(限制:512)
C组:/system.slice/postfix.service
?? 第315话
?? 8720 拾音器 -l -t unix -u
??29171 /usr/lib/postfix/bin/master -w
??32758 qmgr -l -t unix -u
$ grep :name=systemd: /proc/$(pidofpickup)/cgroup
1:name=systemd:/system.slice/postfix.service
#不要依赖这个,因为 cgroup 结构将在未来几个月内发生变化
| 归档时间: |
|
| 查看次数: |
5883 次 |
| 最近记录: |