您的位置:首页 > 运维架构 > Linux

crontab 各参数详解及如何查看日志记录

2016-08-08 11:22 274 查看
crontab各参数说明:crontab [-u user] [file] crontab [-u user] [-e|-l|-r] crontab -l -u root 查看root用户的任务表注意crontab是分用户的,以谁登录就会编辑到谁的crontab-e : 执行文字编辑器来编辑crontab,内定的文字编辑器是VI-r : 删除目前的crontab-l : 列出目前的crontab(查看专用)-i : 会和-r 配合使用,在删除当前的crontab时询问,输入y 则删除/etc/init.d/crond restart(stop/start)重启或者停止后再启动备份命令:应用:对crontab进行备份crontab -l>/home/backup/crontab/crontab`date '+%Y%m%d'`.bak22 21 * * * /usr/bin/backupcrontab 中文乱码crontab启动的任务没有获取系统的环境变量,导致中文乱码解决办法: 在执行的脚步中添加编码方式或者添加对应的环境变量如:1、/usr/bin/java -Dfile.encoding=UTF-8 -jar ALDTool.jar2、在脚本开头增加:export LANG="en_US.UTF-8"crontab特殊的符号说明:"*"代表所有的取值范围内的数字。特别要注意哦!"/"代表每的意思,如"*/5"表示每5个单位"-"代表从某个数字到某个数字","分散的数字crontab文件的使用示例:30 21 * * * 表示每晚的21:3045 4 1,10,22 * * 表示每月1、10、22日的4 : 4510 1 * * 6,0 表示每周六、周日的1 : 100,30 18-23 * * * 表示在每天18 : 00至23 : 00之间每隔30分钟0 23 * * 6 表示每星期六的11 : 00 pm* */1 * * * 每一小时* 23-7/1 * * * 晚上11点到早上7点之间,每隔一小时* 8,13 * * 1-5 从周一到周五的上午8点和下午1点0 11 4 * mon-wed 每月的4号与每周一到周三的11点0 4 1 jan * 一月一号的4点 -------------------------------- 如何查看crontab的日志记录 --------------------------------------------------------昨天crontab中的同步任务没有执行,不知道是什么原因没有执行,貌似任务hang住了,想查询一下crontab到底问题出在哪里,或者hang在了什么地方。如:30 12 * * * /data/bk/bk.sh >/tmp/test.log 2>&1 &将crontab运行日志输出到/tmp/test.log中1. linux看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察2. unix在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。3. mail任务在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。=====================================================================================yum install crontabsrpm -q crontabsll /var/spool/cron == crontab -l=====================================================================================2.2 Crontab 格式说明我们可以用crontab -e 添加要执行的命令。 命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。添加的命令必须以如下格式:* * * * * /command path前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。前5个字段分别表示:分钟:0-59小时:1-23日期:1-31月份:1-12星期:0-6(0表示周日)还可以用一些特殊符号:*: 表示任何时刻,: 表示分割-:表示一个段,如第二端里: 1-5,就表示1到5点/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.一些示例:00 8,12,16 * * * /data/app/scripts/monitor/df.sh30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh43 21 * * * 21:43 执行15 05 * * *    05:15 执行0 17 * * * 17:00 执行0 17 * * 1 每周一的 17:00 执行0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟 执行0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 执行42 4 1 * *     毎月1日的 4:42分 执行0 21 * * 1-6   周一到周六 21:00 执行0,10,20,30,40,50 * * * * 每隔10分 执行*/10 * * * *        每隔10分 执行* 1 * * *         从1:0到1:59 每隔1分钟 执行0 1 * * *         1:00 执行0 */1 * * *        毎时0分 每隔1小时 执行0 * * * *         毎时0分 每隔1小时 执行2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 执行30 5 1,15 * *       1日 和 15日的 5:30 执行2.3 & 后台执行命令当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。如:30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:如:command >out.file 2>&1 &在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。2.4 2>&1 含义先看一个例子:0 2 * * * /u01/test.sh >/dev/null 2>&1 &这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。在这里有有几个数字的意思:0表示键盘输入1表示标准输出2表示错误输出.我们也可以这样写:0 2 * * * /u01/test.sh >/u01/out.file & –这里没写,默认是10 2 * * * /u01/test.sh 1>/u01/out.file &0 2 * * * /u01/test.sh 2>/u01/out.file &0 2 * * * /u01/test.sh 2>/u01/out.file 2>&1 &将tesh.sh 命令输出重定向到out.file, 即输出内容不打印到屏幕上,而是输出到out.file文件中。2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件out.file。&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。& :后台执行测试:ls 2>1 : 不会报没有2文件的错误,但会输出一个空的文件1;ls xxx 2>1: 没有xxx这个文件的错误输出到了1中;ls xxx 2>&1: 不会生成1这个文件了,不过错误跑到标准输出了;ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1; 因为重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件中。2.5 2>&1写在后面的原因格式:command > file 2>&1 == command 1> file 2>&1首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。如果改成: command 2>&1 >file2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux crontab