简介
at定时任务,指定一个时间执行一个任务,只能执行一次。需要安装at服务,apt-get install at;
创建at任务
创建at任务方式有两种,从文件输入和从控制台输入。以下分别用两种方式创建1分钟后将当前时间写入 home/result 文件的命令
1、从文件输入
附录
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(明天)来指定完成命令的时间。
2. 运行:at命令的用法
Windows中的计划任务命令行用法:
At
列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。
at [\\computername] [[id] [/delete] | /delete [/yes]]
at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command
参数
无
如果在没有参数的情况下使用,则 at 列出已计划的命令。
\\computername
指定远程计算机。如果省略该参数,命令将安排在本地计算机。
id
指定指派给已计划命令的识别码。
/delete
取消已计划的命令。如果省略了 id,计算机中已计划的命令将被全部取消。
/yes
当删除已计划的事件时,对系统的查询强制进行肯定的回答。
time
指定运行命令的时间。将时间以 24 小时标记(00:00 [午夜] 到 23:59)的方式表示为小时:分钟。
/interactive
允许作业与在作业运行时登录用户的桌面进行交互。
/every:date[,...]
在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行命令。将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。
/next:date[,...]
在重复出现下一天(例如,下个星期四)时,运行指定命令将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。
command
指定要运行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。如果命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c,例如:
cmd /c dir > c:\test.out
3. at指令怎么使用
at命令使用详解
AT命令是Windows
XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
我们可以在“开始→运行”中输入AT命令,下面就来看看AT命令的一些实例分析。
1、定时关机
命令:at
21:00
ShutDown
–S
–T30
该命令运行后,到了21:00点,电脑会出现“系统关机”对话框,并默认30秒延时自动关机。
2、定时提醒
命令:at
12:00
Net
Send
10.10.36
.122与朋友约会的时间到了,快点准备出发吧!
其中Net
Send是Windows内部程序,可以发送消息到网络上的其他用户、计算机。10.10.36.122是本机电脑的IP地址。这个功能在Windows中也称作“信使服务”。
3、自动运行批处理文件
如果公司的数据佷重要,要求在指定的日期/时间进行备份,那么运行:
命令:at
1:00AM
/Every:Saturday
My_BackUp.bat
这样,在每个Saturday(周六)的早上1:00点,电脑定时启动My_BackUp.bat批处理文件。My_BackUp.bat是一个你自行编制的批处理文件,它包含能对系统进行数据完全备份的多条命令。
4、取消已经安排的计划
命令:at
5
/Delete
有时候,你已经安排好的计划可能临时变动,这样你可以及时地用上述命令删除该计划(5为指派给已计划命令的标识编号),当然,删除该计划后,可以重新安排。
AT命令是一个win2000/xp/nt当中的一个命令,然而在我们的入侵当中是一个不可缺少的一项服务,他可以让程序中有一个程序在一定的时间里自动执行,从而操控计算机,
下面说一下他的用法!
AT
命令安排在特定日期和时间运行命令和程序。
要使用
AT
命令,计划服务必须已在运行中。
?????????????????????????????
AT
[\\computername]
[
[id]
[/DELETE]
|
/DELETE
[/YES]]??????????
AT
[\\computername]
time
[/INTERACTIVE]
?
[
/EVERY:date[,...]
|
/NEXT:date[,...]]
"command"
\\computername???
指定远程计算机。
如果省略这个参数,
??????????会计划在本地计算机上运行命令。??????
id?????????
指定给已计划命令的识别号。
/delete???????删除某个已计划的命令。如果省略
id,
??????????计算机上所有已计划的命令都会被删除。
/yes????????
不需要进一步确认时,跟删除所有作业
??????????的命令一起使用。
time????????
指定运行命令的时间。
/interactive????
允许作业在运行时,与当时登录的用户
??????????桌面进行交互。
/every:date[,...]??每个月或每个星期在指定的日期运行命
??????????令。如果省略日期,则默认为在每月的
??????????本日运行。
/next:date[,...]??
指定在下一个指定日期(如,下周四)运
??????????行命令。如果省略日期,则默认为在每
??????????月的本日运行。
"command"??????准备运行的
Windows
NT
命令或批处理
??????????程序。
下面说一下他的几个用法!!
(Viliosn.exe
是一个程序)
1,如果想让启动对方在指定时间里的某个程序,你可在命令行里打入:
At
\\127.0.0.1?23:00
c:\winnt\system32/viliosn.exe
提示:新加了一份作业,
作业id=1
2.让对方的计算机在每周一和周二的23:00启动某个程序.那么你可以打入
At
\\127.0.0.1
23:00
/every:一,二
c:\winnt\system32\viliosn.exe
提示:新加了一份作业,
作业id=2
3.删除对方计算机上作业id为1的任务
At
\\127.0.0.1
1
/delete
/yes
4.删除所有的任务
At
\\127.0.0.1
/delete
提示:是否要删除所有的操作?然后我们打
Y
4. at命令使用事例
l 波特率:115200 bps/s (默认)
l 数据位:8
l 停止位:1
l 奇偶校验位:无
l 数据流控制:无
2.使用注意事项
l 使用本模块时,要把外围所有硬件(串口、电源)都连接上之后,方可上电使用;
l 上电前要把Power Switch 开关打到关闭,接通电源后在打到打开;
l 在关闭或者重起模块之前,应先把超级终端的连接关闭,否则会有PC假死机现象出现。
3.测试的AT命令集
3.1 ATE
作 用:该命令用来决定DCE是否返回从DTE收到的字符。
value
Description
0
DCE 不返回字符给DTE(缺省设置)
1
DCE返回字符给DTE
l 说明:模块在上电初始化后,默认的是DCE 不返回字符给DTE,在超级终端观察造成不便,故设定为DCE返回字符给DTE。
执行命令:ATE1<cr>
返 回:OK
3.2 AT+CSQ
作 用:用来读取当前服务小区的信号强度。
执行命令:AT+CSQ<cr>
返 回:+CSQ: 24,99
OK
3.3 ATD 和 ATH
ATD:用来呼叫远端用户。
ATH:用来挂断所有(可能一个或多个)正在建立的或已经建立的呼叫。
测试如下:
(事例为呼叫13201522550和主动挂断的全过程)
执行命令:ATD13201522550<cr>
返 回:+SIND: 5,1
+SIND: 2
(此时已经拨通)
执行命令:ATH
返 回:OK
+SIND: 11
3.4 AT+CGATT
作 用:附着(Attach)或去附(detach)GPRS服务。
<state>
描述
0
去附了GPRS服务
1
附着了GPRS服务
执行命令:AT+CGATT=1<cr>
返 回:OK
+SIND: 11
检测命令:AT+CGATT? <cr>
返 回:+CGATT: 1
OK
3.5 AT+CGDCONT
作 用:MT发送PDP上下文激活消息的时候使用这个命令配置PDP上下文参数。
参数说明:
l 目前我们只支持IP。
l 中国移动为Internet服务的APN为”cmnet”。
执行命令:AT+CGDCONT=1,"IP","CMNET"<cr>
返 回:OK
3.6 AT+SDATARXMD
作 用:接收数据是HEX码字符串是ACSII码字符串。
设置命令:AT+SDATARXMD=[<connect_id>,<state>,[<mode>]]
参 数:
<connect_id>:整数;范围1~10,用于本地标识所建连接
<state>
<state>
描述
0(缺省值)
接收数据为按照HEX码字符串
1
接收数据为按照ACSII码字符串
<mode>
<state>
描述
0(缺省值)
接收UDP数据自动回显,此时数据仍也可由AT+SDATAREAD读出
1
接收UDP数据不自动回显
执行命令:AT+SDATARXMD=1,1,0<cr>
返 回:OK
执行命令:AT+SDATARXMD=1,0,0<cr>
返 回:OK
3.7 AT+CGACT
作 用:激活(activate)或去活(deactive)指定的PDP上下文。
<state>
描述
0
PDP 上下文去活
1
PDP 上下文激活
执行命令:AT+CGACT=1,1<cr>
返 回:OK
3.8 AT+SDATACONF
作 用:设置基于GPRS上通过AT命令发送数据的配置参数。
参数说明:
l 目前支持”UDP”和”TCP”;
l 给定server的ip地址;
l 给定server的port端口号;
情况一:(SERVER关闭)
执行命令:AT+SDATACONF=
1,"TCP","61.185.152.193",2020<cr>
(与SERVER建立连接)
返 回:OK
执行命令:AT+SDATASTART=1,1<cr>
(激活TCP)
返 回:OK
执行命令:AT+SSTRSEND=
1,"FORM SPREADTRUM"<cr>
(发送数据)
返 回:+CME ERROR: 21(远端服务器没有响应)
情况二:(SERVER打开)
执行命令:AT+SDATACONF=
1,"TCP","61.185.152.193",2020<cr>
(61.185.152.193 2020为SERVER的IP和PORT )
返 回:OK
执行命令:AT+SDATASTART=1,1<cr>
返 回:OK
执行命令:AT+SSTRSEND=1,"FROM SPREADTRUM"<cr>
返 回:OK
3.9 AT+SDATASTART
作 用:采用AT+SDATACONF命令配制完参数后启动GPRS服务
设置命令:AT+SDATASTART=[<connect_id>,<state>]<cr>
<state>
描述
1
激活UDP/TCP连接
0
去活UDP/TCP连接
执行命令:AT+SDATASTART=1,1<cr>
返 回:OK
3.10 AT+SDATASEND
作 用:发送用户指定的HEX字符串数据。
设置命令:AT+SDATASEND=[<connect_id>,<length><cr>
执行命令:AT+SDATASEND=1,6<cr>
返 回:〉12 34 56 78 90 21 32<ctrl+ Z>
OK
3.11 AT+SSTRSEND
作 用:发送用户指定的字符串数据。
设置命令:AT+SSTRSEND=[<connect_id>,<data>]
执行命令:AT+SSTRSEND=1,”HELLO EVERYONE”<CR>
返 回:OK
3.12 AT+SDATAREAD
作 用:读取服务器发来的数据
设置命令:AT+SDATAREAD=[<connect_id>]
执行命令:AT+SDATAREAD=1<CR>
返 回:+SDATA:1,3,123122
执行命令:AT+SDATAREAD=1<CR>
返 回:+SSTR:1,abcdabcdabcdabcd
3.13 AT+CMGF
作 用:该命令用来读取或设置短消息的格式.
设置命令:AT+CMGF=<mode><CR>
mode
描述
0
P 模式(缺省设置)
1
Text 模式
执行命令:AT+CMGF=1<CR>
返 回:OK
3.14 AT+CMGL
作 用:用来列表不同状态或所有的短消息。
设置命令:AT+CMGL=<state><CR>
执行命令:AT+CMGL=”ALL”<CR> (显示所有短消息)
返 回:
+CMGL: 1,0,"REC READ","+8613572211745","05/05/20,20:40:30+00"
1234567890
+CMGL: 2,2,"REC READ","+8613201522550","05/05/21,16:44:10+00"
54C854C8
OK
3.15 AT+CMGR
作 用:用来读取指定的某条短消息。
设置命令:AT+CMGR=<index><CR>
执行命令:AT+CMGR=1<CR>
返 回:
+CMGR: "REC READ",0,"+8613572211745","05
1234567890
OK
执行命令:AT+CMGR=2<CR>
返 回:
+CMGR: "REC UNREAD",2,"+8613201522550","05/05/21,16:44:10+00"
54C854C8
OK
3.16 AT+CMGS
作 用:用来发送短消息。
如果发送短消息的格式为text (AT+CMGF=1) 模式:
设置命令:AT+CMGS=<da>[,<moresms>]<CR>
> TEXT <ctrl+Z/ESC>
如果发送短消息的格式为PDU (AT+CMGF=0) 模式
设置命令:AT+CMGS=<length><CR>
> PDU <ctrl-z/ESC>
返回:+CMGS: <mr>
OK
执行命令:AT+CMGS=”13201520550”<CR>
返 回:>HELLO<ctrl-z/ESC>
+CMGS: 248
OK
3.17 AT+CSMP
作 用:该命令用来设置或读取<vp>,<pid>,和<dcs>
设置命令:AT+CSMP=<fo>,<vp>,<pid>,<dcs>
执行命令:AT+CSMP=19,143,0,2<CR>
返 回:OK
3.17 AT+CMGD
作 用:用来删除一条或所有短消息。
设置命令:AT+CMGD=<index>[, <DelFlag>]
执行命令:AT+CMGD=1
返 回:OK
4.一个完整的短消息接收、发送、删除的示例
上电后具体操作如下:
(1) AT<CR>
OK
(2) ATE1<CR>
OK
(3) AT+CMGF=1<CR>
OK
(4) AT+CMGL=”ALL”<CR>
+CMGL: 1,0,"REC READ","+8613572211745","05/05/20,20:40:30+00"
1234567890
+CMGL: 2,2,"REC READ","+8613201522550","05/05/21,16:44:10+00"
54C854C8
OK
(5) AT+CMGR=1<CR>
+CMGR: "REC READ",0,"+8613572211745","05
1234567890
OK
(6) AT+CMGR=2<CR>
+CMGR: "REC UNREAD",2,"+8613201522550","05/05/21,16:44:10+00"
54C854C8
OK
(7) AT+CSMP=19,143,0,2<CR>
OK
(8) AT+CMGS="13201522550"<CR>
>HELLO<CR>
+CMGS: 248
OK
(9) AT+CMGD=1<CR>
OK
(10) AT+CMGD=1<CR>
OK
(11) AT+CMGL=”ALL”<CR>
OK
5.GPRS数据传输(发送和接收)的一个示例
(1) AT<CR>
OK
(2) ATE1<CR>
OK
(3) AT+CGATT=1<CR>
OK
(4) AT+CGDCONT=1,”IP”,”CMNET” <CR>
OK
(5) AT+SDATACONF=
1,"TCP","61.185.152.193",2020<cr><CR>
(61.185.152.193 2020为SERVER的IP和PORT )
OK
(6) AT+SDTATSTART=1,1<CR>
OK
(7) AT+SDATARXMD=1,1,0<CR>
OK
(8) AT+SSTRSEND=1,"FROM SPREADTRUM"<CR>
OK
(9) AT+SDATAREAD=1<CR>
+SSTR:1,abcdabcdabcdabcd
OK
(10) AT+SDATARXMD=1,0,0<CR>
OK
(11) AT+SDATASEND=1,6<CR>
>12 34 56 78 90 21 32<ctrl+ Z>
OK
(12) AT+SDATAREAD=1
+SDATA:1,3,123122
OK
5. 详细介绍下at命令怎么用
AT命令集的描述
符号 * 表明该命令的设置可用AT&Wn命令存于两个用户方案中的一个
A/ 重执行命令
重执行前一AT命令行,主要用于连接时占线,无应答或号码错误。这一命令必须单独构成一命令行并由"/"字符结束,(<Enter> 不能用于结束命令)。
+++ 退出字符 缺省:+
切换调制解调器从在线状态到命令状态,而不会中断数据连接。可以通过改变S寄存器S2的值来改变这一字符。
AT=x 写入被选的S寄存器
这一命令将数值x写入当前被选的S寄存器,一个S寄存器可由ATSn命令选择,若 x 是一个数字,所有S 寄存器将返回 OK 响应。
AT? 读被选的S寄存器
这一命令读并且显示被选的S寄存器的内容。一个S寄存器可由ATSn命令选择。
ATA 应答
它必须是命令行中的最后一条指令。调制解调器在应答方式下继续执行连接程序。在与远端调制解调器交换载波后进入连接状态,如果在由寄存器S7规定的时间内(缺省值=50秒)没有检测到载波, 调制解调器将挂机。在连接过程中,通过DTE输入的任何一个字母都将中断这一命令。
ATBn* 选择ITU-T或Bell模式 缺省=0
ATB0 选择在1200和300bps速率下通讯的ITU-T V.22和V.21协议
ATB1 选择在1200和300bps速率下通讯的Bell 212A和103协议
ATCn 载波控制缺省=1
包含这一命令只是为了保证兼容性,执行号只是返回一结果码而没有其它作用。
ATC1 正常传输载波切换
ATDn 拨号
它必须是命令行中的最后一条指令, ATD命令使调制解调器摘机后, 根据输入的参数拨号,以建立连接。
如果不带参数,调制解调器摘机后,不拨号进入发起方式。
使用标点可使命令更易读懂。圆括号,连字符和空格符会被忽略。拔号命令行中如果出现了非法字符,则该字符及其后的内容将被忽略。调制解调器允许的拨号命令长度为36个字符。
参数:0-9 A B C D * # L P T R ! @ W , ; ^ S=n
0-9 DTMF 符号0到9
A-D DTMF 符号A,B,C和D。在一些国家中不使用这些符号
* "星"号(仅用于音频拨号)
# "#"号(仅用于音频拨号)
J 为本次呼叫执行在可提供的最高速率下的MNP10链路协商(可选)
K 使本次呼叫MNP10链路协商期间电源电平可调(可选)
L 重拨上一次拨过的号码
P 脉冲拨号
T 双音频拨号
R 逆叫方式。允许调制解调器使用应答方式呼叫只能作为发起使用的调制解调 器, 必须作为命令行中的最后一个字符输入。
! 使调制解调器按照S29中规定的值挂机一段时间再摘机。
@ 使调制解调器等待5秒钟的无声回答
w 按照寄存器S7中规定的时间,在拨号前等待拨号音。
, 在拨号过程中,按照寄存器S8中规定的时间,暂停
; 拨号后返回命令状态
^ 打开呼叫音
() 被忽视,用于格式化号码串
- 被忽视,用于格式化号码串
<space> 被忽视,用于格式化号码串
S=n 用AT&Zn 命令存在地址n处的号码拨号
ATE* 命令回应 缺省:1
ATE0 关闭命令回应
ATE1 打开 命令回应
ATHn 摘挂机控制 缺省:0
ATH0 使调制解调器挂机
ATH1 当调制解调器处于挂机状态,使调制解调器摘机,返回响 OK,等待进一步的命令。
ATIn 识别
I0 报告产品代码
I1 报告ROM中预先计算的校验和
I2 计算校验和并与ROM中的校验和比较,返回"OK"或"ERROR"结果码
I3 报告固件修正
I4 报告OEM定义的识别串
I5 报告国家代码参数
I6 报告固件修正
I7 报告调制解调器数据泵类型
ATLn* 扬声器音量 缺省:2
ATL0 扬声器低音量
ATL1 扬声器低音量
ATL2 扬声器中音量
ATL3 扬声器高音量
ATMn* 扬声器控制 缺省:1
ATM0 关闭扬声器
ATM1 扬声器在呼叫建立握手阶段打开至检测到来自于远端调制解调器的载波后关闭
ATM2 扬声器持续开
ATM3 扬声器在应答期间打开。当检测到来自于远端的调制解调器的载波和拨号时关闭
ATNn* 调制握手 缺省:1
ATN0 要求调制解调器S37选择连接速率,若S37=0,则连接速率必须与发出的上一条AT命令的速率相匹配。如果所选择的速率可用不止一个通讯标准实现(如Bell212A或ITU-T V.22 速率在 1200bps)调制解调器同时参考ATB 命令选择。
ATN1 允许时使用双方调制解调器都支持的任一速率握手,使能够自动检测。在这一方式下,ATB命令被忽视,调制解调器只用ITU-T方式连接。
ATOn 进入数据在现状态 缺省:0
ATO0 使调制解调器从命令在现状态直接返回数据在线状态,不经过自动均衡。
ATO1 使调制解调器从命令在现状态返回数据在状态,经过自动均衡。
ATP* 设脉冲拨号为缺省
ATQn* 结果码显示 缺省:0
ATQ0 调制解调器向DTE发送结果码
ATQ1 禁止调制解调器向DTE发送结果码
参阅调制解调器结果码一节的详细说明
ATSn 设S寄存器n为缺省寄存器
ATSn? 读S寄存器
读S寄存器中的内容,所有的S寄存器都可以读
ATSn=x 写入S寄存器
将 x值写入指定的S寄存器n
ATT* 设音频拔号为缺省
ATVn* 结束码类型 (消息控制) 缺省:1
ATV0 发送短型 (数字型) 结果码
ATV1 发送长型 (字符型) 结果码
ATWn* 协商进程报告 缺省:0
ATW0 不报告纠错呼叫进程
ATW1 报告纠错呼叫进程
ATW2 不报告纠错呼叫进程,CONNECT xxxx指示DCE速率。
ATXn* 扩展结果码 缺省:4
ATX0 调制解调器忽视拨号音和忙音。当由盲拨建立连接时,发送CONNECT信息。
ATX1 调制解调器忽视拨号音和忙音。当由盲拨建立连接时,CONNECT XXXX 反映的是比特速率
ATX2 调制解调器忽视忙音,但在拨号前等待拨号音,如果5秒钟内检测不到拨号音,则发送NO DIAL TONE 信息,连接建立后 发送 CONNECT xxxx反映比特速率。
ATX3 调制解调器忽视拨号音,若检测到忙音,发送BUSY信息,当由盲拨建立起连接时, CONNECT XXXX 反映的是比特速率。
ATX4 如果5秒钟内检测不到拨号音,发送NO DIAL TONE 讯息,检测到忙音, 发送BUSY信息。连接建立后发送CONNECT XXXX 反映比特速率。
6. AT指令是什么
AT
即Attention,AT指令集是从终端设备(Terminal
Equipment,TE)或数据终端设备(Data
Terminal
Equipment,DTE)向终端适配器(Terminal
Adapter,
TA)或数据电路终端设备(Data
Circuit
Terminal
Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile
Station,MS)的功能,与GSM
网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS
BlockMode的协议,通过终端设备(TE)或电脑来完全控制
7. android怎么在代码中执行AT指令
AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。
其对所传输的数据包大小有定义:即对于AT指令的发送,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。
每个AT命令行中只能包含一条AT指令;对于由终端设备主动向PC端报告的URC指示或者response响应,也要求一行最多有一个,不允许上报的一行中有多条指示或者响应。AT指令以回车作为结尾,响应或上报以回车换行为结尾。
8. 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 来管理的!
9. linux中at命令
at命令
at:计划任务,在特定的时间执行某项工作,在特定的时间执行一次。
格式:at+时间
例1:date //查看系统当前时间
at 时间 //系统计划启动任务时间
at> date >/root/1.txt //date:系统计划启动任务时间执行date命令;/root/1.txt执行命令写入位
置和文件
ctrl+d退出 //退出at命令
例2:date //查看系统当前时间
at 时间 //系统计划启动任务时间
at> init 0 /root/2.txt //init 0:系统计划启动任务时间执行init 0(关机)命令;/root/2.txt执
行命令写入位置和文件
例3:在固定时间内添加一个用户(这时建立的用户没有密码)
#at 12:00(时间) //at命令设定12:00执行一项操作
at>useradd aaa //在at命令里设定添加用户aaa
ctrl+d //退出at命令
tail -f /etc/passwd //查看/etc/passwd文件后十行是否增加了一个用户aaa
计划任务结束后,查看任务是否写入文件中,可以用cat或vi命令查看。
格式:cat(vi)+(路径)文件名
例1:cat(vi) 1.txt
日 2月 6 09:21:28 CST 2005
计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务。
格式:atq
例:atq
1 2005-02-06 09:23 a root
启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
格式:atrm+任务号
例:atrm 1 //删除计划任务1
atq //查看计划任务是否删除
还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f
文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)
例:#cd /var/spool/at //进入到/var/spool/at目录中
ls //显示目录中所有文件
rm -f a0000a0119b0df //删除计划任务
在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文
件:/etc/at.allow和/etc/at.deny。
当“用户名”写入/etc/at.deny中,用户不能执行at命令(管理员限制用户使用at命令)。
例:useradd text //新建一个text用户
ls /etc/at.deny //查看at.deny文件内容
vi /etc/at.deny //对at.deny文件进行编辑
text //对at.deny文件进行编辑,写入text用户名,进行at命令限制,然后wq(保存退出)
cat /etc/at.deny //显示at.deny文件内容
su - text //切换到text用户
at 12:00 //text用户执行at命令,如果被限制则出现下面的提示。
You do not have permission to use at.你不允许使用at这个命令
at.allow比at.deny优先级高
at.allow文件中有的用户可以执行at,没有则不能。
linux操作系统在执行用户是否可以执行at命令时,先看at.allow文件没有才看at.deny文件。
注意:linux操作系统默认没有/etc/at.allow文件。
例:ls /etc/at.allow //查看是否已经建立at.allow文件
touch /etc/at.allow //建立/etc/at.allow文件
vi /etc/at.allow //对at.allow文件进行编辑
text //对at.allow文件进行编辑,写入text用户名,该用户名可以执行at命令,然后wq(保存退出)。
su - text //切换到text用户
at 12:00 //text用户执行at命令,若不出现上面所说的提示就可以进行at命令设定了。
at命令格式
at HH:MM YYYY-MM-DD //HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日)
例:at 4:00 2004-11-27
HH[am pm]+D(天) days //HH(小时)[am(上午)pm(下午)]+days(天)
例:4pm + 3days :3天以后下午4:00执行at命令设定的计划任务。
10. linux.at 命令怎么用
一次性定时计划任务的at命令的用法!
1.命令格式:
at[参数][时间]
2.命令功能:
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(
ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行 chkconfig --level 2345 atd on)。
3.命令参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<列队> 使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务 《Linux就该这么学》
使用实例:
实例1:三天后的下午 5 点锺执行 /bin/ls
命令:
at 5pm+3 days
输出:
[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at> <EOT>
job 7 at 2013-01-08 17:00
[root@localhost ~]#
说明:
实例2:明天17点钟,输出时间到指定文件内
命令:
at 17:20 tomorrow
输出:
[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.log
at> <EOT>
job 8 at 2013-01-06 17:20