Linux systemd user service

2026-03-17 21:47:00
丁国栋
原创 2
摘要:本文记录关于systemd user service的一些知识。

运维向来不是一件简单的工作,它需要你持续的学习、思考和实践,并且经常面对新的挑战。

作为一个老运维,你应该始终保持学习和成长的意识,不断地探索新的技术和工具,以适应时代的变化。在面对复杂的工作环境时,你应该始终保持开放的心态,不断地寻找新的解决方案,以满足用户的需求。

最近,我自己的一个测试计算机出现了性能问题,原来是为了测试数据库使用的,为数据库分配了较高的内存缓存,但偶尔系统会出现极其缓慢的运行状态。

为了解决这个问题,我安装了 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

这样看,后面还得记住这个特性。

发表评论
博客分类