在windows的时候我们经常会用到计划任务,那么在linux里面我们要用啥呢?答案是cronjob,通过百度我们可以知道cronjob里面crontab的用法。

#crontab -e
##进入当前用户cronjob的编辑模式
1 2 3 4 5 /bin/bash /path/script

   crontab编辑模式里面,分为两个部分第一部分是执行时间,就是上面例子中 1 2 3 4 5,1代表01分,2代表02时,3代表3日,4代表4月,5代表星期五,每个字段都有独立的取值范围,需要注意的是第五个字段,取值范围是0-7;第二部分是脚本执行命令,需要注意的是cronjob里面执行任务的时候是不会带有环境变量的,某些命令是需要使用绝对路径,例如php、ntp等等。

  在编辑模式下操作方法和vi一样,当然编写有误,退出编译的时候还是有提示的。

  那么写好的cronjob会保存到哪呢?cronjob里面的任务返回默认会保存到哪呢?

  编写好的cronjob保存的时候,会在/var/spool/cron/生成一个与用户一致的文件;而返回的信息这回存到与cronjob任务的用户mail文件里。可以想想,默认之下mail会越滚越大,所以编写cronjob的时候最好带上输出重定向 command > /dev/null 2>&1 , > /dev/null 信息输出到/dev/null,来理解为输出为空,2>&1:错误输出stderr合并到标准输出stdout里。

  在cronjob的实际运用中我们还会遇到一个问题,如果要用脚本批量增加计划任务,或者把cronjob自动部署到多台服务器上要怎么办?

  在crontab的帮助信息里面可以看到:

Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u   define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n   set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x   enable debugging

Default operation is replace, per 1003.2

  根据uasge的第一个方法,可以把需要的计划任务先编写到一个文件中,再通过下面的格式创建cronjob

#crontab [options] file

  最后一个问题,如果想弄个进去到秒的任务怎么搞?

  可以在任务脚本里面增加个sleep试试。