我试图制作一个可执行文件(bash脚本)来向我显示通知,并在找不到进程时关闭计算机。
我将脚本作为启动应用程序运行,并且在此脚本中使用notify-send
和shutdown
命令。
问题是:
(1)如果将myfolder/myscript
添加到“启动应用程序”列表中,它将无法运行shutdown
命令(为此需要root密码)
(2)如果我添加脚本sudo myfolder/myscript
,它将无法通过notify-send
应用程序显示通知。
我已经在互联网上进行了大量搜索,并尝试了以下步骤:
(1)通过/sbin/shutdown
向脚本添加脚本路径或sudo visudo
(2)在su - $USER -c "DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
命令之前添加了notify-send
(我发现一些用户报告说root无法发送通知)。
所以...他们都不起作用。我缺少什么? 显示通知和关闭该怎么办?
这是我的代码:
#!/bin/bash
#Search for a specific process and sleep if it is found (removed for space saving)
shut_time=$(date --date='10 minutes' +"%T")
notify-send -t 600000 "WARNING:
Program is not running.
Shutting down in 10 minutes (scheduled for $shut_time)."
#ALREADY TESTED BELLOW LINES (DON'T WORK)
#su - $USER -c "DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus notify-send -t 600000 'WARNING:
#Program is not running.
#Shutting down in 10 minutes.'"
sudo /sbin/shutdown -h +10 #Tried with our without sudo
我正在运行MX Linux 18(xfce,基于Debian)。
答案 0 :(得分:0)
我认为它在sudoers中缺少关闭的条目。请在 /etc/sudoers.d 下创建文件 sudo ,并输入以下内容:
[YOURUSER] ALL = (ALL) NOPASSWD: /sbin/shutdown
用您的用户帐户替换[YOURUSER]!