LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2769|回复: 28

如何写一个cron执行的关机脚本?[基本解决]

[复制链接]
发表于 2004-4-10 09:51:25 | 显示全部楼层 |阅读模式
我们公寓周五,周六晚上23点统一断电,其他时候是22点45断电,我想在每天断电前电脑能自动提醒我要断电了,比如38分的时候提醒我,然后在41分的时候倒计时10秒钟自动关机,在倒计时的10秒内可以按任意键取消关机动作。在这种情况下,我想将所有的这些功能写成一个脚本,然后让crontab去执行,该脚本能自动判断星期几,并判定是22点还是23点45分断电,并实现以上功能。
不知道这个脚本能否实现,请大虾帮忙。不甚感谢。
发表于 2004-4-10 10:17:12 | 显示全部楼层
我觉得是不是可以这样:
写一个脚本,判断星期,然后提示并决定是否决定关机时间,
然后再把这个脚本交给crontab在每天晚上22点和23点45执行这个脚本(至于是不是周末,要不要关机由脚本控制,crontab只是调度这个脚本)。
 楼主| 发表于 2004-4-10 10:28:58 | 显示全部楼层
最初由 hackgou 发表
我觉得是不是可以这样:
写一个脚本,判断星期,然后提示并决定是否决定关机时间,
然后再把这个脚本交给crontab在每天晚上22点和23点45执行这个脚本(至于是不是周末,要不要关机由脚本控制,crontab只是调度这个脚本)。


谢谢,我觉得这种方法是可行的,就是让crontab每天晚上两次执行脚本(如果第一次没有关机的话),是这个意思吧。
可是让系统倒计时关机,并可以按任意键取消的功能该怎么实现呢?
发表于 2004-4-10 10:51:07 | 显示全部楼层
我看任意键没有什么太大的用途吧。因为默认情况为关机,确认框比较合适吧。
由于不熟悉xdialog,就给出一个dialog+konsole的方法吧。

  1. [root@home root]# cat sdit
  2. #!/bin/sh
  3. dialog --timeout 10 --yesno 'Reboot after 10 secs!' 5 50
  4. if [ $? -eq 1 ];then
  5.         echo Cancel
  6.         exit 1
  7. else
  8.         command init 6
  9. fi
  10. [root@home root]# cat my.cron
  11. 41 22 * * * konsole --noclose -e /your/path/sdit
  12. [root@home root]# crontab my.cron
复制代码
 楼主| 发表于 2004-4-10 13:40:19 | 显示全部楼层
最初由 home_king 发表
我看任意键没有什么太大的用途吧。因为默认情况为关机,确认框比较合适吧。
由于不熟悉xdialog,就给出一个dialog+konsole的方法吧。
  1. [root@home root]# cat sdit
  2. #!/bin/sh
  3. dialog --timeout 10 --yesno 'Reboot after 10 secs!' 5 50
  4. if [ $? -eq 1 ];then
  5.         echo Cancel
  6.         exit 1
  7. else
  8.         command init 6
  9. fi
  10. [root@home root]# cat my.cron
  11. 41 22 * * * konsole --noclose -e /your/path/sdit
  12. [root@home root]# crontab my.cron
复制代码


谢谢斑竹。
我单独执行sdit的时候,当点击yes得时候不能关机啊,并出现提示:/home/litty/bin/sdit: line 8: init: command not found
发表于 2004-4-10 13:43:49 | 显示全部楼层
用poweroff 或是/sbin/shutdown -h now 试试。
发表于 2004-4-10 13:57:36 | 显示全部楼层
最初由 home_king 发表
我看任意键没有什么太大的用途吧。因为默认情况为关机,确认框比较合适吧。
由于不熟悉xdialog,就给出一个dialog+konsole的方法吧。
  1. [root@home root]# cat sdit
  2. #!/bin/sh
  3. dialog --timeout 10 --yesno 'Reboot after 10 secs!' 5 50
  4. if [ $? -eq 1 ];then
  5.         echo Cancel
  6.         exit 1
  7. else
  8.         command init 6
  9. fi
  10. [root@home root]# cat my.cron
  11. 41 22 * * * konsole --noclose -e /your/path/sdit
  12. [root@home root]# crontab my.cron
复制代码
else
        command init 6
fi
应该用:
init 6 #重启
init 0 #关机

reboot
halt -p
发表于 2004-4-10 14:11:08 | 显示全部楼层
嗯,奇怪?我用command是为了避免使用与init同名脚本或假名的干扰啊。你用的是bash嘛?
 楼主| 发表于 2004-4-10 14:13:45 | 显示全部楼层
最初由 home_king 发表
嗯,奇怪?我用command是为了避免使用与init同名脚本或假名的干扰啊。你用的是bash嘛?


是啊,我是用的bash。
有什么不一样吗
 楼主| 发表于 2004-4-10 14:14:57 | 显示全部楼层
最初由 javalee 发表
应该用:
init 6 #重启
init 0 #关机

reboot
halt -p


谢谢。

用halt -p成功了。

谢谢两位斑竹
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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