システム起動スクリプトが正しく機能しないのはなぜですか? (Ubuntu 20.04)

システム起動スクリプトが正しく機能しないのはなぜですか? (Ubuntu 20.04)

2つのシステム起動スクリプトを作成しました。https://www.howtogeek.com/687970/how-to-run-a-linux-program-at-startup-with-systemd/、次を含んでいます:

#1

#!/bin/bash

synclient RightButtonAreaLeft=0
synclient RightButtonAreaTop=0

#2

#!/bin/bash

modprobe -r ec_sys
modprobe ec_sys write_support=1

echo -n -e "\x0a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null

while true; do
read -rsn1 input
if [[ size=${#input}!=0 ]]; then

    echo -n -e "\x8a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
    
fi
    
echo -n -e "\x0a" | sudo dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null


done

手動で実行すると、スクリプトは期待どおりに機能します。

上のスクリプトはタッチパッドの左下隅にあるRMBジェスチャーを無効にし、下のスクリプトは私が入力したときにLEDをオン/オフする必要があります(https://www.reddit.com/r/thinkpad/comments/7n8eyu/thinkpad_led_control_under_gnulinux/)、サービスの状態を確認して実行しているかどうかを確認しましたが、起動時に自動的に実行された場合はどちらも影響しません。

systemctl status servicename.service コマンドを使用しましたが、明らかなエラーは発生しませんでした。修正提案は理想的ですが、起動時にこれらのスクリプトを実行するための代替案も歓迎します。私はinit.dメソッドとUbuntuの起動スクリプトを設定しようとしましたが、残念ながら両方の方法は機能しません。

ベストアンサー1

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

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

おすすめ記事