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

관련 정보