如何在屏幕锁定/解锁时运行命令或脚本?
我正在寻找一种存储锁定/解锁屏幕时间的方法。
A=$(date) echo $A >> $HOME/time_xprofile
我尝试了什么:
$HOME/.bashrc $HOME/.bash_logout $HOME/.bash_prompt $HOME/.xprofile
然后我锁定屏幕并检查文件是否出现并且每次都失效。 我该如何检查时间?
以下脚本将在您家中的文件time_xprofile
中写入锁定/解锁时间。
#!/bin/bash dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \ ( while true do read X if echo $X | grep "boolean true" &> /dev/null; then echo "locking at $(date)" >> $HOME/time_xprofile elif echo $X | grep "boolean false" &> /dev/null; then echo "unlocking at $(date)" >> $HOME/time_xprofile fi done )
保存脚本。 给它执行权限。
chmod +x script.sh
怎么跑
./script.sh &
注意脚本应该在后台运行。 不要杀了它。 如果在脚本在后台运行时将屏幕锁定/解锁,则锁定/解锁的时间将记录在您家中的time_xprofile
文件中。 可以使用它在屏幕锁定/解锁时运行一些命令或脚本。
请注意,如果您关闭当前终端,您的脚本将被终止。 您可以使用
nohup ./script.sh &
然后即使关闭终端后它也会继续运行。
如何杀死脚本
要终止进程,请在终端中使用
ps ax| grep "[s]cript.sh" | cut -d' ' -f2 | xargs kill
以上脚本的灵感来自于这个答案
在ubuntu 14.04中,用于屏幕锁定解锁的DBus事件已更改,用于绑定到屏幕锁定和解锁事件的新脚本如下所示
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \ ( while true; do read X if echo $X | grep "desktop-lock" &> /dev/null; then SCREEN_LOCKED; elif echo $X | grep "desktop-unlock" &> /dev/null; then SCREEN_UNLOCKED; fi done )
将SCREEN_LOCKED和SCREEN_UNLOCKED替换为您需要做的事情。