分页: 1 / 2

帮我写个脚本,每天两小时关机

发表于 : 2008-09-06 21:00
hellojinjie
网络的诱惑太大了

1,累计计算每天的开机时间(我可能上午开一个小时,晚上开一个小时)

2,累计时间到达两小时之前5分钟,跳出提示框提示,以后每五分钟提示一次

3,若当天开机时间累计超过二小时,则第二天不能开机

thanks in advance

发表于 : 2008-09-06 21:13
eexpress
*/5 * * * * 5分钟处理.bash

发表于 : 2008-09-06 21:14
delectate
eexpress 写了:*/5 * * * * 5分钟处理.bash
:em28

发表于 : 2008-09-06 21:23
hellojinjie
eexpress 写了:*/5 * * * * 5分钟处理.bash
要是我自己会shell编程,我就不会在这里求助了

发表于 : 2008-09-06 22:34
poet
hellojinjie 写了:
eexpress 写了:*/5 * * * * 5分钟处理.bash
要是我自己会shell编程,我就不会在这里求助了
他贴的是 crontab 配置文件,不是shell编程

Re: 帮我写个脚本,每天两小时关机

发表于 : 2008-09-06 22:48
sinyadvan
hellojinjie 写了: 3,若当天开机时间累计超过二小时,则第二天不能开机
thanks in advance
何苦呢,何必呢,万一你有急事必须用机子怎么 办。根本不需要写这个脚本,自律。

发表于 : 2008-09-06 22:57
hellojinjie
poet 写了:
hellojinjie 写了:
eexpress 写了:*/5 * * * * 5分钟处理.bash
要是我自己会shell编程,我就不会在这里求助了
他贴的是 crontab 配置文件,不是shell编程
:shock: 惭愧,有点看不懂

发表于 : 2008-09-06 23:03
eexpress
其实也没错。剩下的是要你自己编程bash。
如果你通过这次,折腾下,学会了bash编程。你也不需要这bash了啊。呵呵。
或者,你找到有5个人同意,需要这脚本,我就来写。

Re: 帮我写个脚本,每天两小时关机

发表于 : 2008-09-06 23:18
hellojinjie
sinyadvan 写了:
hellojinjie 写了: 3,若当天开机时间累计超过二小时,则第二天不能开机
thanks in advance
何苦呢,何必呢,万一你有急事必须用机子怎么 办。根本不需要写这个脚本,自律。
我要是有这个毅力就好了

发表于 : 2008-09-06 23:21
xiooli
用uptime看登录时间呗,到2h就关机。

发表于 : 2008-09-06 23:25
hellojinjie
eexpress 写了:或者,你找到有5个人同意,需要这脚本,我就来写。
马甲算吗?

ee 拜托了,就一个小脚本,你只要随随便便动下手指头就写好了的。。

发表于 : 2008-09-06 23:39
hellojinjie
xiooli 写了:用uptime看登录时间呗,到2h就关机。
我要计算是一天累计的开机时间,我可能会上午开一会电脑,晚上再开会电脑。

我是这样想的:
1.开机的时候得到开机时间,记录在一个文件中,

代码: 全选

2008-09-06 22:20  up
2.开机五分钟后将现在时间记录在文件中,以后每五分钟更新这个时间

代码: 全选

2008-09-06 22:20  up
2008-09-06 22:25 now
并与开机时间比较,是否超过1小时55分,如果是就提醒关机,以后每隔五分钟提醒一次

3.每次开机检测文件中 now 的时间记录,将 now 改为 shutdown ,
并计算前一天的开机时间,若超过2小时则halt,没超过就记录现在时间,注意同一天可能会有多个up 和shutdown
(没有用关机脚本将 now 改为 shutdown 是因为可能关机是非正常关机)

代码: 全选

2008-09-06 22:20  up
2008-09-06 22:25  shutdown
2008-09-07 20:35  up
不过要等我写出来就要 n 个星期后

发表于 : 2008-09-06 23:45
hellojinjie

代码: 全选

jj@hellojinjie:~/MyWork/java$ uptime
 23:45:35 up  3:43,  5 users,  load average: 0.31, 0.26, 0.30
ee 救救我吧,今天又差不多玩了四个钟头了

发表于 : 2008-09-06 23:59
yjcong
比较笨的方法, 我这crontab有问题, 用的是“at”.

保存为 /root/times .你每次开机手动运行, 或设为开机自动运行(我不知道该如何搞). 可以选A方案, 前一天超过120min,第2天不能用。 或B方案,每天150min。

代码: 全选

#!/bin/bash
##################
now=`uptime|awk -F"up" '{print $2}'|awk -F"," '{print$1}'`
h=`echo $now|awk -F":" '{print $1}'`
m=`echo $now|awk -F":" '{print $2}'`
##################
date_o=`less $HOME/times_120data|head -n1`
date_n=`date +%y%m%d` 
if [ "$date_o" != "$date_n" ];then
   tem="$date_n""-""$date_o"
   dat=`echo $tem|xargs -i awk 'BEGIN{print {}}'`
   tim_n=`echo $h"*"60"+"$m|xargs -i awk 'BEGIN{print {}}'`
   #################
   ###AAAAAAAAAAAAAA
   if (( $dat == 1 )) && (( $tim_n > 120 ));then
       poweroff
   fi
   ###AAAAAAAAAAAAAA
   #################
else
   tim_o=`less $HOME/times_120data|tail -n1`
   tim_n=`echo $h"*"60"+"$m+$tim_o|xargs -i awk 'BEGIN{print {}}'`     
fi
##################
date +%y%m%d > $HOME/times_120data
echo $tim_n >> $HOME/times_120data 
##################
###BBBBBBBBBBBBBBB
#if (( $tim_n >145 ));then
#poweroff
#fi
###BBBBBBBBBBBBBBB
##################
if (( "$tim_n" > 109 ));then
export DISPLAY=:0. && xmessage -c "=============time is up=================" -button you,need,to,turn,off,the,computer
fi  
##################
cont="export DISPLAY=:0. && /root/times" 
ontop="sleep 1 &&export DISPLAY=:0. && wmctrl -r xmessage -b toggle,above" 
echo $cont|at now + 5min
echo $ontop|at now +5min

发表于 : 2008-09-08 21:17
bones7456
3,若当天开机时间累计超过二小时,则第二天不能开机
谁能做到这点?最多做到一进系统就退出吧。。。