包含linux7没有at命令的词条

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中at命令

linux

at

命令详解

使用方式

:

at

-V

[-q

queue]

[-f

file]

[-mldbv]

TIME

说明

:

at

可以让使用者指定在

TIME

这个特定时刻执行某个程序或指令,TIME

的格式是

HH:MM其中的

HH

为小时,MM

为分钟,甚至你也可以指定

am,

pm,

midnight,

noon,

teatime(就是下午

4

点锺)等口语词。

如果想要指定超过一天内的时间,则可以用

MMDDYY

或者

MM/DD/YY

的格式,其中

MM

是分钟,DD

是第几日,YY

是指年份。另外,使用者甚至也可以使用像是

now

+

时间间隔来弹性指定时间,其中的时间间隔可以是

minutes,

hours,

days,

weeks。

另外,使用者也可指定

today

tomorrow

来表示今天或明天。当指定了时间并按下

enter

之后,at

会进入交谈模式并要求输入指令或程序,当你输入完后按下

ctrl+D

即可完成所有动作,至于执行的结果将会寄回你的帐号中。

参数

:

-V

:

印出版本编号

-q

:

使用指定的伫列(Queue)来储存,at

的资料是存放在所谓的

queue

中,使用者可以同时使用多个

queue,而

queue

的编号为

a,

b,

c...

z

以及

A,

B,

...

Z

52

-m

:

即使程序/指令执行完成后没有输出结果,

也要寄封信给使用者

-f

file

:

读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入

-l

:

列出所有的指定

(使用者也可以直接使用

atq

而不用

at

-l)

-d

:

删除指定

(使用者也可以直接使用

atrm

而不用

at

-d)

-v

:

列出所有已经完成但尚未删除的指定

linux命令详解之at

Linux下,有两个命令可以用来作为计划任务而执行,

要使用一次性任务计划,linux必须要有负责这个计划任务的服务,那就是atd服务

但是并非所有的linux distribution都默认会打开,我们需要手动激活爱听的任务

如果服务未安装,则需要手动安装

#:yum install - y at 或 #:apt-get install at

如果担心启动是否执行OK的话,可使用命令查看:

#:ps aux |grep atd

或者使用

systemctl status atd

# 查阅一下 atd 目前的状态,Active 状态应是 running

使用 at 这个指令来产生所要运行的工作,并 将这个工作以文本文件的方式写入 /var/spool/cron/atjobs/ 目录内,该工作便能等待 atd 这个服务的取用与执行了。 不过,因为安全的理由,并不是所有的人都可以进行 at 工作调度!

at 的使用限制是利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行的! 加上这两个文件后,at 的工作情况其实是这样的:

在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允 许所有人使用 at 指令的意思 (您可以自行检查一下该文件)。 不过,万一你不希望有某些 使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。

单一工作调度的进行就使用 at 这个指令!这个指令的运行非常简单!将 at 加上一个时间即可!基本的语法如下:

事实上,当我们使用 at 时会进入一个 at shell 的环境来让使用者下达工作指令,此时,建议 你最好使用绝对路径来下达你的指令,比较不会有问题!由于指令的下达与 PATH 变量有关, 同时与当时的工作目录也有关连 (如果有牵涉到文件的话),因此使用绝对路径来下达 指令,会是比较一劳永逸的方法。 举例来说,你在 /tmp 下达 at now 然后输入 mail -s "test" root .bashrc , 问一下,那个 .bashrc 的文件会是在哪里?答案是 /tmp/.bashrc !因为 at 在运行时,会跑到当时下达 at 指令的那个工作目录运行!

要注意的是,如果在 at shell 内的指令并没有任何的讯息输出,那么 at 默认不会发 email 给执行者的。 如果你想要让 at 无论如何都发一封 email 告知你是否执行了指令,那么 可以使用“ at -m 时间格式 ”来下达指令! at 就会传送一个讯息给执行者,而不论该指令执行有无讯息输出了!

如果要在某某时刻,在我的终端机显示出 Hello 的字样,可以通过终端机的设备来处理!假如你在 tty1 登陆(在命令行里面输入 tty 可以查看),则可以使用 echo "Hello" /dev/tty1 。

at 有另外一个很棒的优点, 由于 at 工作调度的使用上,系统会将该项 at 工作独立出你的 bash 环境中, 直接交给系统的 atd 程序来接管,因此,当你下达了 at 的工作之后就可以立刻离线了, 剩下的工作就完全交 给 Linux 管理即可!所以如果有长时间的网络工作时,使用 at 可以让你免除网络断线后的困扰。

其实 batch 是利用 at 来进行指令的下达!只是加入一些控制参数而已。这个 batch 神奇的地方在于:他会在 CPU 的工作负载小于 0.8 的时候,才进行你所下达的工作任务啦!

那什么是工作负载 0.8 呢?这个工作负载的意思是: CPU 在单一时间点所负责的工作数量。不是CPU 的使用率喔! 举例来说,如果我有一只程序他需要一直使用 CPU 的运算功能,那么此 时 CPU 的使用率可能到达 100% , 但是 CPU 的工作负载则是趋近于“ 1 ”,因为 CPU 仅负责一个工作!如果同时执行这样的程序两支呢? CPU 的使用率还是 100% ,但是工作负载 则变成 2 了! 所以也就是说,当 CPU 的工作负载越大,代表 CPU 必须要在不同的工作之间进行频繁的工 作切换。 因为一直切换 工作,所以会导致系统忙碌啊! 系统如果很忙碌,还要额外进行 at ,不太合理!所以才有 batch 指令的产生!

下面来实验一下 batch 好了!为了产生 CPU 较高的工作负载,我们用了 计算 pi 的脚本,连续执行 4 次这只程序, 来仿真高负载,然后看看batch 的工作现象。

使用 uptime 可以观察到 1, 5, 15 分钟的“平均工作负载”量,因为是平均值,所以当我们如上 表删除掉四个工作后,工作负载不会立即降低, 需要一小段时间让这个 1 分钟平均值慢慢回 复到接近 0 啊!当小于 0.8 之后的“整分钟时间”时,atd 就会将 batch 的工作执行掉了!

什么是“整分钟时间”呢?不论是 at 还是 crontab,他们最小的时间单位是“分 钟”,所以,基本上,他们的工作是“每分钟检查一次”来处理的! 就是整分 (秒为 0 的时候),同时,你会发现其实 batch 也是使用 atq/atrm 来管理的!


分享名称:包含linux7没有at命令的词条
URL链接:http://csdahua.cn/article/hpcpip.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流