Linux定时任务的使用

ruyangit 9年前

来自: http://my.oschina.net/xiongyuanliang/blog/608802


  Linux下的定时任务,crontab是一个非常有用的命令(大部分的自动完成的工作都需要用到自动执行命令)

  这里演示一个非常简单的定时任务设置。(用来做以后所有复杂的自动化工作的前提)。

  先写个简单的用来测试的脚本(我们定义其为cro.sh 主要就是把当前时间写入到一个1.txt文本里面)

  #!/bin/bash

  echo   `date`>>/home/test/1.txt

PS:在命令行里面执行命令需要``这样的格式,命令就会运行。

然后可以切换到 

vim  /etc/crontab


 

用法在这个文件里已经有详细的说明 

从左往右依次代表着 分  时 天 月 星期的控制

如果是*/1则代表频率。

这里为了测试,我将其设置为 1分钟刷新自动运行一次。(当然这里直接写的时候,脚本无法自动直接运行,需要加上sh

编辑自动执行任务,则有:

Crontab -e (在看到的自动执行任务里,我们加上sh   就是直接让sh运行cro.sh)


 

然后切换到前端  用crontab -l 查看当前的定时任务


 

可以看到自动执行任务已经添加完成,监测

tail -f 1.txt


 

可以看到当前已经开始正确的进行了记录。

如果没有自动重启任务:service crond restart(可用该命令对服务进行重启)

实用性自动任务加强实行脚本应用场景举例:

 

1.自动备份数据库(按照年月日进行备份指定的数据库到指定的目录)

#!/bin/bash

Mysqldump -uroot -proot test | gzip > /home/bak/test`date +%Y-%m-%d_%H%M%S`.sql.gz

将其保存为home/bak/baksql.sh

crontab -e

*  *  1 *  *  sh /home/bak/baksql.sh 

这样就完成了一天自动备份一次数据库test

 

2.检测hhvm脚本是否一直在自动运行

#!/bin/sh

#查所有的进程找到了hhvm 

process=`ps aux | grep hhvm | grep -v grep|wc -l`;

if [ "$process" -lt 1 ]; then

       /usr/local/bin/hhvm --mode daemon --user www --config /etc/hhvm/server.ini --config /etc/hhvm/php.ini --config /etc/hhvm/config.hdf

else

      echo "process hhvm exsits";

fi