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.target
default.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
スクリプトが書き込むパスを使用する必要があります)