利用crontab命令来设置定时任务

  • crontab是linux系统中的一个命令,可以用来安装、卸载或者查看基于crond守护进程的定时任务。我使用的mac系统,操作系统就是Darwin,可能部分内容和其他linux系统中的crond有些区别。
crond进程
  • crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,守护进程意味着它不能被关闭,它会随着系统的启动而启动,直到系统关闭才停止,用户只能卸载定时任务而不能直接停止该进程。
  • linux中每个用户都有自己的crontab,但是否允许使用该命令,涉及到权限问题,下面来看看如何确定权限:首先进入目录/usr/lib/cron/,如果该目录下有文件cron.allow,那么存在于cron.allow的用户才有权限使用crontab命令。如果cron.allow不存在,而cron.deny存在,则表示存在于cron.deny的用户无权限,其他的都有权限使用crontab。如果上述文件都不存在,那么可能只有通过root权限,即sudo crontab来执行,或者所有人都有权限。
crontab命令
  • 在当前用户有执行crontab的权限时,可根据参数,进行相关操作。
    • -l 在标准输出上列出当前的crontab任务。
    • -r 清空当前crontab任务
    • -e 打开一个编辑器,可以新建/编辑当前crontab任务,当你离开该编辑器时,对crontab任务的修改会立即自动安装。
  • 接下来我们看下具体的crontab任务要怎么编写:
    * * * * * command
  • 大概格式如上,前五位分别表示:分、时、几号、几月、周几,后面接上需要执行的命令。
  • 规定时间的格式可以使用特殊符号:
    • 星号(*):代表当前时间可以匹配任意值,均可以触发命令。
    • 逗号(,):逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”,表示这几项其中之一就可以匹配。
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示匹配2到6。
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
  • 具体的使用示例可以在网上看看,理解起来还是很简单的。
注意事项
  • crontab命令的执行结果会以邮件的形式发送给当前用户的邮箱中,可以通过vim /var/mail/当前用户名来查看邮箱,在命令执行错误的时候,错误信息也会发送到邮箱。但是每次执行完毕都会发送到邮箱中,如果你不想接收频繁的邮件信息,可以在命令的结尾加上> /dev/null,这样就把输出传递给/dev/null了。
  • crontab里的command如果你要执行python或者node之类的脚本,直接写python file.py可能会报错,说找不到python命令,这是因为crontab的执行环境里没法找到python命令。有几个解决方法:1.先在命令行输入which is python得到python的绝对路径,在crontab中使用这个绝对路径来代替python(注意,需要执行的python脚步文件也要以绝对路径形式写在crontab中)。2.先cd到python脚本的文件夹目录,再执行python命令:cd /a/b/c && python file.py,只要python文件所在目录能直接执行python,这样就可以了。

你可能感兴趣的:(利用crontab命令来设置定时任务)