我已经编写了这个服务单元来运行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.js
从node /<pathTo>/test.js
CLI 输出脚本正在运行的目录。
如果这是由系统控制,它记录根目录。
这背后的逻辑是什么?日志为什么会变化?
答案1
因为 systemd 没有默认工作目录。因此它使用/
默认工作目录。WorkingDirectory=
在您的[Service]
部分中使用来设置工作目录。