60分ごとに通知を送信するサービスを作成しようとしています。このためにbashスクリプトを作成しました。 60分ごとに実行されますが、不明な理由で動作しないものをhourly.sh
使用して実行できるため、動作することを知っています。働かないでください。私は次のように始めました。これは私のコードです。./hourly.sh
timer
systemctl start hourlynotif.timer
hourlynotif.service
:
[Unit]
Description=Hourly notifier with notify-send
[Service]
Type=oneshot
ExecStart=/etc/systemd/system/hourly.sh
[Install]
WantedBy=multi-user.target
注:[Install]
タイマーなしでサービスとして実行しようとする行を追加しました(タイマーとして実行している場合は[Install]タグが必要ないため)。単にテストするためのものでしたが、何も変わりませんでした。
そして hourlynotif.timer
:
[Unit]
Description=Hourly notifier with notify-send
[Timer]
#OnCalendar=hourly
OnActiveSec=1
[Install]
WantedBy=timers.target
systemctl list-timers --all
私のタイマーは「パス」としてリストされていて、これが出力なので、タイマーが期待どおりに動作していることを知っています。 (テストを開始してから1秒間実行するように編集したため、毎時間ではありません)
NEXT LEFT LAST PASSED UNIT ACTIVATES
n/a n/a Thu 2017-08-31 05:21:54 CST 6s ago hourlynotif.timer hourlynotif.service
どんなアイデアがありますか?
編集する:Bashスクリプトは、表示されるKDE通知ウィジェットに依存する通知転送に依存します。スクリプトをsudoすると通知は実行されないため、ログインしたユーザーとしてスクリプトを実行する必要があるようです。
答え1
問題は、.bashを使用して実行せずにsystemctl --user start <unit>
.bashsystemctl start <unit>
を使用しているだけです。スクリプトはユーザー固有のKDEエントリに依存するため、そのスクリプトを実行しても機能しません。sudo
これがサービスのデフォルトモードです。