cce*_*911 4 systemd services node.js
我正在尝试让我的 nodejs 应用程序在启动时启动。如果我以用户 odroid 的身份从命令行启动它,它运行良好。
这是我的服务文件:
[Unit]
Description=ProImage
After=network.target mysql.service
[Service]
ExecStart=/bin/node /proimage/app.js
Restart=on-failure
RootDirectory=/proimage
WorkingDirectory=/proimage
User=root
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
当我运行时:
sudo systemctl status proimage_daemon
Run Code Online (Sandbox Code Playgroud)
我得到:
odroid@odroid:~$ sudo systemctl status proimage_daemon
? proimage_daemon.service - ProImage
Loaded: loaded (/lib/systemd/system/proimage_daemon.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since Tue 2019-02-26 09:45:30 EST; 6s ago
Process: 30797 ExecStart=/bin/node /proimage/app.js (code=exited, status=200/CHDIR)
Main PID: 30797 (code=exited, status=200/CHDIR)
Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:45:30 odroid systemd[1]: Stopped ProImage.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Start request repeated too quickly.
Feb 26 09:45:30 odroid systemd[1]: Failed to start ProImage.
Run Code Online (Sandbox Code Playgroud)
我看过 journalctl 使用:
journalctl -u proimage_daemon.service
Run Code Online (Sandbox Code Playgroud)
它给了我相同的以下内容:
odroid@odroid:~$ journalctl -u proimage_daemon.service --since 09:38
-- Logs begin at Tue 2019-02-26 09:02:47 EST, end at Tue 2019-02-26 10:02:34 EST. --
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Trying to enqueue job proimage_daemon.service/stop/replace
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Installed new job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Enqueued job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Job proimage_daemon.service/stop finished, result=done
Feb 26 09:38:12 odroid systemd[1]: Stopped ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: Started ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Main process exited, code=exited, status=200/CHDIR
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:39:19 odroid systemd[1]: Stopped ProImage ICU.
Run Code Online (Sandbox Code Playgroud)
我看了十几篇关于这个问题的帖子。他们都说 status=200/CHDIR 表示工作目录有问题。
就我而言,工作目录肯定存在,并且归 root 所有。我已经在这个目录上递归地将权限设置为 777。我用服务文件尝试了很多不同的东西,但都无济于事。
有没有人对我的问题有什么建议?
Jef*_*ler 10
根据systemd exec 文档,设置RootDirectory类似于 chroot。结合 setting WorkingDirectory,这意味着 systemd 正在将您的应用 chroot 到/proimage,然后在该目录中尝试to cd /proimage,这将转换为/proimage/proimage.
如果您不需要 chroot 进程,请消除该RootDirectory指令。如果您打算在chroot建立过程,消除了WorkingDirectory指令。
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |