AT简介

AT即Attention,AT指令集是从终端设备(Terminal Equipment,TE) 或数据中断设备( Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit TerminalEquipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的Block Mode;基于AT指令的Text Mode;基于AT指令的PDU Mode。到现在PDU Mode已经取代BlockMode,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在中。每个指令执行成功与否都有相应的返回,其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。


at 命令格式:at [参数] [时间]

at 命令参数:

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

-1atq的别名

-d atrm的别名

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

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

-V显示版本信息

-q<列队>使用指定的列队

-f<文件> 从指定文件读入任务而不是从标准输入读入

·-t<时间参数>以时间参数的形式提交要运行的任务

at 安装

#安装at

[root@peipei3514 ~]# yum install -y at

#启动守护进程

[root@peipei3514 ~]# systemctl start atd

#查看是否开机启动

[root@peipei3514 ~]# systemctl list-unit-files|grep atd

#设置开机启动

[root@peipei3514 ~]# systemctl enable atd

at 使用

●如果不使用管道|或指定选项 -f 的话,at 的执行将会是交互式的,需要在

at 的提示符下输入命令:

1.#创建定时任务

2.[root@peipei3514 /]# at now +2 minutes #执行at并指定执行时刻为现在

时间的后两分钟

3. at> echo hello world>/tmp/file #手动输入命令并回车

4.at><EOT>   #ctrl+d 结束输入

5.job 3 at Wed May2 18:20:00 2018#显示任务号及执行时间

●选项 -l或命令 atq 查询任务:

1.[root@peipei3514 /]# atq

2.3   Wed May 218:20:00 2018 a root

●到达时间后任务被执行,生成一个新文件file并保存echo的输出内容:

1.[root@peipei3514 /]#ll tmp/

2.总用量 4

3.-rw-r--r--. 1 root root 12 5月2 18:20 file

4.drwx------. 3 root root 17 5月

2 16:56 systemd-private-

9b1eddd804d24223a769ba0be3fc7736-chronyd.service-hAmDBg

5.drwx------. 2 root root 6 5月216:56 tmp.6EvK3t6xmq

6.drwx------. 2 root root 6 4月 23 18:41 tmp.HEQ599GHwD

7.drwx------. 2 root root 6 5月2 12:44 tmp.VqttdTFfak

8.drwx------. 2 root root 6 4月 23 18:41 tmp.WDevelDATu

9.[root@peipei3514 /]# cat /tmp/file

10. hello world

●选项 -d 或命令 atrm 表示删除任务:

1.[root@peipei3514 /]# at -d 3 #删除3号任务(上例)

2.[root@peipei3514 /]# atq

3.[root@peipei3514 /]#

●可以使用管道|或选项-f让at从标准输入或文件中获得任务:

1.[root@peipei3514 /]# cat test.txt

2. echo hello world >/root/temp/file

3.[root@peipei3514 /]# at -f test.txt 5pm +2 days

4. job 12 at Wed May418:20:00 2018

5.[root@peipei3514 /]# cat test.txt|at 16:20 12/23/18

6. job 13 at Fri Dec 23 16:20:00 2018

at时间格式

  • ·at指定时间的方法很丰富,可以是:

1.hh:mm 小时:分钟(当天,如果时间已过,则在第二天执行);

2.midnight( 深夜),noon( 中午 ),teatime(下午茶时间,下午4点),today,tomorrow等;

3.12小时计时制,时间后加am(上午)或pm(下午);

4.指定具体执行日期:mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年);

5.相对计时法: now + n units,now是现在时刻,n为数字,units是单位

(minutes、hours、days、weeks)。

  • ·如明天下午2点20分执行创建一个目录:

1.[root@peipei3514 /]# at 02:20pm tomorrow

2.at> mkdir /root/temp/X

3.at>,<EOT>

4. job 4 at Wed May 2 18:25:00 2018

at控制文件

atd 通过两个文件/etc/at.allow 和/etc/at.deny 来决定系统中哪些用户可以使用 at 设置定时任务,它首先检查/etc/at.allow,如果文件存在,则只有文件中列出的用户(每行一个用户名),才能使用 at;如果不存在,则检查文件/etc/at.deny,不在此文件中的所有用户都可以使用 at。如果/etc/at.deny 是空文件,则表示系统中所有用户都可以使用 at;如果/etc/at.deny 文件也不存在,则只有超级用户(root)才能使用at。

at例子

实例1:三天后的下午5点钟执行/bin/ls

  • ·命令:

at 5pm+3 days

  • 输出:

1.[root@localhost ~]# at 5pm+3 days

2.at>/bin/ls

3.at>,<EOT>

4.job 7 at 2013-01-08 17:00

5. [root@localhost ~]#

实例2:明天17点钟,输出时间到指定文件内

●命令:

at 17:20 tomorrow

●输出:

1.[root@localhost ~]# at 17:20 tomorrow

2.at> date >/root/2013.log

3.at><eOt>

4.job 8 at 2013-01-06 17:20

5.[root@localhost ~]#

实例3:计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没

有执行工作任务

●命令:

atq

●输出:

1.[root@localhost ~]# atq

2.8 2013-01-06 17:20 a root

3.7 2013-01-08 17:00 a root

4.[root@localhost ~]#

实例4:删除已经设置的任务

●命令:

atrm 7

●输出:

1.[root@localhost ~]# atq

2.8 2013-01-06 17:20 a root

3.7 2013-01-08 17:00 a root

4.[root@localhost ~]# atrm 7

5.[root@localhost ~]# atq

6.8 2013-01-06 17:20 a root

7.[root@localhost ~]#

实例5:显示已经设置的任务内容

●命令:

at-c8

●输出:

1.[root@localhost ~]# at -c8

2.#!/bin/sh

3.# atrun uid=0 gid=0

4.# mail root 0

5.umask 22此处省略n个字符

6.date >/root/2013.log

7.[root@localhost ~]#

关注公众号↑↑↑:IT运维大本营,获取60个G的《网工大礼包》