LinuxSir.cn,穿越时空的Linuxsir!

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

求教:一个定时关机的脚本

[复制链接]
发表于 2005-8-26 23:05:21 | 显示全部楼层 |阅读模式
用cut -c1-3 date可以输出今天是星期几,我想用if语句判断,例如:如果cut -c1-3 date输出满足Fri,就执行一系列命令,例如at命令,请问如何书写if语句[]里面的内容?谢谢!
发表于 2005-8-26 23:11:03 | 显示全部楼层
DATES=`cut -c1-3 date`
if [ $DATES == "Fri" ]
then
       #do something
fi
回复 支持 反对

使用道具 举报

发表于 2005-8-26 23:14:10 | 显示全部楼层
d=$(date)
if [ ${d:0:3} = "Fri"]
then

这样就可以了,我测试了,应该可以吧。 我也也是个菜鸟。
回复 支持 反对

使用道具 举报

发表于 2005-8-26 23:25:50 | 显示全部楼层
[PHP]
      #!/usr/bin/env bash
      
       d=$(date)
       if [ ${d:0:3} = "五" ]
       then
           echo $(ls)
       fi
[/PHP]


我测试了,简单,你要干什么  只要 echo $(shutdown -h 23:30)  就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-26 23:56:10 | 显示全部楼层
要做一些判断,就是星期天至星期四,在23:25关机,周五周六在23:55关机,在关机之前五分钟要用wall命令向所有控制台发送即将关机的信息,提示用户保存工作。然后在上面两个时间关机。我打算写一个脚本,这个脚本在/etc/rc.local里面调用,用at命令在关机之前五分钟提示wall信息,再用shutdown -h HH:MM加入自动关机时间。但是有一个小问题,就是使用了一次at之后,如果at的任务没有完成,在当日重新启动机器,那么就又一次了运行脚本,相当于at又添加了一次,这样,如果重新启动很多次,那就会有很多个提示信息在指定时间出现在屏幕上。我打算用一个文件data作标记,这个里面是星期,例如Fri,如果启动时候,脚本检测到这个文件的内容和今天的星期相同,那么就不添加关机提示和关机命令,如果不相同,那么修改这个文件,加入今天的星期几,然后添加关机命令。
不知道我这个方法是不是很愚蠢,请指教!谢谢!
回复 支持 反对

使用道具 举报

发表于 2005-8-27 08:32:07 | 显示全部楼层
at不是很灵活,优先考虑cron的说。

程序考虑中…………………………(偶也是菜鸟,嘿嘿)

[PHP]#!/usr/bin/env bash

d=$(date)
shutd=${d:0:3}
echo $shutd

if [ $shutd = "五" -o $shutd = "六" ]
then
    echo $(wall mess)
    echo $(shutdown -h -t300 23:55 "于23:55关闭计算机")
elif [ $shutd = "日" -o $shutd = "一" -o $shutd = "二" -o $shutd = "三" -o $shutd ="四"]
then
    echo $(wall mess)
    echo $(shutdown -h -t300 23:25 "于23:55关闭计算机" &)
fi
[/PHP]

mess文本需要自己建一个


Cron每分钟只是检查,并不是执行,到了时间才会执行。 Cron的消息都是以邮件的形式发给用户的。

我把这个任务放到Cron中,但是屏幕没有显示信息,wall的功能被cron以邮件的形式给了用户。关机倒是在运行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-27 09:39:18 | 显示全部楼层
Post by mantou
at不是很灵活,优先考虑cron的说。

程序考虑中…………………………(偶也是菜鸟,嘿嘿)

cron是没一分钟检测一次,这样来之行任务,我这个任务只需要执行一次而已吧。
回复 支持 反对

使用道具 举报

发表于 2005-8-27 10:11:14 | 显示全部楼层
迷糊 ~~~ING!~~~~!~!~~~~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-27 10:34:05 | 显示全部楼层
Post by derry
迷糊 ~~~ING!~~~~!~!~~~~~~~~

是我说的不清楚吗?
回复 支持 反对

使用道具 举报

发表于 2005-8-27 10:36:59 | 显示全部楼层
最后一个比较笨的办法,就是去掉脚本中的wall 语句

vim /etc/crontab  添加

50  23    * * 5-6 root    wall /root/shell/mess
55  23    * * 5-6 root    /root/shell/9
20  23    * * 0-4 root    wall /root/shell/mess
25  23    * * 0-4 root    /root/shell/9

这也是我笨人的办法,试过了一下,wall可以显示信息

回复 支持 反对

使用道具 举报

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

本版积分规则

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