如何从脚本/命令行安全地终止 xscreensaver?

如何从脚本/命令行安全地终止 xscreensaver?

我使用的是 Linux (RHEL6) 工作站。我编写了一个小脚本,当我连接或断开 USB 拇指驱动器时,它会通过 xscreensaver 锁定和解锁屏幕,这实际上将其变成了工作站的物理密钥。问题是,似乎没有从命令行解锁 xscreensaver 的好方法。xscreensaver-command -deactivate与直觉相反,它只“模拟用户活动”,并且仍然需要密码才能解锁屏幕。只有在没有运行屏幕保护程序时xscreensaver-command -exit才会杀死父守护进程。正如的手册页警告的那样,xscreensaverxscreensaver-command -exit

Warning: never use kill -9 with xscreensaver while the screensaver is active.  If you are using a virtual root window  manager,
that can leave things in an inconsistent state, and you may need to restart your window manager to repair the damage.

确实,我目前使用的pkill xscreensaver方法是从脚本中删除屏幕保护程序,这通常会导致僵尸进程和其他混乱。如何才能从脚本/命令行安全地解锁屏幕保护程序?

答案1

鉴于 xscreensaver 对安全性近乎偏执的关注,正如jwz 的 xscreensaver 常见问题解答并进一步阐明关于工具包, 我强烈怀疑除了您当前使用的强制终止之外,其他任何方法都无法在不使用密码的情况下解锁普通 xscreensaver。最好的选择可能是修改源代码以包含“-forceunlock”选项之类的内容,然后从中构建您自己的二进制文件。

答案2

sudo killall -9 xscreensaver答案是。如果你关闭它,屏幕就会解锁,很简单。然后你可以用 重新启动它,DISPLAY=:0 xscreensaver -no-splash然后用 锁定它DISPLAY=:0 xscreensaver-command -lock。当然,解锁屏幕存在安全隐患,但我需要这样做,而且我知道自己在做什么。这样做风险自负,免责声明结束。

相关内容