我的 crontab 中有很多东西,包括一些与我的屏幕对话的东西。如果我不在那里等待通知,我真的不想让它运行。
有没有办法检查计算机是否已锁定,这样当我不在办公桌旁时,我就可以阻止它执行任何操作?或者,只有当我不在办公桌旁时,它才执行其他操作?
是的,我之前问过这个问题。我现在使用的是 Ubuntu 14.04 和 Unity,环境已经改变。当我运行 时gnome-screensaver-command -q
,我会得到The screensaver is inactive
工作站是否被锁定。新的环境需要新的答案。
答案1
unity
我查看了提到( )的软件包apt-cache search unity
,忽略了名称中带有、等的lib
任何内容。lens
unity-services
引起了人们的注意。此包中的一个文件是/usr/share/upstart/sessions/unity-panel-service-lockscreen.conf
,这是一个 Upstart 作业,包含:
description "Backing Service for the Unity Panel"
author "Andrea Azzarone <[email protected]>"
start on desktop-lock
stop on desktop-unlock
respawn
exec /usr/lib/unity/unity-panel-service --lockscreen-mode
您可能已经猜到了,此作业在屏幕锁定时运行。这为您提供了几个选项:
检查行中的命令是否exec
正在运行:
检查是否/usr/lib/unity/unity-panel-service
正在使用选项运行--lockscreen-mode
。请注意,它unity-panel-service
始终在运行,但当您锁定屏幕时,将使用该选项启动另一个实例。因此,如下所示:
if pgrep -cf lockscreen-mode
then
# do stuff
fi
pgrep -f
搜索完整的命令行,因此我们可以搜索选项。
我认为在这种情况下手册页是unity-panel-service
错误的或过时的。它说:
unity-panel-服务不采取任何选择。
使用 Upstart 作业
你可以使用上面的作业配置来编写你的 Upstart 作业。创建一个会话作业(说some-job
)~/.config/upstart/some-job.conf
包含:
description "Some script to be run when screen gets locked"
start on desktop-lock
stop on desktop-unlock
script
# do stuff
end script
start
可以使用将和事件交换的逆脚本stop
来在屏幕解锁时运行。