crontab命令详解

at和crontab区别

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。

  • at:适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。

  • crontab:需要启动一个服务crond才行,crond服务通过crontab命令实现。

crond和crontab区别

  • crond:crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。安装完成系统后,默认就会开机自启动此任务调度命令crond命令会定期每分钟检查是否有要执行的工作,如果有便自动执行该工作。

  • crontab:是用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取与执行,其使用者的权限记载在以下两个文件中:

    • /etc/cron.deny :不允许使用crontab命令的用户。
    • /etc/cron.allow :允许使用crontab命令的用户。
    • /var/spool/cron :所有用户的crontab命令存放位置。

crontab文件含义

包含留个字段:minute hour day month week command(要执行的系统命令,也可以是自己编写的脚本文件)

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

crontab添加

crontab [-u user] [-l | -r | -e] [-i]

-l:列出当前用户的计划任务。
-e:编辑当前用户的计划任务。(添加crontab任务一般用这个!防止将其他任务覆盖!)
-r:删除当前用户的所有计划任务。即删除/var/spool/cron/USERNAME文件。
-u:管理指定用户的计划任务,仅root有权限。
-i:在使用-r选项删除所有任务时提示用户确认。

从头创建一个crontab的完整流程(谨慎使用,以免覆盖之前任务,一般都是添加任务,使用crontab -e,)

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的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 6am
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出。确信前面5个域用空格分隔。

在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

$ crontab davecron

现在该文件已经提交给cron进程,它将每隔15分钟运行一次。

同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

注意事项(极其重要)

posted @ 2018-09-10 20:22  口天丶木乔  阅读(266)  评论(0编辑  收藏  举报