우분투에서 systemd를 실행할 수 없습니다

우분투에서 systemd를 실행할 수 없습니다

부팅할 때마다 스크립트를 실행해야 합니다. 이를 위해 .sh필요에 따라 터미널을 사용하여 실행하는 파일을 만들었습니다.

시작하는 동안 실행되도록 하려면 다음을 수행했습니다.이것지도 시간.

.sh문서:

#! /bin/bash

sub1="myHome/Messages"
sub2="myHome/log"
sub3="myHome/debug"
user="guy"
pass="kupelu9e"
mqtt_broker="192.168.2.100"

gnome-terminal --tab --title $sub1 -- mosquitto_sub -u $user -P $pass -h $mqtt_broker -t $sub1
gnome-terminal --tab --title $sub2 -- mosquitto_sub -u $user -P $pass -h $mqtt_broker -t $sub2
gnome-terminal --tab --title $sub3 -- mosquitto_sub -u $user -P $pass -h $mqtt_broker -t $sub3

gnome-terminal -- mosquitto_pub -u $user  -P $pass -h $mqtt_broker -t "myHome/All" -m "status"

유닛 파일

[Unit]
Description=Runs terminalwith MQTT subs
After=network.target auditd.service

[Service]
User=guy
WorkingDirectory=/home/guy
ExecStart=/bin/bash 123.sh

데몬을 실행하면 오류가 발생합니다.

guy@desktop:~$ systemctl status mqtt_subs.service 
× mqtt_subs.service - Runs terminalwith MQTT subs
     Loaded: loaded (/etc/systemd/system/mqtt_subs.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2023-04-11 15:12:53 IDT; 10s ago
    Process: 5193 ExecStart=/bin/bash mqtts.sh (code=exited, status=1/FAILURE)
   Main PID: 5193 (code=exited, status=1/FAILURE)
        CPU: 273ms

Apr 11 15:12:52 desktop systemd[1]: Started Runs terminalwith MQTT subs.
Apr 11 15:12:52 desktop bash[5195]: # Failed to parse arguments: Cannot open display:
Apr 11 15:12:53 desktop bash[5197]: # Failed to parse arguments: Cannot open display:
Apr 11 15:12:53 desktop bash[5199]: # Failed to parse arguments: Cannot open display:
Apr 11 15:12:53 desktop bash[5201]: # Failed to parse arguments: Cannot open display:
Apr 11 15:12:53 desktop systemd[1]: mqtt_subs.service: Main process exited, code=exited, status=1/FAILURE
Apr 11 15:12:53 desktop systemd[1]: mqtt_subs.service: Failed with result 'exit-code'.
guy@desktop:~$ 

systemd서비스가 제대로 실행되고 정의되었는지 확인하기 위해 123.sh파일에 쓰기 위해 echo를 수정했으며(즉, 매우 간단한 작업) 오류가 발생하지 않습니다.

어떤 도움을 주셔서 감사합니다

남자

답변1

내 성공 공유(@Edgar Magallon의 의견을 참고하여)

1단계 - 유닛 파일 생성:

[Unit] Description=Runs terminalwith MQTT subs 
PartOf=graphical-session.target 
After=graphical-session.target

[Service]
Type=exec 
WorkingDirectory=/home/guy 
ExecStart=/bin/bash mqtts.sh

[Install]
WantedBy=graphical-session.target

2단계 - 사용자 서비스:

파일은 /home/guy/.config/systemd/user/mqtt_subs.service실행 전( chmod +x)을 포함하여 에 배치됩니다.

3단계 - 사용자 서비스 시작:

systemctl --user enable mqtt_subs.service

systemctl --user start mqtt_subs.service

관련 정보