[已解决]shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

sh/bash/dash/ksh/zsh等Shell脚本
回复
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

[已解决]shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#1

帖子 fdl19881 » 2012-04-01 17:16

我在学校,实验室和宿舍联网用的都是用的一个账户登陆的 (不能同时登)

这种情况下,如果我忘了在离开实验室前,把mentohust程序退出的话,那么我回到宿舍就无法上网了。

我在windows下用的是计划任务,然后设置15分钟空闲时就将mentohust进程杀死。

在linux下的话,因为ubuntu默认的是隔多久时,屏幕会自动锁定。这应该也是检测的空闲时间。
我想用shell脚本实现如:屏幕自动锁定后,或者15分钟空闲时间后,就直接杀死mentohust进程

请问如何检测屏幕锁定没有,或者说检测空闲时间长度。
主要就是前面的。。

代码: 全选

MENTO=`ps ax | grep mentohust`
TIMES=`echo $MENTO | wc -l`
if [ "$TIMES" -gt 1 ]; then
	PID=`echo $MENTO | awk '{if(NF=1)print $1}'`
	kill -9 $PID
fi
求各位指导.
上次由 fdl19881 在 2012-04-01 21:33,总共编辑 1 次。
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#2

帖子 fdl19881 » 2012-04-01 17:24

比如屏幕锁定的时候,会不会出现一个用来锁定屏莫的进程?? 然后循环检测这个进程,检测到时就执行杀mentohust的脚本.
或者ubuntu直接就提供了这个功能?
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell如何检测到当前用户锁定屏幕状态?

#3

帖子 枫叶饭团 » 2012-04-01 17:29

bash好像有个TMOUT
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

Re: shell如何检测到当前用户锁定屏幕状态?

#4

帖子 fdl19881 » 2012-04-01 17:37

枫叶饭团 写了:bash好像有个TMOUT
我查了下,那个是空闲时间到了后就会注销登陆(logout吧), 然后再配合~/.profile_logout文件好像是可以达到这种效果。
等会试试,

但有没有更好的方法 , 不使当前用户注销的方法 ?
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#5

帖子 lilydjwg » 2012-04-01 17:38

fdl19881 写了:比如屏幕锁定的时候,会不会出现一个用来锁定屏莫的进程?? 然后循环检测这个进程,检测到时就执行杀mentohust的脚本.
或者ubuntu直接就提供了这个功能?
屏幕保护进程是一直在运行的。参考我这个脚本: https://github.com/lilydjwg/winterpy/bl ... xe/screend
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#6

帖子 fdl19881 » 2012-04-01 17:47

lilydjwg 写了:
fdl19881 写了:比如屏幕锁定的时候,会不会出现一个用来锁定屏莫的进程?? 然后循环检测这个进程,检测到时就执行杀mentohust的脚本.
或者ubuntu直接就提供了这个功能?
屏幕保护进程是一直在运行的。参考我这个脚本: https://github.com/lilydjwg/winterpy/bl ... xe/screend
我好像看懂了点实现功能, 就是这种功能。但是python不会呀。shell也学了3月,也没怎么用。
大哥,可不可以帮我改一下,只要空闲时间比如15分钟到了,就将mentohust这个进程杀死的脚本
谢谢
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#7

帖子 lilydjwg » 2012-04-01 18:06

fdl19881 写了: 我好像看懂了点实现功能, 就是这种功能。但是python不会呀。shell也学了3月,也没怎么用。
大哥,可不可以帮我改一下,只要空闲时间比如15分钟到了,就将mentohust这个进程杀死的脚本
谢谢
我不如拿 C 给你写个呢。。你会 C 不?
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#8

帖子 枫叶饭团 » 2012-04-01 18:29

如果用c的话,是不是用select检测io就行啦
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#9

帖子 lilydjwg » 2012-04-01 18:38

枫叶饭团 写了:如果用c的话,是不是用select检测io就行啦
XScreenSaverQueryInfo
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#10

帖子 fdl19881 » 2012-04-01 21:32

lilydjwg 写了:
枫叶饭团 写了:如果用c的话,是不是用select检测io就行啦
XScreenSaverQueryInfo
基本解决了,,但还有个问题请教下
方法是使用gnome-screensaver-command -q查询屏幕保护程序的状态
然后比较产生的字符串为活动时,即是运行结束进程的时候了
完整的脚本见:http://blog.csdn.net/fdl19881/article/details/7420374

你说的XScreenSaverQueryInfo是linux的哪个API, 函数名是什么?
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#11

帖子 lilydjwg » 2012-04-01 21:48

fdl19881 写了:
lilydjwg 写了:
枫叶饭团 写了:如果用c的话,是不是用select检测io就行啦
XScreenSaverQueryInfo
基本解决了,,但还有个问题请教下
方法是使用gnome-screensaver-command -q查询屏幕保护程序的状态
然后比较产生的字符串为活动时,即是运行结束进程的时候了
完整的脚本见:http://blog.csdn.net/fdl19881/article/details/7420374

你说的XScreenSaverQueryInfo是linux的哪个API, 函数名是什么?
它就是函数名,XScreenSaver 的,man 文档里有。
fdl19881
帖子: 26
注册时间: 2009-01-11 19:53

Re: shell如何检测到当前用户锁定屏幕状态 或者 空闲多久后执行脚本的功能

#12

帖子 fdl19881 » 2012-04-01 22:04

lilydjwg 写了:
fdl19881 写了:
lilydjwg 写了:
枫叶饭团 写了:如果用c的话,是不是用select检测io就行啦
XScreenSaverQueryInfo
基本解决了,,但还有个问题请教下
方法是使用gnome-screensaver-command -q查询屏幕保护程序的状态
然后比较产生的字符串为活动时,即是运行结束进程的时候了
完整的脚本见:http://blog.csdn.net/fdl19881/article/details/7420374

你说的XScreenSaverQueryInfo是linux的哪个API, 函数名是什么?
它就是函数名,XScreenSaver 的,man 文档里有。
嗯,网上找到了,ubuntu11.10的man里面好像没有。 谢了哈
回复