inux下定时执行任务的方法:
1.crond守护进程--->完成定时运行脚本功能:
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
cron在3个地方查找配置文件:
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。
一般一个用户最多只有一个crontab文件。
2.运行方式有两种:
第一种:
/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
vi /etc/crontab, 在此文件中添加定时执行的命令即可---->完成定时运行脚本任务。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
第二种:
创建cron脚本---->用命令把此脚本文件添加到指定目录---->完成定时执行命令任务
第一步:写cron脚本文件,命名为crontest.cron
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
三、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
3.权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny
HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编
4.crond服务 命令
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存
6.简单易懂的例子:
在ubuntu中备份svn上传的代码,将备份的文件命名为svn_backup+当前时间.dump文件(例svn_backup20100525.dump)
1.编写脚本文件(backup.sh)
sudo touch backup.sh
创建脚本文件,并编辑文件
sudo vim backup.sh
上图为配置的文件内容,代码如下:#!/bin/shsudo svnadmin dump /srv/svn/repos/works > /home/jordy/svn_back_up$(date + %Y%m%d).dumpecho success!中间那句是将/srv/svn/repos/works 目录下的代码备份到/home/jordy/目录下,文件名为svn_backup+当前时间.dump文件,最后一句只是提示备份成功,可以删掉。使用命令sh -x backup.sh测试脚本是否成功。上面脚本文件编写完成后,下面执行定时任务:sudo vim /etc/crontab如图代码中的最后一行,其中:是表示备份的时间,按照 m h dom mon dow 填写,我的测试时每一分钟执行一次backup.sh脚本文件。操作结束,可以去相应的目录下查看备份文件是否生成。