2

我正在尝试制作一个可执行文件(bash 脚本)来向我显示通知并在找不到进程时关闭我的计算机。

我将把脚本作为启动应用程序运行,并且在这个脚本中使用notify-sendandshutdown命令。

问题是:
(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)。

4

1 回答 1

0

我认为它在 sudoers 中缺少关闭条目。请在/etc/sudoers.d下创建一个文件sudo并输入以下条目:

[YOURUSER] ALL = (ALL) NOPASSWD: /sbin/shutdown

将 [YOURUSER] 替换为您的用户帐户!

于 2019-03-15T17:43:06.410 回答