linux定时关闭系统at,『学了就忘』Linux系统管理 — 8.系统定时任务(at命令)

news/2024/10/17 1:34:01/

定时任务是在服务器上常用到的一个工作。

在你指定的时间,系统会自动执行你指定的程序(脚本或者命令)。

Linxu系统中的定时任务不难,关键是如何写出正确的脚本。

在Linxu系统中,有三种用于任务调度的工具

at命令调用atd服务

crontab命令调用cron(crond)服务。

anacron工具。

(一)只执行一次的定时任务

需使用at命令。

at命令是一次性执行的定时任务。也就是说我在之后什么时间点,执行一次任务。

1、at服务管理

at命令要想正确执行,需要atd服务的支持。

atd服务是独立的服务,所以启动的命令如下:

[root@localhost ~]# service atd start

提示:

只要你的Linux系统是安装的,哪怕是最小化安装,at命令和cron命令默认都是启动的。

我们发现大多数服务最后都有个d,这个d代表Daemon(守护进程)的意思。

# 查看Linux系统中的进程

# 注意:第二行/usr/sbin/atd,才是atd服务。

[root@localhost ~]# ps aux | grep atd

rpcuser 1425 0.0 0.0 23352 1380 ? Ss 06:15 0:00 rpc.statd

root 1881 0.0 0.0 21108 496 ? Ss 06:15 0:00 /usr/sbin/atd

root 3332 0.0 0.0 103332 852 pts/2 S+ 09:29 0:00 grep atd

如果想要让atd服务开机时自动启动,可以设置如下命令:

[root@localhost ~]# chkconfig atd on

2、at命令的访问控制

atd服务启动之后,at命令才可以正常使用,我们还要学习下at命令的访问控制。

这里的访问控制指的是允许哪些用户使用at命令设定定时任务,或者不允许哪些用户使用at命令。

大家可以想象成为设定黑名单或设定白名单,这样更容易理解。at的访问控制是依靠/etc/at.allow文件(白名单)和/etc/at.deny文件(黑名单)这两个文件来实现的。

注:Linux系统中默认是没有/etc/at.allow文件的,用到的时候需要自己手动创建。

具体规则如下:

如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令,其他用户不能使用at命令(/etc/at.deny文件会被忽略,也就是说同一个用户既写入/etc/at.allow文件,也写入/etc/at.deny文件,那么这个用户是可以使用at命令的,因为/etc/at.allow文件优先级更高。)。

如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令,其他用户可以使用at命令。不过这个文件对root用户不生效。

如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。

系统中默认时只有/etc/at.deny文件,而且这个文件是空的,这样的话系统中所有的用户都可以使用at命令。不过如果我们打算控制用户的at命令权限,把用户写入/etc/at.deny文件即可。

/etc/at.allow文件的权限更高,如果/etc/at.allow文件存在,则/etc/at.deny文件失效。

/etc/at.allow管理行为更加严格,因为只有写入这个文件的用户才能使用at命令,如果需要禁用at命令的用户较多,则可以把少数用户写入这个文件。

/etc/at.deny文件的管理较为松散,如果允许使用at命令的用户较多,则可以把禁用的用户写入这个文件。

不过这两个文件都不能对root用户生效。

3、at命令

格式如下:

[root@localhost ~]# at [选项] 时间

选项:

-m:当at命令工作完成后,无论是否命令有输出,都用email通知执行at命令的用户。

-c工作号:显示该at工作的实际内容。

时间:

at支持的时间格式如下:

HH:ММ 在指定的“小时:分钟”执行命令,例如:05:30。

HH:MM YYYY-MM-DD 在指定的“小时:分钟 年-月-日”执行,例如05:30 2020-06-26。

HH:MM[am|pm][month][date] 在指定的“小时:分钟[上午|下午][月][日]“执行,例如05:30 July 25。

HH:MM[amlpm]+[minutes|hours|days|weeks] 在指定的时间“再加多久执行”,

例now + 5 minutes,05am + 2 hours。

at命令只要指定正确的时间,就可以输入需要在指定时间执行的命令了.这个命令可以是系统令,也可以是shell脚本。(也就是说确认命令的执行时间之后,按回车在输入你要执行的命令。)

示例:

# 1.编写一个shell脚本hello.sh

[root@localhost ~]# cat /root/hello. sh

#!/bin/bash

echo "hello world!!!!"

# 2.使用at命令在某个时间点执行该脚本

[root@localhost ~]# at now + 2 minutes

# 回车后,输入需要执行的命令

# 把hello.sh脚本输入的内容,写入指定的文件中

at> /root/hello.sh >> /root/hello.log

# 使用ctrltd 保存at任务

at>

job 1 at 2020-06-25 18:58

# 会提示你,第1个at任务,会在2020年6月25日18:58分执行

# 这个1代表工作号

查询指定的定时任务

# 查询第1个at任务的内容

# 可以看到at执行的任务内容

[root@localhost ~]# at -c 1(工作号)

# 可以看到有很多的内容

# 前面主要是定义系统的环境变量

# 最后面的

/root/hello.sh >>/root/hel1o.1og

提示:我们可以通过下面的atq命令查看到,Linux系统中at任务列表中,你所需要任务的工作号,然后在通过at -c (工作号)命令来查看一个at任务的具体内容。

在一个at任务中执行多个系统命令

# 在指定的时间关机。

[root@localhost ~]# at 02:00 2020-06-26

at> /bin/sync

at> /sbin/shutdown -h now

at>

job 1 at 2020-06-26 02:00

4、其他at管理命令

at还有查询(atq)命令和删除(atrm)命令。

命令如下:

# 1.查询当前服务器上的at工作

[root@localhost ~]# atq

例如:

# 说明:root用户有一个at在务在2020年6月25日的18:58执行,工作号是1

[root@localhost ~]# atq

1 2020-06-25 18:58 a root

# 通过atq命令查看at定时任务,只能看到工作号,执行时间,哪个用户执行

# 但是看不到具体执行的命令是什么,

# 2.删除指定的at在务

[root@localhost ~]# atrm [工作号]

例如:

# 删除1号at任务,然后通过atq命令查询就没有at任务存在了

[root@localhost ~]# atrm 1

5、总结

at命令平时用的并不多,因为at任务只能够执行一次任务。


http://www.ppmy.cn/news/429084.html

相关文章

完美替代Windows任务计划程序 —— 定时执行专家

关于Windows的任务计划程序和Linux的Cron 在执行Windows的某些IT任务时,熟悉IT的人一般都会想到Windows任务计划程序,这个是Windows自带的一款任务计划软件。当我们真正尝试使用它在计划上运行批处理文件等任务时会遇到很多问题和限制,它不仅…

【Linux】【操作】Linux操作集锦系列之一——定时任务

Linux环境经常需要定时做一些任务,如定时关机、定时下tar包、定时发邮件等。 本文将对常用的Linux定时任务操作方式做一整理。 at 一种在特定日期、时间安排一次性任务的 Linux 终端方法(关键词一次),适合那些 724 小时不间断运行…

Cmd的关机命令及AT简介

在Windows下&#xff0c;cmd是一个非常便捷的工具。本文介绍几种使用cmd关机的方法&#xff1a; &#xff08;一&#xff09;关机命令 &#xff08;1&#xff09;shutdown -s 该命令为过60s后关机 &#xff08;2&#xff09;shutdown -s -t <time> 该命令为倒计<time…

系统延时任务和定时任务

例行性工作 linux系统会主动帮我们做一些日常工作&#xff0c;实际上linux系统要正常运行&#xff0c;某些后台工作必须要定时进行&#xff0c;常见的例行性任务有&#xff1a; 1.日志文件的轮替(logrotate) 2.新建的locate数据库 3.whatis数据库的建立 4.rpm软件日志文件的管…

系统定时任务——at

1)、 at服务管理与访问控制 at命令要想正确执行&#xff0c;需要atd服务的支持。atd服务是独立的服务&#xff0c;所以启动的命令是&#xff1a; [rootlocalhost ~]# service atd start 正在启动 atd&#xff1a; [确定] 如果想要让atd服务开机时自动启动&#xff0c;可以使用如…

AlarmManager定时开关业务

AlarmManagerUtils.setAlarmOpen(context, 1, Integer.valueOf(a1), Integer.valueOf(a2), 0, 1, 0, "提醒开启风扇时间到了"); AlarmManagerUtils.setAlarmClose(context, 1, Integer.valueOf(b1), Integer.valueOf(b2), 0, 2, 0, "提醒关闭风扇时间到了"…

系统定时任务linux,linux系统下定时任务(示例代码)

linux系统定时任务 1、Linux系统定时任务at (1)作用&#xff1a;定时任务&#xff0c;指定一个时间执行一个任务&#xff0c;只能执行一次 (2)用法&#xff1a;at [option] TIME 选项&#xff1a;-V 显示版本信息: -l:列出指定队列中等待运行的作业&#xff1b;相当于atq -d:删…

编写一个闹钟和定时关机工具(MFC VS2010)

这个小工具在自己生活当中能用到&#xff0c;运行软件以后&#xff0c;会显示当前的系统时间&#xff0c;然后你可以设定时间&#xff0c;再选择是定时响铃还是关机。截图如下&#xff1a; 前言&#xff1a;本程序采用visual studio 2010 &#xff0c;对话框类型的应用程序&…