帮我写个脚本,每天两小时关机
- keky
- 帖子: 231
- 注册时间: 2007-12-20 15:08
- 来自: harbin
- 联系:
- daf3707
- 论坛版主
- 帖子: 12739
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
- cnkilior
- 论坛版主
- 帖子: 4984
- 注册时间: 2007-08-05 17:40
我懒了,本来写了一个,但发现不好就删掉了。
现在又有了新想法。
但要确定你的意图。但是我的只能工作在tty、pts中,属于命令行脚本。
1、你要在5分钟前有提示
2、如果你想不在2小时后关机,就需要互交(read)
---
于是程序应该是后台运行,并且要在需要互交时变成前台。这是设计的难点!
----
首先应该判断上一次是否正常结束了。
当然为了程序不出错最好能在开头判断~/.ifpoweroff是否存在。
然后开始倒数读秒
我使用的是
的结构
到了还剩5分钟时也就是6900秒后给出一个echo提示结束工作。(当然5分钟保存作业,时间太长)
等到了2小时,这个时候要把程序提到前台(原先程序是在后台的,不然会影响工作)
这里我用了一个小窍门。
把这个程序放到~/.bashrc里面调用并后台执行。
当两小时到了,则脚本用
$PIDofSHELL要自己去取!
在此之前,bash在bashrc中已经执行了
这样就把这个脚本提到前台了。于是就能read了!
代码没有完成,懒得完成,这种事情还是要自觉。程序这种东西很容易钻空子。例如,你在5分钟提示后就关机了,程序就那你没有办法了。当然kill他,可以捕获信号。
---
但有了图形界面这种程序就显得毫无意义!
现在又有了新想法。
但要确定你的意图。但是我的只能工作在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
}
然后开始倒数读秒
我使用的是
代码: 全选
if sleep xxx
then
CMD
fi
到了还剩5分钟时也就是6900秒后给出一个echo提示结束工作。(当然5分钟保存作业,时间太长)
等到了2小时,这个时候要把程序提到前台(原先程序是在后台的,不然会影响工作)
这里我用了一个小窍门。
把这个程序放到~/.bashrc里面调用并后台执行。
当两小时到了,则脚本用
代码: 全选
kill -30 $PIDofSHELL
在此之前,bash在bashrc中已经执行了
代码: 全选
trap "fg 1" 30
代码没有完成,懒得完成,这种事情还是要自觉。程序这种东西很容易钻空子。例如,你在5分钟提示后就关机了,程序就那你没有办法了。当然kill他,可以捕获信号。
---
但有了图形界面这种程序就显得毫无意义!
-
- 帖子: 333
- 注册时间: 2007-05-13 15:20
看看这个, 还没测试过, 可能还要修改一下
atstart放到到/etc/init.d里, 用update-rc.d设置一下
cron放到某个目录,加入到cron就行了
依赖perl和zenity
atstart放到到/etc/init.d里, 用update-rc.d设置一下
cron放到某个目录,加入到cron就行了
依赖perl和zenity
- 附件
-
- script.tar.bz2
- (850 Bytes) 已下载 49 次
- hellojinjie
- 帖子: 1150
- 注册时间: 2007-09-14 21:03
- 来自: 浙江
- yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11