Shell 从 systemd 节点应用程序生成的脚本不编辑 etc 文件

Shell Script Spawned From systemd Node App Doesn't Edit etc File

我有一个 systemd 服务,可以在启动时启动 Node 应用程序。 Node 应用程序使用 child_process.spawnSync 启动一个 shell 脚本,该脚本使用 sed 编辑 /etc/wpa_supplicant/wpa_cli-actions.sh

如果我从命令行手动启动 Node 应用程序,wpa_cli-actions.sh 文件会被正确编辑,但当应用程序由 systemd 启动时,文件不会被正确编辑。我的 systemd 服务文件基于另一个启动类似服务的文件,所以我不确定我做错了什么。我在 journalctl 输出中没有看到与此相关的任何错误。下面是我的服务文件。

[Unit]
Description=The Edison status and configuration service
After=mdns.service

[Service]
ExecStart=/bin/su root -c 'node /usr/lib/config-server/app.js'
Restart=always
RestartSec=10s
StandardOutput=journal
StandardError=journal
SyslogIdentifier=edison-config
PrivateTmp=no
Environment=NODE_ENV=production
User=root
Group=root

[Install]
WantedBy=default.target

尝试以下操作,如果您未指定 UserGroup,则默认启用 root,替换整个 < 节点路径>使用您的节点路径,可以使用 which node 找到它。

[Unit]
Description=The Edison status and configuration service
After=mdns.service

[Service]
ExecStart=<path to node> /usr/lib/config-server/app.js
WorkingDirectory=/usr/lib/config-server
Restart=always
RestartSec=10s
StandardOutput=journal
StandardError=journal
SyslogIdentifier=edison-config
PrivateTmp=no
Environment=NODE_ENV=production


[Install]
WantedBy=default.target