crontab 定时执行shell脚本

问题描述

最近的工作,需要做一个给预约的用户在预约到期的前两个小时进行消息的推送,所有就想到用服务器定时器任务做了,纯小白,mark一下最简单的流程。

1、环境配置

web容器:Apache
php版本:5.5.3x
python版本:2.6
服务器:centos6.5

2、编写shell脚本

写个简单循环好了:

#! /bin/sh
A='hello world'
echo 'A is :'
echo $A
for loop in 1 2 3 4 5 6 7 8 9 10
do
    echo "loop is : $loop"
done

命令为hi.sh。存放的路径为/var/www/html/myshell
第一行是sh脚本的执行器的位置。$符号是shell脚本中,用于取得变量的。loop那边就是循环了。

3、开始CRONTAB任务

1.先检查服务器上是否有crontab服务,在命令行下面写services 然后tab就可以看到现在的任务了,如果没有的话,就根据自己的服务器的系统去安装好了。注意版本的对应。这是centos安装的命令:`
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs`
2.下面是有关crontab的一些说明

1>vixie-cron软件包是cron的主程序;crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:
chkconfig --level 35 crond on

2>crontab使用
crontab的格式什么的我就不多说了,自己可以百度一下。我主要记录一下最简单的使用方式吧。
先查看crontab任务,显示没有任务
![这里写图片描述](http://img.blog.csdn.net/20170303114024038?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWlfYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
创建任务和查看,此处的参数格式一定要写对,并且执行的脚本文件要写绝对路径。
![这里写图片描述](http://img.blog.csdn.net/20170303114134421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWlfYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
删除任务
![这里写图片描述](http://img.blog.csdn.net/20170303114235563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWlfYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
tips:
写完定时任务,记得重启crond服务:service crond restart
3>查看crontab任务的运行状态,我们可以```vim /var/log/cron```

这里存放的是crontab的日志文件

footer

在应该是最简(ruo)单(zhi)的方法了吧,然后我想执行一个服务器上的php文件,就让.sh文件去请求就好了。我是这么想的,不过我觉得如果用Python来写,应该会更棒吧。有机会去尝试一下。

添加新评论