起動するたびにスクリプトを実行する必要があります。そのために、.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