crontab用法?

作者&投稿:岳纪 (若有异议请与网页底部的电邮联系)
~

Linux:crontab点排序(表达式、转义、权限管理、日志)

摘要:Linux,crontab

组织crontab的使用,包括cron表达式,设置和删除任务,权限管理,查看日志。

crontab命令用于提交和管理用户需要定期执行的任务,类似于windows下的调度任务。安装操作系统时,默认情况下会安装这个服务工具,并且crond进程会自动启动。crond进程会每分钟定时检查是否有任务要执行,如果有任务要执行,就会自动执行任务。

使用以下命令启动、关闭、重新启动crontab服务并检查其状态

启动和关闭需要root权限,所有用户都可以查看状态,例如

Crontab通过设置cronexpression(cronexpression的基本语法)让计算机识别如何定期调度任务

前五个*分别代表分钟、小时、一个月中的某一天、一年中的某一天和一周中的某一天。最后一个命令是要执行的任务语句。详情及取值范围见下图。

其中*代表所有值,例如,以下代表在每年的9月27日17:07执行一个命令,对星期几没有限制。

可以看出,crontab的最小粒度被调度在分钟级别,最粗的级别是月,不限年份,所以每年至少执行一次。

在cron表达式中,最后一个*代表一周中的某一天。如果前面的*限制了日期,而星期几的位置不是*作为给定值,那么肯定会和星期几冲突。当有冲突时,两者的关系是OR,即如果时间满足指定的日期或指定的星期几,则执行任务。举个例子。

9月27日星期一将执行上述两条语句,一条在当天17:13,另一条在当天17:17,在/tmp/cron.txt文件中先后写入两条记录。

当星期几的位置设置为*时,不需要注意冲突,也就是说,对星期几没有限制。

另外,cron表达式支持一些特征符号匹配阿拉伯数字来设置each*,可以实现or,everyother,from,to的逻辑,分别对应三个常用符号,,/,-,分别解释如下。

分别举几个例子。

(1)17:43,44执行任务。

(2)每2分钟执行一次任务。

(3)执行任务从52点到56点,共5次。

我们来整理一波常见的cron表情。

目前已知百分号%需要转义,尤其是用date命令date格式化日期时,否则无法在crontab中运行,因为%在crontab中是一个有意义的符号,带百分号的命令应该这样设置,例如

如果不设置这个,可以单独写在一个shell脚本中,使用bash解释就可以正常运行执行。

在当前用户下,crontab-e用于编辑和添加计划任务。第一次使用时,不会显示用户的crontab,然后可以选择一种编辑方式,输入3,回车。如果不是第一次设置,也可以在终端输入select-editor,以后再设置。

设置完成后,输入crontab-e进入。该方法进入当前用户的crontab界面,可以在cron表达式中写入新的一行进行设置,比如

如果您可以使用#注释掉一行,cron表达式将不会生效。编辑完毕,输入wq!保存并关闭

一个直接的方法是使用crontab-rr,这个方法会删除该用户下的所有crontab任务,其他用户的任务如果不影响就不会被删除。慎用。如果只想删除其中的一个任务,可以直接进入编辑删除行。

任务查看使用crontab-l命令,该命令可以查看当前用户的crontab任务。

linux机器上的每个不同用户都有自己的crontab-e文件来设置自己的调度任务,这些任务在同一台机器上运行,互不干扰。root用户可以在使用crontab-e时切换其他用户进行设置,例如

上面的语句是为root下的测试用户设置一个调度任务。如果是普通用户,在没有-u权限的情况下会报错。

Crontab-e处于用户级别,它设置每个用户自己的计划任务。/etc/crontab在系统级,设置系统的例行任务。/etc/crontab只对root用户有读写权限,普通用户只有读权限。

与crontab-e相比,/etc/crontab有更多的环境变量和用户名的配置。root用户为每个任务统一配置用户名,设置的环境变量对/etc/crontab下的所有任务都有效,比如修改他的python到anaconda的搜索路径。

该设置仅对/etc/crontab有效,但对crontab-e的每个用户无效。

/etc/crontab用于设置系统的例行计划任务。

意味着系统任务是按小时、每天、每周、每月执行的,其中test-x/usr/sbin/anacron表示条件测试文件是否可执行。如果可执行文件忽略以下命令内容,在这种情况下,系统将转到anacron并读取/etc/anacrontab下的内容。

可以看到,机器调用run-parts命令和/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly来执行调度任务。

由于linux支持不同的用户设置自己的任务,所以你可以在一个地方看到所有用户设置的任务/var/spool/cron/crontabs。只有root用户可以访问该目录。

目录中有三个文件,对应三个用户。root用户可以读写这些文件,相当于用crontab-e在这里设置和修改任务,直接在里面编辑相当于切到一个用户执行crontab-e。

默认情况下,ubuntucrontab中没有日志文件。您需要在配置中设置日志文件的位置。配置文件位于/etc/rsyslog.d/50-default.conf中。

设置并重新启动rsyslog服务。

看看下面下一个crontab日志的格式。

该日志包括执行时间、主机名、用户和执行的任务信息。任务信息包括被执行用户cron的命令和设置编辑crontab的记录,表示在哪个时间执行了哪个用户的哪个命令语句。

这两行反映了错误消息。

Crontab在执行脚本时不会直接输出错误的信息,而是以邮件的形式发送到你的邮箱。这个时候,你需要一个邮件服务器。如果您没有安装电子邮件服务器,它将报告这个错误:没有安装mta,丢弃输出。解决方法是将错误的内容写入文件,比如添加>:例如pop3,ssh,telnet,ftp等都会记录在此.

2)/ar/log/wtmp:记录登录着的信息记录,被编码过,所以必须以last解析;

3)/var/log/messages:记录Linux操作系统常见的系统和服务错误信息

4)/var/log.boot.log:记录一些开机或者关机启动的一些服务显示的启动或者关闭的信息;

5)/var/log/maillog:记录邮件的存取和往来;

6)/var/log/cron:用来记录crontab这个服务的内容;

7)/var/log/httpd,/var/log/mysqld.log等等文件,记录几个不同的网络服务的记录文件;

8)/var/log/acpid,ACPI-AdvancedConfigurationandPowerInterface,表示高级配置和电源管理接口。后面的d表示deamon。acpid也就是theACPIeventdaemon。也就是acpi的消息进程。用来控制、获取、管理acpi的状态的服务程序。

9)/var/run/utmp记录着现在登录的用户;10)/var/log/lastlog记录每个用户最后的登录信息;11)/var/log/btmp记录错误的登录尝试;12)/var/log/dmesg内核日志;13)/var/log/cpusCPU的处理信息;14)/var/log/syslog事件记录监控程序日志;15)/var/log/auth.log用户认证日志;16)/var/log/daemon.log系统进程日志;17)/var/log/mail.err邮件错误信息;18)/var/log/mail.info邮件信息;19)/var/log/mail.warn邮件警告信息;20)/var/log/daemon.log系统监控程序产生的信息;21)/var/log/kern内核产生的信息;22)/var/log/lpr行打印机假脱机系统产生的信息。

超时取消订单怎么处理?

1.定时轮询

最简单的方法,写好取消订单的逻辑,一般是取订单表待付款状态的订单,然后做遍历取消处理,使用Linux系统的crontab定时执行取消订单功能。

优点:简单快捷,业务小的可以考虑

缺点:

由于Linux的限制,只能精确到秒

轮询频率不能自主控制,如果运维和开发分开管理,每次调整需要运维配置修改

如果第一次轮询耗时长,第二次轮询又开始了,会造成任务重复执行

占用数据库资源

不能并发执行

2.任务调度

一些web框架会带有任务调度的功能,像php的Laravel框架。

优点:

轮询频率可以做到用代码来控制,不完全依赖系统;

任务可以做到不重复执行

缺点:跟定时轮询差不多

3.延迟队列处理

如果系统有太多的订单需要处理,那么处理的时间就要很长,假如第一次轮询还没结束,第二次又开始了,就会造成任务的重复执行,同时抑制占用数据库资源,造成数据库压力大,用延迟队列做取消订单处理,设定延迟时间为提交订单之后的30分钟执行,效率会高很多,常用的延时队列有

redis(订阅键的失效事件)

框架自带的队列(例如Laravel框架自带的队列)

rabbitMQ延迟队列

优点:

不需要对订单表轮询处理,减少数据库压力

不会重复执行

效率高

可配合多线程处理

业务量大的方便做集群

不依赖系统的crontab

linux下如何开机自启动dhcp服务?

1,通过编辑/etc/rc.local文件来使dhcp服务开机自启动

使用命令vi/etc/rc.local,

然后在文件最后一行添加“sudo/etc/init.d/dhcp3-serverstart”就能使dhcp服务开机自启动。

2,使用crontab任务提交计划

先写一个简单的检查dhcp服务是否启动了的脚本a.sh:

#!/bin/bash ps-ef|grepdhcp|grep-vgrep if then exit0 else sudo/etc/init.d/dhcp3-serverstart>/dev/null2>1 fi

如果在用户目录下没有cron文件,使用vi新建一个my.cron的crontab文件,将以下内容写进去:

*/5****bash$HOME/a.sh

然后crontabmy.corn提交,这样系统就会在每5分钟运行一次a.sh脚本,检测dhcp服务已经启动了,如果没有启动或者停止了就会再启动一次。

3,注册系统服务

chkconfig--add服务名称(首先,添加为系统服务,注意add前面有两个横杠)

chkconfig-leve启动级别服务名on

(说明,3级别代表在命令行模式启动,5级别代表在图形界面启动,on表示开启)

chkconfig-leve启动级别服务名off

(说明,off表示关闭自启动)

例如注册dhcp为系统服务并在开机时自启动:

chkconfig--adddhcp chkconfig-level3dhcpon

总结一下:第一种方法其实是将指定服务设置为开机自启动,第三种方法是将服务升级为系统服务并且设置为开机时启动,而第二种方法对于那些最好或者必须开机启动的服务最好不要使用,但是可以使用crontab来实时监测服务是否在线。




Linux下的crontab定时执行任务命令详解
七、crontab用法 crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。\/var\/spool\/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的 在crontab文件中如何输入需要执行的命令...

crontab的用法
crontab是什么 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。「crontab」一词来源于希腊语chronos(χρνο),原意是时间.crontab配置文件的语法 其中星期取值为0和7时均代表星期日, 前五栏除了可以取上表中的这些值外,还可以取下面这些特殊参数:特殊字符 代表的意义 ...

shell后台定时任务时crontab的用法
语法:crontab[-u username]|-l|-r|-e|-v -u:指定crontab job的用户 -l:列出当前crontab的job -e:使用$EDITOR编辑crontab job -v:列出当前crontab job的状态,有的shell可能不支持-v crontab file填写格式:每一行对应一个cron job 每一行分为六个部分,每一部分用空格隔开,同一个部分用逗...

linux的定时重启的具体命令。非常感谢?
比如:servicemysqldstart基本用法:1.crontab-l列出当前的crontab任务2.crontab-d删除当前的crontab任务3.crontab-e(solaris5.8上面是crontab-r)编辑一个crontab任务,ctrl_D结束4.crontabfilename以filename做为crontab的任务列表文件并载入crontabfile的格式:crontab文件中的行由6个字段组成,不同字段间用空...

Linux中cron命令的用法详解
linux中有一个命令可以定期来执行系统任务。这就是crond服务。下面介绍下crontab命令的用法。linux任务调度的工作主要分为以下两类:编辑\/etc\/crontab 文件配置cron cron服务每分钟不仅要读一次 \/var\/spool\/cron内的所有文件,还需要读一次\/etc\/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用 ...

crontab每周一执行一次(linux crontab命令详解)
crontab -e 如果第一次执行,他会提示你选择默认编译器,一般我选择vim(vi、nano也可以)我举例定时关机说明:分 时 日 月 周 命令 0 1 * * 1 \/sbin\/shutdown -h now 这个意思就是在每周一的一点执行 \/sbin\/shutdown定时关机(root下才可以关机)当然你可以写个脚本,给予执行权限(x),然后输入...

linux系统crontab命令的用法
组织crontab的使用,包括cron表达式,设置和删除任务,权限管理,查看日志。 crontab命令用于提交和管理用户需要定期执行的任务,类似于windows下的调度任务。安装操作系统时,默认情况下会安装这个服务工具,并且crond进程会自动启动。crond进程会每分钟定时检查是否有任务要执行,如果有任务要执行,就会自动执行任务。 使用以下命令启...

Linux里面crontab是什么?
用法:1、crontab [-u user] file:-u用来指定某个用户的crontab服务,一般是像root这种高权限用户使用。file是命令文件的名字,表示将file作为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。 2、crontab...

linux定时器?
下面是 cron 定时器的基本用法:打开终端窗口,并使用 crontab -e 命令编辑当前用户的 cron 时间表:crontab -e在编辑器中添加要执行的命令和执行时间。每行对应一个任务。例如,以下任务将在每天的凌晨 2 点执行 \/path\/to\/command 命令:0 2 * * * \/path\/to\/command上述任务的各字段含义如下:0...

如何使用Linux的Crontab定时执行PHP脚本的方法
一、在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。每一小时执行myscript.php如下:. 代码如下:crontab -e 00 * * * * \/usr\/local\/bin\/php \/home\/john\/myscript.php \/usr\/local\/bin\/php为PHP程序的路径。二、在Crontab中使用...

西畴县18244516236: linux 中的crontab使用方法 -
锐放安赛: 噢,你把这个文件保存下来嘛. 然后你运行 crontab -e 然后在vi编辑器里输入 */5 * * * * root ./temp.sh 然后保存就可以了. crontab的具体用法我复一个文档给你.噢,下午已有一个高手回答了,答得很简略也很实用.你可以听他的.***********...

西畴县18244516236: crontab 命令介绍?怎么用? -
锐放安赛: 任务调度的crond常驻命令 crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.而linux任务调度的工作...

西畴县18244516236: 怎么使用crontab计划任务 -
锐放安赛: 一、系 统的Cron计划文件存放在/etc/crontab路径下.与用户的crontab文件不同,root用户可以直接对该文件进行修改,而不用使用 crontab -e命令.除此之外,系统crontab文件中任务的定义也有所不同,在前五个部分之后插入了一个“用户”...

西畴县18244516236: 如何用crontab执行脚本文件 -
锐放安赛: 使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令.例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e 0 5 * * * /root/bin/backup.sh 这将会在每天早上5点运行 /root/bin/...

西畴县18244516236: 关于unix crontab用法 -
锐放安赛: cron:第一列为分钟,规定每小时的第几分执行相应的程序,第二列为每天第几小时执行程序,,第三列为每月的第几天,第四列为第几周,第五列为每周的第几天,第六列为执行该文件的用户身份,第七列为要执行的命令.你可以查看/var/cron日志来观察是否正确执行了命令.

西畴县18244516236: Linux系统利用Crontab命令实现定时重启怎么做?
锐放安赛: Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序 使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond ...

西畴县18244516236: 如何使用Linux的Crontab执行PHP脚本 -
锐放安赛: Linux中crontab是实现定时执行的指令,利用这个指令我们就可以定时执行某一个php文件,从而实现用PHP做Linux自动执行脚本.如何用PHP作Linux自动执行脚本?在安装PHP的时候,会产生一个可执行文件,文件名为php.将它 copy 到 /...

西畴县18244516236: linux 定时关机命令? -
锐放安赛: 关机命令如下,第一种是将关机作为一种任务,每天自动执行;第二种是若干小时后关机.楼主您自己选择一种吧:第一种方法: 用crontab命令就可以了,下面看一下它的详细用法.名称 : crontab 使用权限 : 所有使用者 使用方式 : crontab...

西畴县18244516236: 如何使用crontab命令让当前用户设定每分钟记录当前的时间到/tmp/ab?? -
锐放安赛: 针对用户来说 使用 crontab -e 去编辑 cron表达式 设定每分钟记录当前的时间到/tmp/ab 则使用 表达式* * * * * echo `date` > /tmp/ab 你也可以追加 * * * * * echo `date` >> /tmp/ab 编辑好后 可以用 crontab -l 查看 比如以上结果 [root@liangdi ~]# crontab -l* * * * * echo `date` > /tmp/ab [root@liangdi ~]#

西畴县18244516236: 如何使用crontab每天自动备份Mysql数据库 -
锐放安赛: 运行ssh工具putty,输入服务器地址,帐号和密码连接上服务器:切换到mysql安装目录下,然后使用VI创建一个文件(backup_mydb.sh):【PS:vi操作方法:按“i”可写,写好保存先按“ESC”,然后按“:(shift + ;)”,写入“wq”,写入退出...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网