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 命令参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-1atq的别名
-d atrm的别名
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q<列队>使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
·-t<时间参数>以时间参数的形式提交要运行的任务
#安装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
●如果不使用管道|或指定选项 -f 的话,at 的执行将会是交互式的,需要在
at 的提示符下输入命令:
1.#创建定时任务
2.[root@peipei3514 /]# at now +2 minutes #执行at并指定执行时刻为现在
时间的后两分钟
3. at> echo hello world>/tmp/file #手动输入命令并回车
4.at> #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
●选项 -d 或命令 atrm 表示删除任务:
1.[root@peipei3514 /]# at -d 3 #删除3号任务(上例)
2.[root@peipei3514 /]# atq
3.[root@peipei3514 /]#
●可以使用管道|或选项-f让at从标准输入或文件中获得任务:
1.[root@peipei3514 /]# cat test.txt
3.[root@peipei3514 /]# at -f test.txt 5pm +2 days
5.[root@peipei3514 /]# cat test.txt|at 16:20 12/23/18
·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>,
4. job 4 at Wed May 2 18:25:00 2018
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。
实例1:三天后的下午5点钟执行/bin/ls
·命令:
at 5pm+3 days
输出:
1.[root@localhost ~]# at 5pm+3 days
2.at>/bin/ls
3.at>,
4.job 7 at 2013-01-08 17:00
实例2:明天17点钟,输出时间到指定文件内
●命令:
at 17:20 tomorrow
●输出:
1.[root@localhost ~]# at 17:20 tomorrow
2.at> date >/root/2013.log
3.at>
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的《网工大礼包》