linux下at命令的简单介绍

at命令nomailforroot怎么解决at命令用法详解
在linux系统中你可能已经发现了为什么系统常常会自动的进行一些任务?这些任务到底是谁在支配他们工作的?
在linux系统如果你想要让自己设计的备份程序可以自动在某个时间点开始在系统底下运行,而不需要手动来启动它,又该如何处置呢?
这些例行的工作可能又分为一次性定时工作与循环定时工作,在系统内又是哪些服务在负责?
还有,如果你想要每年在老婆的生日前一天就发出一封信件提醒自己不要忘记,linux系统下该怎么做呢?
今天我们主要学习一下一次性定时计划任务的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时间参数 以时间参数的形式提交要运行的任务
at允许使用一套相当复杂的指定时间的方法 。它能够接受在当天的hh:mm(小时:分钟)式的时间指定 。
假如该时间已过去,那么就放在第二天执行 。
当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间 。
用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午 。
也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年) 。指定的日期必须跟在指定时间的后面 。
上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的 。
指定格式为:nowcount time-units ,
now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期) 。
count是时间的数量,究竟是几天,还是几小时,等等 。更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间 。
time:时间格式 , 这里可以定义出什么时候要进行 at 这项任务的时间,格式有:HH:MMx 04:00
在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务 。HH:MM YYYY-MM-DDex 04:00 2009-03-17
强制规定在某年某月的某一天的特殊时刻进行该项任务 。HH:MM[am|pm] [Month] [Date]ex 04pm March 17
也是一样,强制在某年某月某日的某时刻进行该项任务 HH:MM[am|pm]number [minutes|hours|days|weeks]
ex now5 minutes
ex 04pm3 days
就是说,在某个时间点再加几个时间后才进行该项任务 。
inux at命令如何保存退出:输入"at指定的时间"之后回车,然后输入要运行的命令,回车 , 按组合键Ctrl D
4.使用实例:
4.1 三天后的下午5点锺执行/bin/ls
命令:at 5pm 3 days
[moiaopr@CNSZ443239 ~]$ at 5pm 3 days
at /bin/ls
at
at
job 9 at 2016-11-24 17:00
4.2 明天17点钟,输出时间到指定文件内
命令:at 17:20 tomorrow
[moiaopr@CNSZ443239 ~]$ at 17:20 tomorrow
at ls test01.txt
at
job 10 at 2016-11-22 17:20
4.3 计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务
命令:atq
[moiaopr@CNSZ443239 ~]$ atq
32016-11-24 17:00 a moiaopr
102016-11-22 17:20 a moiaopr
92016-11-24 17:00 a moiaopr
42016-11-21 22:00 a moiaopr
52016-11-24 17:00 a moiaopr
4.4 显示已经设置的任务内容
命令:at -c 8
[moiaopr@CNSZ443239 ~]$ atq
112016-11-21 16:55 a moiaopr
[moiaopr@CNSZ443239 ~]$ at -c 11
!/bin/sh
atrun uid=4010 gid=3020
mail moiaopr 0
umask 27
......
4.5 删除已经设置的任务
命令:atrm 7
[moiaopr@CNSZ443239 ~]$ atq
32016-11-24 17:00 a moiaopr
92016-11-24 17:00 a moiaopr
42016-11-21 22:00 a moiaopr
52016-11-24 17:00 a moiaopr
62016-11-22 17:00 a moiaopr
12016-11-24 17:00 a moiaopr
72016-11-21 16:37 a moiaopr
22016-11-24 17:00 a moiaopr
[moiaopr@CNSZ443239 ~]$ atrm 9
[moiaopr@CNSZ443239 ~]$ atrm 7
[moiaopr@CNSZ443239 ~]$ atrm 6
[moiaopr@CNSZ443239 ~]$ atrm 5
[moiaopr@CNSZ443239 ~]$ atrm 4
[moiaopr@CNSZ443239 ~]$ atq
32016-11-24 17:00 a moiaopr
12016-11-24 17:00 a moiaopr
22016-11-24 17:00 a moiaopr
5.atd的启动与at运行的方式:
5.1 atd 的启动
要使用一次性计划任务时 , 我们的 Linux 系统上面必须要有负责这个计划任务的服务,那就是 atd 服务 。
不过的方法很简单,就是这样:
并非所有的 Linux distributions都默认会把他打开的 , 所以,某些时刻我们需要手动将atd 服务激活才行 。
激活
命令:
/etc/init.d/atd start
/etc/init.d/atd restart
说明:
/etc/init.d/atd start 没有启动的时候,直接启动atd服务
/etc/init.d/atd restart 服务已经启动后,重启atd服务
5.2 配置一下启动时就启动这个服务,免得每次重新启动都得再来一次
命令:
chkconfig atd on
输出:
[root@localhost /]# chkconfig atd on
[root@localhost /]#
5.3 at 的运行方式
既然是计划任务 , 那么应该会有任务执行的方式,并且将这些任务排进行程表中 。那么产生计划任务的方式是怎么进行的?
事实上,我们使用at这个命令来产生所要运行的计划任务,并将这个计划任务以文字档的方式写入/var/spool/at/目录内 , 该工作便能等待 atd 这个服务的取用与运行了 。就这么简单 。不过,并不是所有的人都可以进行 at 计划任务 。为什么? 因为系统安全的原因 。很多主机被所谓的攻击破解后,最常发现的就是他们的系统当中多了很多的黑客程序,这些程序非常可能运用一些计划任务来运行或搜集你的系统运行信息,并定时的发送给黑客 。所以,除非是你认可的帐号,否则先不要让他们使用 at 命令 。那怎么达到使用 at 的可控呢?
我们可以利用 /etc/at.allow 与 /etc/at.deny 这两个文件来进行 at 的使用限制 。加上这两个文件后 , at 的工作情况是这样的:
先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);
如果 /etc/at.allow 不存在 , 就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者,就可以使用 at 命令了 。
如果两个文件都不存在,那么只有 root 可以使用 at 这个命令 。
透过这个说明 , 我们知道 /etc/at.allow 是管理较为严格的方式 , 而 /etc/at.deny 则较为松散 (因为帐号没有在该文件中,就能够运行 at 了) 。在一般的 distributions 当中,
由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允许所有人使用 at 命令的意思 (您可以自行检查一下该文件) 。
不过,万一你不希望有某些使用者使用 at 的话 , 将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行
linux中at的执行结果放在哪里之前说了使用crontab实现定时执行任务,假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了 。
一、at服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业 。
service atd start//启动服务
service atdstop//关闭服务
service atd restart//重启服务
service atd reload//重新载入配置
service atd status//查看服务状态
二、at在配置文件:
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它。at命令相当于另一个shell , 运行at time命令时,它发送一个个命令,可以输入任意命令或者程序 。
三、参数详解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-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 : 列出所有已经完成但尚未删除的指定
at命令执行流程
# at 2:05 tomorrow
at/home/kyle/do_job
at Ctrl D
AT Time中的时间表示方法
-----------------------------------------------------------------------
时 间 例子 说明
-----------------------------------------------------------------------
Minuteat now5 minutes任务在5分钟后运行
Hourat now1 hour任务在1小时后运行
Daysat now3 days任务在3天后运行
Weeksat now2 weeks任务在两周后运行
Fixedat midnight任务在午夜运行
Fixedat 10:30pm任务在晚上10点30分
Fixedat 23:59 12/31/2018 任务在2018年12月31号23点59分
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 相对计时法,指定格式为nowcount time-units,now就是当前时间,time-units是时间单位,可以是minutes、hours、days、weeks 。count是时间的数量,例如:now5 minutes
4.6 直接用today、tomorrow来指定完成命令的时间
5.1 2天后的下午5点,执行/bin/ls /home指令
at 5pm2 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 now2 minutes
5.5 删除已经设置的任务,atrm 编号
可以用atq列出待执行的任务,列出后第一列就是job编号
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执行一项操作
atuseradd 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(天)
例:4pm3days :3天以后下午4:00执行at命令设定的计划任务 。
linux.at 命令怎么用一次性定时计划任务linux下at命令的at命令的用法!
1.命令格式linux下at命令:
at[参数][时间]
2.命令功能:
在一个指定的时间执行一个指定任务linux下at命令 , 只能执行一次 , 且需要开启atd进程(
ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restartlinux下at命令; 开机即启动则需要运行 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
【linux下at命令的简单介绍】关于linux下at命令和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读