我使用的是 Ubuntu 16.04。我发现一些服务会通过以下方式显示 CPU 和内存使用情况systemctl status <name>.service
:
$ systemctl status nginx
● nginx.service - LSB: Stop/start nginx
Loaded: loaded (/etc/init.d/nginx; bad; vendor preset: enabled)
Active: active (running) since 五 2017-04-07 09:21:25 CST; 4h 59min ago
Docs: man:systemd-sysv-generator(8)
Process: 2677 ExecStart=/etc/init.d/nginx start (code=exited, status=0/SUCCESS)
Tasks: 2
Memory: 2.5M
CPU: 12ms
CGroup: /system.slice/nginx.service
├─2695 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
└─2697 nginx: worker process
但在另一台主机上,我发现systemctl status
不会显示 CPU 和内存使用情况:
$ systemctl status nginx
● nginx.service - LSB: Stop/start nginx
Loaded: loaded (/etc/init.d/nginx; bad; vendor preset: enabled)
Active: active (running) since 四 2017-04-06 20:57:15 CST; 17h ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/nginx.service
├─29668 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
├─29669 nginx: worker process
├─29670 nginx: worker process
├─29671 nginx: worker process
└─29672 nginx: worker process
为什么? 两者都是nginx
从 nginx 官方 repo 安装的apt install -y nginx
。 即使在同一台主机上,某些服务也不会显示 CPU 和内存使用情况。
如何在 systemctl status 中显示 cpu 和内存的使用情况?
答案1
我不知道为什么有些主机可以但有些不可以,如果你想要一致的行为,你应该通过设置为单个单元或默认为所有单元启用内存核算:
DefaultMemoryAccounting=yes
然后/etc/systemd/system.conf
执行以下操作:
systemctl daemon-reexec
查看此列表线程来自 systemd 开发人员,以及systemd-系统.conf[5]。
答案2
<myapp>.service
有时在文件中添加[Service]
以下两个选项可能会有所帮助
CPUAccounting=yes
MemoryAccounting=yes
答案3
它实际上没有你想象的那么复杂。要查看非静态数据(如 CPU 或内存使用情况),你必须使用以下命令:
watch systemctl status <name>.service