私が所有しているサービス(systemdから呼び出す)のスクリプトであるstart.sh
スクリプトがあります。ExecStart
DISPLAY=:0 xbindkeys
スクリプトにその行を追加しても起動しstart.sh
ませんxbindkeys
。
user@host:~$ service SERVICE status
● SERVICE.service - "MY AWESOME SERVICE"
Loaded: loaded (/etc/systemd/system/SERVICE.service; enabled)
Active: active (running) since Thu 2020-03-05 21:44:22 CET; 13min ago
Main PID: 5508 (bash)
CGroup: /system.slice/SERVICE.service
├─5508 /bin/bash /home/user/start.sh
└─5530 /usr/lib/PROGRAM
Mar 05 21:44:24 HOSTNAME bash[5508]: <SOME LOGS>
Hint: Some lines were ellipsized, use -l to show in full.
user@host:~$ ps -ef | grep xbindkeys
user 6181 3545 0 21:57 pts/1 00:00:00 grep xbindkeys
user@host:~$
また、別のサービスを作成し、元のサービスをそれに依存させるようにしました。
[Unit]
Description="Xbindkeys Service to block keys"
Before=SERVICE.service
Requires=SERVICE.service
[Service]
Environment="DISPLAY=:0"
ExecStart=/usr/bin/xbindkeys
Restart=always
[Install]
WantedBy=multi-user.target
始めることができません。
user@host:~$ service xbindkeys status
● xbindkeys.service - "Xbindkeys Service to block keys"
Loaded: loaded (/etc/systemd/system/xbindkeys.service; disabled)
Active: failed (Result: start-limit) since Thu 2020-03-05 21:47:37 CET; 1s ago
Process: 6122 ExecStart=/usr/bin/xbindkeys -X :0 (code=killed, signal=SEGV)
Main PID: 6122 (code=killed, signal=SEGV)
Mar 05 21:47:37 HOST systemd[1]: Unit xbindkeys.service entered failed state.
Mar 05 21:47:37 HOST systemd[1]: xbindkeys.service holdoff time over, scheduling restart.
Mar 05 21:47:37 HOST systemd[1]: Stopping "Xbindkeys Service to block keys"...
Mar 05 21:47:37 HOST systemd[1]: Starting "Xbindkeys Service to block keys"...
Mar 05 21:47:37 HOST systemd[1]: xbindkeys.service start request repeated too quickly, refusing to start.
Mar 05 21:47:37 HOST systemd[1]: Failed to start "Xbindkeys Service to block keys".
Mar 05 21:47:37 HOST systemd[1]: Unit xbindkeys.service entered failed state.
ExecStart
また、さまざまな方法で変更を試みました。xbindkeys.service
ExecStart=/usr/bin/xbindkeys -X :0
そのどれもうまくいかず、上記の結果が出てきます。
DISPLAY=:0 xbindkeys
端末から呼び出すと、期待xbindkeys
どおりに動作し、終了するまでバックグラウンドでプロセスとして実行されます。
~$ xbindkeys
~$ ps -ef | grep xbindkeys
user 6166 1 0 21:54 ? 00:00:00 xbindkeys
user 6168 3545 0 21:54 pts/1 00:00:00 grep xbindkeys
~$
また、単純なスクリプトがある場合:
#!/bin/bash
# start-xbindkeys.sh
DISPLAY=:0 xbindkeys
スクリプトを呼び出すと./start-xbindkeys.sh
~$ ./start-xbindkeys.sh
~$ ps -ef | grep xbindkeys
user 6166 1 0 21:54 ? 00:00:00 xbindkeys
user 6168 3545 0 21:54 pts/1 00:00:00 grep xbindkeys
~$
xbindkeys
なぜそれを実行できないのですsystemd
か?
私はi386 Debian 8 Jessieシステムで実行しています。