簡體   English   中英

程序因 Linux systemctl 服務而失敗,但在直接調用時運行

[英]Program fails as Linux systemctl service but runs when called directly

我有一個腳本(一個 web 監聽器),它自己運行沒有問題:

> /usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py 

我已經有一個運行良好的不同服務。 因此,我以新名稱 /etc/systemd/system/my_workflow.service 復制了該文件:

Description=My Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py

[Install]
WantedBy=multi-user.target

ExecStart 行是成功運行的命令的直接副本。

然后我運行:

systemctl daemon-reload
systemctl start my_service.service 

它在沒有消息的情況下運行。 很遺憾:

systemctl status my_service.service 

顯示:

my_service.service - My Service
   Loaded: loaded (/etc/systemd/system/my_service.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Wed 2020-07-01 10:57:35 CDT; 958ms ago
  Process: 2722 ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py (code=exited, status=1/FAILURE)
 Main PID: 2722 (code=exited, status=1/FAILURE)

操作系統是:

NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"

什么可能是一個修復? 非常感謝,博格丹

這似乎是一個訪問問題。 該服務設置為以 User=root 身份運行,同時將數據(默認情況下)放到單個用戶的文件夾中。 將保存路徑修復到更通用的目錄或將用戶更改為主文件夾的所有者可以解決問題。

首先在 [service] 之后移動 ExecStart 並從服務中刪除 user=root。 還提到了服務中的 ExecStop。

Description=My Service
After=network.target
StartLimitIntervalSec=0

[Service]
ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py
Type=simple
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM