《linux crontab定时触发命令》由会员分享,可在线阅读,更多相关《linux crontab定时触发命令(7页珍藏版)》请在金锄头文库上搜索。
1、Linux 下 crontab 命令的用法利用系统 crontab 来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 1、创建保存备份文件的路径/mysqldata #mkdir /mysqldata 2、创建/usr/sbin/bakmysql 文件 #vi /usr/sbin/bakmysql 输入 rq= date +%Y%m%d tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql 或者写成 rq= date +%Y%m%d /注意 date 与加号间有空格mysqldump -all-databases -u root -
2、p980405 /mysqldata/mysql$rq.tar.gz /var/lib/mysql 是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同 /mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。3、修改文件属性,使其可执行 # chmod +x /usr/sbin/bakmysql 4、修改/etc/crontab #vi /etc/crontab 在下面添加 01 3 * * * root /usr/sbin/bakmysql 表示每天 3 点钟执行备份 5、重新启动 crond # /etc/rc.d/init
3、.d/crond restart 完成。 这样每天你在/mysqldata 可以看到这样的文件 mysql20040619.tar.gz 你直接下载就可以了。 在 tar 命令执行前,停止数据库服务进程或锁定数据库, 否则恢复数据时,会出现数据库损坏的情形,运气好时可修复,运气不好时,赫赫. /usr/lib/cron/cron.allow 表示谁能使用 crontab 命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab 命令。如果它是一个空文件表明任何用
4、户都可安排作业。两个文件同时存在时 cron.allow 优先,如果都不存在,只有超级用户可以安排作业。Crontab 命令使用的文件具体位置: /Var/Spool/Cron/Crontabs 目录下,每个用户都有其对应的名字,比如,root 用户的文件为 root.00 02 * * 1-5 /usr/sysadm/dailybackup.sh /uf/logs/dailybackup.log 2&100 03 * * 1-5 find /u01/app/oracle/admin/prod/archive -name *.ARC -mtime +4 -exec rm ;【解释】第一行的意思
5、是,每个周的周一到周五的凌晨 2 点,系统会自动执行一个脚本程序 dailybackup.sh,并且把执行信息和错误提示信息输出到 dailybackup.log这个文件中,是追加形式。第二行的意思是,在目录/u01/app/oracle/admin/prod/archive 中,查找文件名为*.ARC 的文件,并删除 4 天前的文件。【dailybackup.sh】 #!/bin/sh#set_return()x=$?if $x -ne 0 ; thenecho EXIT CODE: $xrval=1fi# Delete at first all unnecessary files:# /u
6、f/SYS/RES/jcs/reorganize.sh#su - oracle -c /u01/app/oracle/product/8.0.6/bin/dbshutsu - oracle -c /u01/app/oracle/product/8.0.6/bin/lsnrctl stopset_return/usr/sysadm/backup.sh# BackupDate=date +%d.%m.%Y /可以生成以年月日格式的文件名,如 20040217# cp /uf/logs/rootsich.log /uf/logs/rootsich.log.$BackupDate# compress
7、/uf/logs/rootsich.log.$assichdat# Activation of the Unix copy of Oracle database prod to train# sh /uf/util/autocopy.shsu - oracle -c /u01/app/oracle/product/8.0.6/bin/dbstartsu - oracle -c /u01/app/oracle/product/8.0.6/bin/lsnrctl startset_return【解释】这个脚本主要负责,先关闭数据库,然后运行脚本 backup.sh 进行备份,备份完毕后,启动数据库
8、。【backup.sh】#!/bin/sh# backup.sh#fbackup -0 -v -n -i / -f /dev/rmt/0m /var/adm/fbackupfiles/backup.log 2&1exit_code=$?exit $exit_code【解释】这个脚本就是运行 fbackup,进行对根目录/下所有文件进行备份。任务调度的 crond 常驻命令crond 是 linux 用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而 linux 任务调度的工作主
9、要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置 Crontab 是 UNIX 系统下的定时任务触发器,其使用者的权限记载在下列两个文件中: 文件:/etc/cron.deny 含义:该文件中所列的用户不允许使用 Crontab 命令文件:/etc/cron.allow 含义:该文件中所列的用户允许使用 Crontab 命令 文件:/var/spool/cron/ 含义:是所有用户的 crontab 文件 /var/spool/cron/c
10、rontabs/var/spool/cron/crontabsCrontab 命令的格式为:crontab l|-r|-e|-i username,其参数含义如表一: 参数名称 含义 示例 -l 显示用户的 Crontab 文件的内容 crontabl l显示 root 用户的 Crontab 文件的内容 crontabl l root-i 删除用户的 Crontab 文件前给提示 crontabl -ri -r 从 Crontab 目录中删除用户的 Crontab 文件 crontabl -r -e 编辑用户的 Crontab 文件 crontabl -e 用户所建立的 Crontab 文件
11、存于/var/spool/cron 中,其文件名与用户名一致。它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,格式如下:* * * * * 其时间段的含义如表二: 段 含义 取值范围 第一段 代表分钟 059 第二段 代表小时 023 第三段 代表日期 131 第四段 代表月份 112 第五段 代表星期几,0 代表星期日 06 名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab -u user file crontab -u user -l | -r | -e 说明 : crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也
12、就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 餐数 : -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) -r : 删除目前的时程表 -l : 列出目前的时程表 时程表的格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟, f2 表示小时,f3 表示一个月份中
13、的第几日, f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,. 时表示第 a, b, c,. 分钟要执行,f2 为 a, b, c,.时表示第 a, b, c.个小
14、时要执行,其馀类推 使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 例子 : 每月每天每小时的第 0 分钟执行一次 /bin/ls : 0 7 * * * /bin/ls 在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 0 6-12/3 * 12 * /usr/bin/backup 周一到周五每天下午 5:00 寄一封信给 alexdomain.name : 0 17 * * 1-5 mail -s hi alexdomain.name /dev/null 2&1 即可 例
15、:如果用户的 Crontab 文件的内容是:29 19 * * * echo its dinner time,则系统每天的 19:29 显示its dinner time示例(创建一个 cron 全过程,每分钟都会在 test.txt 里输入当前时间): 1. 以普通用户登录 linux 系统(我用的是 CentOS4.1) 2. $crontab e说明:系统默认的编辑器是 VIM,如果不是请加上以下 shell:$EDITOR=vi$export EDITOR 3. 输入”*/1 * * * * date $HOME/test.txt”,save and exit VIM 4. $su root 5. $cd /etc/init.d 6. ./crond restart 下面看看看几个具体的例子: 0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache 50 7 *