Linux systemd user service
- 2026-03-17 21:47:00
- 丁国栋
- 原创 2
运维向来不是一件简单的工作,它需要你持续的学习、思考和实践,并且经常面对新的挑战。
作为一个老运维,你应该始终保持学习和成长的意识,不断地探索新的技术和工具,以适应时代的变化。在面对复杂的工作环境时,你应该始终保持开放的心态,不断地寻找新的解决方案,以满足用户的需求。
最近,我自己的一个测试计算机出现了性能问题,原来是为了测试数据库使用的,为数据库分配了较高的内存缓存,但偶尔系统会出现极其缓慢的运行状态。
为了解决这个问题,我安装了 atop 工具。这个工具是一个 Linux 系统中的资源监控工具,可以实时地显示系统的资源使用情况,包括内存、CPU、磁盘、网络等等,同时它相比我们常使用的 top 工具,可以将收集的指标信息存储起来,并可以进行回放,从而帮助我们后续的分析,这对于运维人员来说是非常有用的,可以帮助他们更好地了解系统的性能情况,以及发现可能的性能瓶颈。
通过 atop 结合 m 键按照内存排序,我发现数据库的内存占用了比较多,但仍然在合理的范围内。排在第二的是 openclaw,一个我以为我关闭了的服务。
我顺手将它 kill 了,没想到过段时间它又起来了。我通过 pstree -asp <pid> 命令发现它的父进程是 systemd。但我以前关闭该服务时已经通过 systemctl stop openclaw-gateway && systemctl disable openclaw-gateway 命令关闭了,那么为什么它又起来了呢?
❯ ps -ef|grep openclaw-gatew
root 823794 825 17 06:42 ? 00:00:07 openclaw-gateway
root 824033 822951 0 06:42 pts/1 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox --exclude-dir=.venv --exclude-dir=venv openclaw-gatew
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
├─(sd-pam),840
└─openclaw-gatewa,823794
├─{openclaw-gatewa},823795
├─{openclaw-gatewa},823796
├─{openclaw-gatewa},823797
├─{openclaw-gatewa},823798
├─{openclaw-gatewa},823799
├─{openclaw-gatewa},823800
├─{openclaw-gatewa},823807
├─{openclaw-gatewa},823808
├─{openclaw-gatewa},823809
└─{openclaw-gatewa},823810
❯ kill -9 823794
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
└─(sd-pam),840
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
└─(sd-pam),840
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
└─(sd-pam),840
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
├─(sd-pam),840
└─node,824099 /usr/lib/node_modules/openclaw/dist/index.js gateway --port 18789
├─{node},824100
├─{node},824101
├─{node},824102
├─{node},824103
├─{node},824104
└─{node},824106
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
├─(sd-pam),840
└─openclaw-gatewa,824099
├─{openclaw-gatewa},824100
├─{openclaw-gatewa},824101
├─{openclaw-gatewa},824102
├─{openclaw-gatewa},824103
├─{openclaw-gatewa},824104
├─{openclaw-gatewa},824106
├─{openclaw-gatewa},824115
├─{openclaw-gatewa},824116
├─{openclaw-gatewa},824117
└─{openclaw-gatewa},824118
现在都用 AI 搜索了,AI 搜索确实方便太多了。AI 一下子就给出了可能的提示:可能是用户级别的 systemd 服务(User Service)。通过命令 systemctl --user list-units --type=service --all | grep -i openclaw 确实找到了它的存在。而且要停止、禁用这个服务,必须使用 --user 参数。
❯ systemctl --user list-units --type=service --all | grep -i openclaw
openclaw-gateway.service loaded active running OpenClaw Gateway (v2026.2.23)
❯ systemctl stop openclaw-gateway.service
❯ systemctl disable openclaw-gateway.service
❯ systemctl list-units --type=service --all | grep -i openclaw
❯ systemctl status openclaw-gateway.service
○ openclaw-gateway.service - OpenClaw Gateway (v2026.2.23)
Loaded: loaded (/usr/lib/systemd/system/openclaw-gateway.service; disabled; preset: enabled)
Active: inactive (dead)
❯ pstree -asp 825
systemd,1 --system --deserialize=90
└─systemd,825 --user
├─(sd-pam),840
└─openclaw-gatewa,824099
├─{openclaw-gatewa},824100
├─{openclaw-gatewa},824101
├─{openclaw-gatewa},824102
├─{openclaw-gatewa},824103
├─{openclaw-gatewa},824104
├─{openclaw-gatewa},824106
├─{openclaw-gatewa},824115
├─{openclaw-gatewa},824116
├─{openclaw-gatewa},824117
└─{openclaw-gatewa},824118
❯ systemctl list-units --type=service --all | grep -i openclaw
❯ systemctl --user status openclaw-gateway.service
● openclaw-gateway.service - OpenClaw Gateway (v2026.2.23)
Loaded: loaded (/root/.config/systemd/user/openclaw-gateway.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-03-17 06:43:23 UTC; 2min 16s ago
Main PID: 824099 (openclaw-gatewa)
Tasks: 11 (limit: 18882)
Memory: 338.0M (peak: 445.2M)
CPU: 7.588s
CGroup: /user.slice/user-0.slice/user@0.service/app.slice/openclaw-gateway.service
└─824099 openclaw-gateway
Mar 17 06:43:29 df node[824099]: ' Events and Callbacks(事件与回调)\n' +
Mar 17 06:43:29 df node[824099]: ' -> \n' +
Mar 17 06:43:29 df node[824099]: ' Mode of event/callback subscription(订阅方式)\n' +
Mar 17 06:43:29 df node[824099]: ' -> \n' +
Mar 17 06:43:29 df node[824099]: ' Receive events/callbacks through persistent connection(使用 长连接 接收事件/回调)'
Mar 17 06:43:29 df node[824099]: ]
Mar 17 06:43:29 df node[824099]: 2026-03-17T06:43:29.737Z [feishu] feishu[default]: WebSocket client started
Mar 17 06:43:29 df node[824099]: 2026-03-17T06:43:29.918+00:00 [info]: [ '[ws]', 'ws client ready' ]
Mar 17 06:44:29 df node[824099]: 2026-03-17T06:44:29.310+00:00 Config warnings:\n- plugins.entries.feishu: plugin feishu: duplicate plugin>
Mar 17 06:45:29 df node[824099]: 2026-03-17T06:45:29.306+00:00 Config warnings:\n- plugins.entries.feishu: plugin feishu: duplicate plugin>
❯ systemctl --user stop openclaw-gateway.service
❯ systemctl --user disable openclaw-gateway.service
Removed "/root/.config/systemd/user/default.target.wants/openclaw-gateway.service".
❯ systemctl --user list-units --type=service --all | grep -i openclaw
这样看,后面还得记住这个特性。