Ubuntu

從服務執行的nodejs伺服器給出錯誤“無法執行命令:執行格式錯誤”

  • July 31, 2022

我不擅長伺服器管理工作,如果我遺漏了任何步驟,請原諒我。

我有一個執行正常的節點快速伺服器,我正在部署它,forever但現在我想將它移到系統服務中。我創建了我的服務文件/lib/systemd/system/myservice.service

[Unit]
Description=website service
After=network.target

[Service]
ExecStart=/home/myuser/.nvm/versions/node/v12.14.0/bin/node /home/myuser/WSProject/src/server/index.js
Type=simple
Restart=on-failure

[Install]
WantedBy=multi-user.target

我按照指南得到了這個配置。我已經確認節點路徑是正確的,並且是我使用時返回的路徑which node。我重新啟動守護程序,然後重新啟動服務。服務失敗。如果我檢查該服務的 journalctl,我會看到以下錯誤:

Jul 30 12:55:03 psjqw2q9h systemd[1]: Started Run the encore server.
Jul 30 12:55:03 psjqw2q9h systemd[22298]: myservice.service: Failed to execute command: Exec format error
Jul 30 12:55:03 psjqw2q9h systemd[22298]: myservice.service: Failed at step EXEC spawning /home/myuser/WSProject/src/server/index.js: Exec format error
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Main process exited, code=exited, status=203/EXEC
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Failed with result 'exit-code'.
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Service hold-off time over, scheduling restart.
Jul 30 12:55:03 psjqw2q9h systemd[1]: myservice.service: Scheduled restart job, restart counter is at 1.
Jul 30 12:55:03 psjqw2q9h systemd[1]: Stopped Run the encore server.

這就是我得到的。我不知道如何進一步解決這個問題。我可以找到與此類似的問題,但要麼與節點 nodejs 相關,要麼像配置文件中的空格這樣微不足道的東西。正如一篇文章所述,我嘗試了各種形式的 ExecStart 命令用引號括起來。我在某個時候有一個使用者行,但是我將它設置為 root 使用者或其他使用者,或者完全忽略它並沒有影響天氣。

解決方案是調整 myservice.service 文件的權限,然後將 WorkingDirectory 值添加到需要執行節點應用程序的位置。

引用自:https://unix.stackexchange.com/questions/711891