Eka*_*Eka 3 command-line shutdown scripts screensaver
我在执行时制作了这个脚本将关闭我的系统(一段时间后)并且应该启用屏幕保护程序。
#!/bin/bash
sudo shutdown -h +30
gnome-screensaver-command -a
Run Code Online (Sandbox Code Playgroud)
这个脚本主要有两个问题。
sudo shutdown -h +30
不运行gnome-screensaver-command -a
也就是说,它会激活关机,但不会激活屏幕保护程序
如何解决这些问题?
问题1和2的解决方案:
您需要编辑/etc/sudoers
( sudo visudo
) 文件以添加相关条目以授予sudo
用户运行此脚本(而不是shutdown
命令)的无密码权限:
foo spamegg = (root) NOPASSWD: /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
这foo
是用户名,spamegg
是主机名,相应地替换/path/to/script.sh
。现在运行命令(使脚本可执行):
sudo /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
请注意,该gnome-screensaver-command -a
命令也将作为 运行root
,如果您不希望您需要为用户授予无密码sudo shutdown
命令的权限:
foo spamegg = (root) NOPASSWD: /sbin/shutdown
Run Code Online (Sandbox Code Playgroud)第二个问题是因为在您当前的脚本中,gnome-screensaver-command -a
只会在shutdown
命令完成后运行。由于该shutdown
命令将在 30 分钟后实际执行,因此处于阻塞状态。要解决此问题,您可以将shutdown
命令置于后台:
shutdown -h +30 &
gnome-screensaver-command -a
Run Code Online (Sandbox Code Playgroud)简而言之,您可以按如下方式制作脚本:
foo spamegg = (root) NOPASSWD: /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
运行它:
sudo /path/to/script.sh
Run Code Online (Sandbox Code Playgroud)
在使用之前sudo
,请将脚本存放在安全的地方,它必须只有您可以访问,并且您必须确定脚本的内容。