Systemd - Pythonスクリプト - コード=終了、ステータス=1/失敗で終了した基本プロセス

Systemd - Pythonスクリプト - コード=終了、ステータス=1/失敗で終了した基本プロセス

こんにちは、状況は次のとおりです。
私はAWSのubuntuベースのEC2マシンに接続しています(現在Ubuntu 18.04を使用しています)。マシン内でファイルを管理し、端末でスクリプトを実行できますが、接続されていない場合でもマシンでスクリプトを実行したいと思います。だからサービスを考えました。

systemdを使用して/lib/systemd/systemでこのファイルを見つけました。

[Unit]
Description=Test Service
After=network.target
[email protected] 

[Service]
Type=simple
ExecStart=/usr/bin/python3  /home/ubuntu/GreenHouse/Catalog/Catalog_REST.py
StandardInput=tty-force 

[Install]
WantedBy=multi-user.target

サービスを開始しましたが、ステータスを確認してみました。

 sudo systemctl status CATALOG_REST-py.service

次のエラーが発生します。

● CATALOG_REST-py.service - Test Service    
Loaded: loaded (/lib/systemd/system/CATALOG_REST-py.service; enabled; vendor preset: enabled)    
Active: failed (Result: exit-code) since Sun 2021-08-22 16:54:13 UTC; 1s ago   
Process: 23968 ExecStart=/usr/bin/python3 /home/GreenHouse/Catalog/Catalog_REST.py (code=exited,
status=1/FAILURE)  
Main PID: 23968 (code=exited, status=1/FAILURE)

Aug 22 16:54:13 ip-172-31-13-245 systemd[1]: Started Test Service. 
Aug 22 16:54:13 ip-172-31-13-245 systemd[1]: CATALOG_REST-py.service: Main process exited, code=exited, status=1/FAIL 
Aug 22 16:54:13 ip-172-31-13-245 systemd[1]: CATALOG_REST-py.service: Failed with result 'exit-code'.

端末で実行するとうまくいくとpython3 /home/GreenHouse/Catalog/Catalog_REST.py言いたいです。

証明書を取得するいくつかの方法を知っていますか?エラーのより良い説明

ベストアンサー1

ジョブがによって実行されているcronか、systemd起動スクリプトがデスクトップで実行されているのと同じランタイム環境で実行されていません。systemdでスクリプトを起動しますroot。変更やその他の環境変数の設定は、ジョブにPATH自動的に伝播されませんcron。たとえば、no$DISPLAYなので、GUIプログラムには特別な処理(読み取りman xhost)が必要です。

cron環境変数は、すべてのジョブの読み取りファイルで設定できます。crontabman 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias各環境の結果を確認してください。

その行はデフォルトで解釈されるため、構文はcommandそれよりも単純なので、環境を設定した後に必要なプログラムを呼び出すスクリプト(実行可能、インストール、開始)を呼び出すことをお勧めします。crontab/bin/sh/bin/bashcommandbash#!/bin/bash

おすすめ記事