> systemctl start/stop/restart/status cron
命令格式
crontab [-u user] filecrontab [-u user] { -e | -l | -r }
命令参数-u user:用来设定某个用户的crontab做事;file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接管标准输入(键盘)上键入的命令,并将它们载入crontab。-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。-i:在删除用户的crontab文件时给确认提示。crontab 的文件格式字段

描述
许可的值
分钟
一小时的第几分
0-59
小时
一天的第几小时
0-23
日期
一个月的的第几天
1-31
月份
一年的第几个月
1-12
周几
一周的第几天
0-6
命令
命令
可以被实行的任何命令
常用方法创建一个新的 crontab 文件,向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron进程根据它来确定利用哪个编辑器编辑crontab文件。99%的UNIX和LINUX用户都利用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在个中加入这样一行
EDITOR=vi; export EDITOR
然后保存并退出。不妨创建一个名为 cron的文件,个中是用户名,例如, davecron。在该文件中加入如下的内容。
# (put your own initials here)echo the date to the console every# 15minutes between 6pm and 6am0,15,30,45 18-06 /bin/echo 'date' > /dev/console
保存并退出。把稳前面5个域用空格分隔。
在上面的例子中,系统将每隔1 5分钟向掌握台输出一次当前韶光。如果系统崩溃或挂起,从末了所显示的韶光就可以一眼看出系统是什么韶光停滞事情的。在有些系统中,用tty1来表示掌握台,可以根据实际情形对上面的例子进行相应的修正。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数 $ crontab davecron
现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名便是用户名(即dave)。
利用-l参数列出crontab文件::
> crontab -l0,15,30,45 18-06 /bin/echo `date` > dev/tty1
可以利用这种方法在$HOME目录中对crontab文件做一备份::
$ crontab -l > $HOME/mycron
这样,一旦欠妥心误删了crontab文件,可以用上一节所讲述的方法迅速规复。
如果希望添加、删除或编辑crontab文件中的条款,而EDITOR环境变量又设置为vi,那么就可以用vi来编辑crontab文件crontab -e
可以像利用vi编辑其他任何文件那样修正crontab文件并退出。如果修正了某些条款或添加了新的条款,那么在保存该文件时, cron会对其进行必要的完全性检讨。如果个中的某个域涌现了超出许可范围的值,它会提示你。我们在编辑crontab文件时,没准会加入新的条款。例如,加入下面的一条:
# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month30 3 1,7,14,21,26 /bin/find -name 'core' -exec rm {} \;
最好在crontab文件的每一个条款之上加入一条注释,这样就可以知道它的功能、运行韶光,更为主要的是,知道这是哪位用户的定时作业。
删除crontab文件crontab -r
每1分钟实行一次cmd cmd
每小时的第3和第15分钟实行
3,15 cmd
在上午8点到11点的第3和第15分钟实行
3,15 8-11 cmd
每隔两天的上午8点到11点的第3和第15分钟实行
3,15 8-11 /2 cmd
每周一上午8点到11点的第3和第15分钟实行
3,15 8-11 1 cmd
每晚的21:30重启smb
30 21 /etc/init.d/smb restart
每月1、10、22日的4 : 45重启smb
45 4 1,10,22 /etc/init.d/smb restart
每周六、周日的1 : 10重启smb
10 1 6,0 /etc/init.d/smb restart
每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 /etc/init.d/smb restart
每星期六的晚上11 : 00 pm重启smb
0 23 6 /etc/init.d/smb restart
每一小时重启smb
0 /1 /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
0 23-7 /etc/init.d/smb restart
利用把稳事变把稳环境变量问题
有时我们创建了一个crontab,但是这个任务却无法自动实行,而手动实行这个任务却没有问题,这种情形一样平常是由于在crontab文件中没有配置环境变量引起的。
在crontab文件中定义多个调度任务时,须要特殊注环境变量的设置,由于我们手动实行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动实行任务调度时,是不会加载任何环境变量的,因此,就须要在crontab文件中指界说务运行所需的所有环境变量,这样,系统实行任务调度时就没有问题了。
不要假定cron知道所须要的分外环境,它实在并不知道。以是你要担保在shelll脚本中供应所有必要的路径和环境变量,除了一些自动设置的全局变量。以是把稳如下3点:
脚本中涉及文件路径时写全局路径;脚本实行要用到java或其他环境变量时,通过source命令引入环境变量,如::cat start_cbp.sh#!/bin/shsource /etc/profileexport RUN_CONF=/home/rumenz/usr/local/temp/bin/run.sh -c mev &
当手动实行脚本OK,但是crontab去世活不实行时,很可能是环境变量惹的祸,可考试测验在crontab中直接引入环境变量办理问题。如::
0 /etc/profile;/bin/sh /var/www/java/bin/restart_audit.sh
把稳清理系统用户的邮件日志
每条任务调度实行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常主要。例如,可以在crontab文件中设置如下形式,忽略日志输出::
0 /3 /usr/local/bin/apachectl restart >/dev/null 2>&1
/dev/null 2>&1表示先将标准输出重定向到/dev/null,然后将标准缺点重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准缺点也会重定向到/dev/null,这样日志输出问题就办理了。
系统级任务调度与用户级任务调度系统级任务调度紧张完成系统的一些掩护操作,用户级任务调度紧张完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却弗成,root用户的任务调度操作可以通过crontab –uroot –e来设置,也可以将调度任务直接写入/etc/crontab文件,须要把稳的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,纵然在root用户下创建一个定时重启系统的任务也是无效的。