我想在 DE (Gnome3) 中看到 smartd 通知。因此,我已配置 smartd 来执行使用 notification-send 通知所有登录用户的自定义脚本:
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
请确保使用脚本可以写入的路径)