我需要使用systemctl从远程机器自动运行我的node.js脚本。
我已经创建了一个.service文件,并将其放置在
我已经创建了一个.service文件,并将其放置在
/etc/systemd/system/
路径下。以下是.service文件的内容:[Unit]
Description=laporan
[Service]
ExecStart=/var/www/laporan/nodeserver/server.js
Restart=always
User=nobody
Group=root
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/laporan/nodeserver
[Install]
WantedBy=multi-user.target
但是每次我尝试启动服务时,都会返回以下错误(systemctl status laporan
的输出):
● laporan.service - laporan
Loaded: loaded (/etc/systemd/system/laporan.service; enabled)
Active: failed (Result: start-limit) since Mon 2016-09-12 09:15:06 WITA; 11min ago
Process: 121690 ExecStart=/var/www/laporan/nodeserver/server.js (code=exited, status=203/EXEC)
Main PID: 121690 (code=exited, status=203/EXEC)
Sep 12 09:15:05 kominfomdc systemd[1]: Unit laporan.service entered failed state.
Sep 12 09:15:06 kominfomdc systemd[1]: laporan.service start request repeated too quickly, refusing to start.
Sep 12 09:15:06 kominfomdc systemd[1]: Failed to start laporan.
Sep 12 09:15:06 kominfomdc systemd[1]: Unit laporan.service entered failed state.
这个错误具体是什么?我有什么遗漏吗?
ExecStart=/usr/local/bin/node /var/www/laporan/nodeserver/server.js
,它运行得非常好。感谢您的回答! - Edgar P.node absolute_path_to_index.js
是正常的。然而,在systemd中执行完全相同的命令失败了,显然是因为systemd正在使用默认的Node安装(它显然是node 8)。所以我运行了which node
并将绝对路径粘贴到systemd中,这就成功了。 - Christophe Vidal