Linux 执行定时任务 shell脚本
在Linux中,周期执行的任务一般由cron这个守护进程来处理,cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
一、cron服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
二、crond服务
安装crontab:
yum install crontabs
服务操作说明:
/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
案例一:
1、shell脚本存放的位置在 /usr/local/sbin路径下面
新建一个bak.sh
#进入到根目录
cd /usr/local/sbin
vi back.sh
2、将shell脚本加入定时任务
crontab -e
#每天0点自动执行脚本
0 0 * * * /usr/local/sbin/bak.sh
案例二:
1.声明一下我安装的lnmp环境,shell脚本存放的位置在 /usr/local/sbin路径下面
新建一个test.sh
echo "yes" >> /home/abc.txt
2.将shell脚本加入定时任务
crontab -e
* * * * * /usr/local/sbin/test.sh
3.查看执行test.sh脚本的结果
[root@centos xshggn home]# cat abc.txt
yes
yes
yes
yes
4.查看定时任务的执行情况
username:用户
在/var/spool/mail/{username} 中可以查看最近的crontab的执行情况
5.cron的定时任务备份恢复
如果使用crontab -r 误删了定时任务 在/var/spool/cron下有定时任务的备份.可以通过该cron找回
如果没有权限 的话 su - + root.password 在root用户下 进行查看
命令的模式像下面这个: grep "script.php" /path/file.ext. 比如,下面的命令就是从/var/log/cron.log 检测cron任务是否有执行 cronscript.php 脚本文件
grep "cronscript.php" /var/log/cron
按下Enter 然后就会输出类似这样的:
1 Feb 24 02:33:02 ecbiz108 crond[9772]: (userna5) CMD (php -q /home/userna5/public_html/cronscript.php) 2 Feb 25 02:33:01 ecbiz108 crond[16587]: (userna5) CMD (php -q /home/userna5/public_html/cronscript.php) 3 Feb 25 11:45:01 ecbiz108 crond[21887]: (userna5) CMD (php -q /home/userna5/public_html/cronscript.php)
我们检查输出中,你会看到cron的执行具体时间