时间任务命令linux 时间任务管理

Linux怎样在某一特定时间执行命令(使用at”

简介

“只有客户发展了,才有我们的生存与发展!”这是成都创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都做网站、网站设计、外贸营销网站建设、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

at定时任务,指定一个时间执行一个任务,只能执行一次。需要安装at服务,apt-get install at;

创建at任务

创建at任务方式有两种,从文件输入和从控制台输入。以下分别用两种方式创建1分钟后将当前时间写入 home/result 文件的命令

1、从文件输入

2、从命令行输入

注意此处的是ctrl+d 按键。

atq 和 atrm命令

atq查看at定时队列命令,atrm删除某个定时任务命令.

附录

1、at时间定义

at允许使用一套相当复杂的指定时间的方法。 

1)能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00 

2)能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。 

3)能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm 

4)能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1 

5)能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days 

6)能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

linux中,使用哪个命令去定时处理任务

如果必须使用命令的话,一般会可at命令。

定时任务,指定一个时间执行一个任务,只能执行一次。

语法:# at [参数] [时间]

输入要执行的任务命令后按Ctrl+d退出即可。

常见参数:

-m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出

-I :atq的别名

-d :atrm的别名

-v :显示任务将被执行的时间

-c :打印任务的内容到标准输出

-V :显示版本信息

-q :后面加列队 使用指定的列队

-f :后面加文件 从指定文件读入任务而不是从标准输入读入

-t :后面时间参数 以时间参数的形式提交要运行的任务

注:该命令的功能实现需要atd服务

如果需要长期定时或周期性的执行某个任务,则需要使用crontab,编写cron脚本来实现。同样,负责安装脚本执行任务的服务一般叫做crond。具体使用方法篇幅较长,请自行百度。

Linux crontab命令

Linux crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab文件:指定包含待执行任务的crontab文件。

Linux下的任务调度分为两类:系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

/etc/cron.deny 该文件中所列用户不允许使用crontab命令

/etc/cron.allow 该文件中所列用户允许使用crontab命令

/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command 顺序:分 时 日 月 周

其中:

在以上各个字段中,还可以使用以下特殊字符:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

每1分钟执行一次command

每小时的第3和第15分钟执行

在上午8点到11点的第3和第15分钟执行

每隔两天的上午8点到11点的第3和第15分钟执行

每个星期一的上午8点到11点的第3和第15分钟执行

每晚的21:30重启smb

每月1、10、22日的4 : 45重启smb

每周六、周日的1:10重启smb

每天18 : 00至23 : 00之间每隔30分钟重启smb

每星期六的晚上11:00 pm重启smb

每一小时重启smb

晚上11点到早上7点之间,每隔一小时重启smb

每月的4号与每周一到周三的11点重启smb

一月一号的4点重启smb

每小时执行/etc/cron.hourly目录内的脚本

19. Linux的at定时任务调度

与crond不同的是,at任务调度是一次性的,而crond是重复性的

1.1 at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

1.2 默认情况下,atd守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

1.3 at命令是一次性定时计划任务,执行完一个任务后就不再执行这个任务了

1.4 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令查看

ps -ef | grep atd 可以检查atd是否在运行

at [选项] [时间]

按两次 ctrl+d 结束at命令的输入

4.1 当天的hh:mm(小时:分钟),假如这个时间已经过去,那么就第二天的这个时间执行。例如04:00

4.2 模糊的词语,例如midnight、noon、teatime(下午茶时间,16:00左右)

4.3 采用12小时计时制,例如8am

4.4 指定执行命令的具体日期,格式为month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必须跟着写在在指定时间的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4点整执行

4.5 相对计时法,指定格式为now + count time-units,now就是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks。count是时间的数量,例如:now + 5 minutes

4.6 直接用today、tomorrow来指定完成命令的时间

5.1 2天后的下午5点,执行/bin/ls /home指令

at 5pm + 2 days 按回车键

然后写下那个时刻要执行命令 /bin/ls /home

最后按两次ctrl+d退出at指令

5.2 atq指令可以直接执行,查看系统中待执行的工作任务

5.3 明天17:00输出时间到指定文件内 /root/date100.log

at 17:00 tomorrow 按回车键

date /root/date100.log

按两次ctrl+d退出at指令的输入

5.4 2分钟后

at now + 2 minutes

5.5 删除已经设置的任务,atrm 编号

可以用atq列出待执行的任务,列出后第一列就是job编号


文章名称:时间任务命令linux 时间任务管理
转载来源:http://cdiso.cn/article/hpgphd.html

其他资讯