作为服务启动时进程的当前目录发生变化

作为服务启动时进程的当前目录发生变化

我已经编写了这个服务单元来运行systemd

[Unit]
Description=NodeJS, Express server

[Service]
Type=simple
ExecStart=/usr/bin/node /home/sm/test.js
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

test.js 相当于一个ls,这样写:

const fs = require('fs')
fs.readdir('.', (e,d)=> e ?console.log(e): console.log(d))

运行node test.js甚至sudo node test.jsnode /<pathTo>/test.jsCLI 输出脚本正在运行的目录。

如果这是由系统控制,它记录根目录。

这背后的逻辑是什么?日志为什么会变化?

答案1

因为 systemd 没有默认工作目录。因此它使用/默认工作目录。WorkingDirectory=在您的[Service]部分中使用来设置工作目录。

相关内容