LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: sd02

怎样控制登录和上网时间?

[复制链接]
发表于 2009-12-28 13:27:56 | 显示全部楼层
timeoutd作为daemon,优先级比较低,如果有其他程序运行,会导致失效。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-13 00:20:47 | 显示全部楼层
很惭愧这么久了现在才完成这个事,使用cron其实不复杂。

使用cron每隔2分钟执行一次脚本,判断如果上机时间到,就先提醒再自动关机
儿子的用户名为joe,步骤如下:

(1)  在/etc/cron.d/目录下增加文件mycron,内容如下:
  1. */2 * * * * root /root/mycron.sh
复制代码
表示每2分钟执行一次脚本/root/mycron.sh, 以root的身份执行

(2) 脚本/root/mycron.sh的内容如下:
  1. #!/bin/sh
  2. week=`date +%w` #0..6 星期几, 0表示星期天
  3. warn_t=15  #提醒时间,如果脚本每2分钟执行一次,这里设置提醒时间是30分钟
  4. poff_t=18  #关机时间,36分钟
  5. if test $week -eq 0 || test $week -eq 6; then #如果是周末,可以延长至1小时
  6.         warn_t=30
  7.         poff_t=33
  8. fi
  9. user=joe
  10. login=`users | grep $user` #判断有没有登录,不论那个用户登录,这个脚本都同样执行,所以要判断
  11. outfile=/root/cron.out  # 周期性地输出一行数据到该文件中,根据行数可判断登录时间
  12. audiofile=/root/13.wav  #提醒音乐
  13. if test "$login" != ""; then  #如果joe登录了
  14.         today=`date -u +%F`   # 取今天的日期
  15.         date -u +%F\ %T >> $outfile # 把今天的日期和时间写入文件,
  16.         ntime=`grep $today $outfile | wc -l` #今天写入的次数
  17.         if test $ntime -eq $warn_t; then # 如果到了提醒次数
  18.                 mplayer $audiofile  # 播放音乐
  19.         fi
  20.         if test $ntime -ge $warn_t; then # 如果到了或者超过了提醒次数
  21.                 if test $ntime -ge $poff_t; then #如果到了关机次数
  22.                         sudo poweroff # 关机
  23.                 else
  24.                         sudo -H -u $user DISPLAY=:0.0 xclock # 在joe的桌面上显示一个时钟, 一定要加-H参数
  25.                 fi
  26.         fi
  27. fi
复制代码

体会:
(1) 在/etc/cron.d/目录下加的文件属于系统crontab文件,格式中有user项,指出以谁的身份执行命令,每个用户还可以有自己的crontab文件,用crontab -e命令编辑,没有user项。 每个用户的crontab文件在开机后都被加载执行,而不是仅仅在该用户登录时才加载执行,所以必须判断当前的登录用户是谁

(2) 在joe的桌面上显示一个时钟,也就是执行有界面的程序,要设置DISPLAy=:0.0环境变量。如果以root的身份执行,使用sudo, 还要用-H参数才行,这是试出来的

(3) 如果在joe的crontab中以joe 的身份执行自动关机,因为没有权限,要用命令sudo poweroff, 并且      在/etc/sudoers中增加一行:
  1. joe  ALL = NOPASSWD: /sbin/poweroff
复制代码

以后再加上网时间的控制。谢谢各位的回贴!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表