smartdをユーザーセッションにバインドする

smartdをユーザーセッションにバインドする

DE(Gnome3)でスマート通知を見たいです。そのため、通知転送を使用してログインしたすべてのユーザーに通知するカスタムスクリプトを実行するようにsmartdを設定しました。

smartd.conf:

/dev/sda -m root -M test -M exec /etc/smartmontools/smartd_warning.d/notify -a -n standby,10,q

smartd_warning.d/通知:

#!/usr/bin/env sh

IFS=$'\n'
for LINE in `w -hs`
do
    USER=`echo $LINE | awk '{print $1}'`
    USER_ID=`id -u $USER`
    DISP_ID=`echo $LINE | awk '{print $8}'`
    sudo -u $USER DISPLAY=$DISP_ID DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USER_ID/bus notify-send "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" --icon=dialog-warning
done

smartdシステムにログインすると再起動しなければ正常に動作しません。明らかに、smartdユーザーがシステムにログインする前に起動するため、起動時には機能しません。

[Unit]
Description=Self Monitoring and Reporting Technology (SMART) Daemon
Documentation=man:smartd(8) man:smartd.conf(5)

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/smartmontools
ExecStart=/usr/sbin/smartd -n $smartd_opts
ExecReload=/bin/kill -HUP $MAINPID
StandardOutput=syslog

[Install]
WantedBy=multi-user.target

これらの通知を表示するためにsmartdサービスをユーザーセッションにバインドするにはどうすればよいですか?

答え1

以下を基準WantedByに変更してみることができます。graphical.targetdefault.targetこれ

簡単な説明はmulti-user.target、システムが動作していることを意味しますが、ユーザーがログインしているという意味ではなく、graphical.targetローカルユーザーがログインしていることを意味し、default.targetユニバーサルエイリアスですが、graphical.target他の値のエイリアスでもあります。

あるいは、単に通知を見逃していないことを確認したい場合は、echo通知を送信することによって送信されるファイルに同じデータを送信することもできます。次のようにする必要があります。 (
echo "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" >> /"YourPathHere"/smartd.log
スクリプトが書き込むパスを使用する必要があります)

関連情報