分页: 2 / 2

发表于 : 2008-09-09 0:09
想入非非
建议LZ每天用2小时学习bash编程

发表于 : 2008-09-10 19:57
keky
其实想控制上机时间很简单吗。。每次开机就: shutdown hh:mm 计算一下时间就ok。不用非得什么shell脚本

发表于 : 2008-09-10 20:32
daf3707
bones7456 写了:
3,若当天开机时间累计超过二小时,则第二天不能开机
谁能做到这点?最多做到一进系统就退出吧。。。
这超过两个小时的功能,需要CIH一般的功能才行

发表于 : 2008-09-10 23:09
zcg0696
没什么用,这种事要靠自已的努力,程序用不上两天估计你自已就给删了

发表于 : 2008-09-11 15:52
cnkilior
我懒了,本来写了一个,但发现不好就删掉了。
现在又有了新想法。
但要确定你的意图。但是我的只能工作在tty、pts中,属于命令行脚本。
1、你要在5分钟前有提示
2、如果你想不在2小时后关机,就需要互交(read)

---
于是程序应该是后台运行,并且要在需要互交时变成前台。这是设计的难点!

----
首先应该判断上一次是否正常结束了。

代码: 全选

NowDate=`date|awk '{print $3}'`
Yesdate=$(($NowDate-1))
FileDate=`awk '{print $1}' < ~/.ifpoweroff`
Ifdown=`awk '{print $2}' < ~/.ifpoweroff`

trap "echo You must answer the question" 2 15
panduan()
{
    if [ $FileDate == $NowDate ]
    then
	poweroff
    elif [ $FileDate == $Yesdate ]&&[ $Ifdown == 1 ]
    then
	poweroff
    fi
}
当然为了程序不出错最好能在开头判断~/.ifpoweroff是否存在。
然后开始倒数读秒
我使用的是

代码: 全选

if sleep xxx
then
CMD
fi
的结构
到了还剩5分钟时也就是6900秒后给出一个echo提示结束工作。(当然5分钟保存作业,时间太长)

等到了2小时,这个时候要把程序提到前台(原先程序是在后台的,不然会影响工作)

这里我用了一个小窍门。

把这个程序放到~/.bashrc里面调用并后台执行。
当两小时到了,则脚本用

代码: 全选

kill -30 $PIDofSHELL
$PIDofSHELL要自己去取!

在此之前,bash在bashrc中已经执行了

代码: 全选

trap "fg 1" 30
这样就把这个脚本提到前台了。于是就能read了!

代码没有完成,懒得完成,这种事情还是要自觉。程序这种东西很容易钻空子。例如,你在5分钟提示后就关机了,程序就那你没有办法了。当然kill他,可以捕获信号。

---
但有了图形界面这种程序就显得毫无意义!

发表于 : 2008-09-11 15:58
xiooli
ls,提示信息和选择信息可以用zenity弹出窗口,不用前台后台的提来提去。

发表于 : 2008-09-11 17:04
cnkilior
不好意思,我没有那么高级的工具。。


rh9。

发表于 : 2008-09-11 18:03
xf3i
workrave

发表于 : 2008-09-11 18:58
chasye
看看这个, 还没测试过, 可能还要修改一下

atstart放到到/etc/init.d里, 用update-rc.d设置一下
cron放到某个目录,加入到cron就行了

依赖perl和zenity

发表于 : 2008-09-11 22:01
hellojinjie
谢谢各位,这几天在看 shell script ,只是现在还不足以看懂各位的脚本,

有个问题就是 poweroff 是要root 才能执行的.
我记得论坛中有个帖子是讨论过这个,不过忘了收藏了,现在找不到了

发表于 : 2008-09-12 0:44
hgshlg
xf3i 写了:workrave
:D

发表于 : 2008-09-12 4:16
yjcong
cnkilior 写了:不好意思,我没有那么高级的工具。。


rh9。
rh9再老也应该有xmessage吧
有个问题就是 poweroff 是要root 才能执行的.
好像给普通用户加个权限就可以运行了

发表于 : 2008-09-12 17:44
lovexiaoo
关键是自律,不然就卖电脑吧