宝塔定时任务执行php源码任务_Linux at命令详解:定时执行任务

要想使用 at 命令,读者需提前安装好 at 软件包,并开启 atd 服务。因此,首先来看看如何安装 at 软件包。在 Linux 系统中,查看 at 软件包是否已安装,可以使用 rpm -q 命令,如下所示:[root@localhost ~]# rpm -q at
at-3.1.13-20.el7x86_64可以看到,当前系统已经安装 at 软件包,若读者所用系统未安装,可使用如下命令进行安装:[root@localhost ~]# yum -y install at
#省略输出信息,最终出现 Complete!,证明安装成功。除此之外,at 命令要想正确执行,还需要 atd 服务的支持。atd 服务是独立的服务,启动的命令如下:[root@localhost ~]# service atd start
正在启动 atd:[确定]如果想让 atd 服务开机时自启动,则可以使用如下命令:[root@localhost ~]# chkconfig atd on当然,独立服务的自启动也可以修改 /etc/rc.local 配置文件,具体怎么做看个人习惯。安装好 at 软件包并开启 atd 服务之后,at 命令才可以正常使用,不过在此之前,我们还要学习一下 at 命令的访问控制。访问控制指的是允许哪些用户使用 at 命令设定定时任务,或者不允许哪些用户使用 at 命令。大家可以将其想象成设定黑名单或白名单,这样更容易理解。at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下:
  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /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.deny 文件的优先级,我们做一个实验来验证一下,命令如下:[root@localhost ~]# ls -l /etc/at*
-rw-r--r--.1 root root 1 1月 30 2012 /etc/at.deny
#系统中默认只有at.deny文件
[root@localhost ~]# echo user1 >> /etc/at.deny
[root@localhost ~]# cat /etc/at.deny
user1
#把user1用户写入/etc/at.deny文件
[root@localhost ~]# su - user1
[user1@localhost ~]$ at 02:00
You do not have permission to use at.
#没有权限使用at命令,切换成user1用户,这个用户已经不能执行at命令了
[user1@localhost ~]$ exit
logout
#返回root身份
[root@localhost ~]# echo user1 >> /etc/at.allow
[root@localhost ~]# cat /etc/at.allow
user1
#建立/etc/at.allow文件,并在文件中写入user1用户
[root@localhost ~]# su - user1
[user1@localhost ~]$ at 02:00
at>
#切换成user1用户,user1用户可以执行at命令。这时user1用户既在/etc/at.deny文件中,又在/etc/at.allow文件中,但是/etc/at.allow文件的优先级更高
[user1@localhost ~]$ exit
logout
#返回root身份
[root@localhost ~]# at 02:00
at>
#root用户虽然不在/etc/at.allow文件中,但是也能执行at命令,
#root用户虽然不在/etc/at.allow文件中,但是也能执行at命令,
#说明root用户不受这两个文件的控制这个实验说明了 /etc/at.allow 文件的优先级更高,如果 /etc/at.allow 文件存在,则 /etc/at.deny 文件失效。/etc/at.allow 文件的管理更加严格,因为只有写入这个文件的用户才能使用 at 命令,如果需要禁用 at 命令的用户较多,则可以把少数用户写入这个文件。/etc/at.deny 文件的管理较为松散,如果允许使用 at 命令的用户较多,则可以把禁用的用户写入这个文件。不过这两个文件都不能对 root 用户生效。接下来正式介绍 at 命令。at 命令的格式非常简单,基本格式如下:[root@localhost ~] # at [选项] [时间]有关此命令常用的几个选项及各自含义如表 1 所示。
表 1 at 命令选项及含义
选项含义
-m当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户。
-c 工作标识号显示该 at 工作的实际内容。
-t 时间在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm。
-d删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同。
-l列出当前所有等待运行的工作,和 atq 命令具有相同的额作用。
-f 脚本文件指定所要提交的脚本文件。

另外,表 2 罗列了此命令中关于时间参数可用的以下格式。

表 2 at 命令时间参数可用格式
格式用法
HH:MM比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
Midnight(midnight)代表 12:00 AM(也就是 00:00)。
Noon(noon)代表 12:00 PM(相当于 12:00)。
Teatime(teatime)代表 4:00 PM(相当于 16:00)。
英文月名 日期 年份比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
MMDDYY、MM/DD/YY、MM.DD.YY比如 011518 表示 2018 年 1 月 15 号。
now+时间以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

at 命令只要指定正确的时间,就可以输入需要在指定时间执行的命令。这个命令可以是系统命令,也可以是 Shell 脚本。举几个例子。【例 1】

[coot@localhost ~]# cat /root/hello.sh
#!/bin/bash
echo "hello world!!"
#该脚本会打印"hello world!!"
[root@localhost ~]# at now +2 minutes
at> /root/hello.sh >> /root/hello.log
#执行hello.sh脚本,并把输出写入/root/hello.log文件
at>
#使用Ctrl+D快捷键保存at任务
job 8 at 2013-07-25 20:54 #这是第8个at任务,会在2013年7月25日20:54执行
[root@localhost ~]# at -c 8
#查询第8个at任务的内容
...省略部分内容...
#主要定义系统的环境变量
/root/hello.sh >> /root/hello.log
#可以看到at执行的任务

【例 2】

[root@localhost ~J# at 02:00 2013-07-26
at> /bin/sync
at> /sbin/shutdown -h now
at>
job 9 at 2013-07-26 02:00
#在指定的时间关机。在一个at任务中是可以执行多个系统命令的

在使用系统定时任务时,不论执行的是系统命令还是 Shell 脚本,最好使用绝对路径来写命令,这样不容易报错。at 任务一旦使用 Ctrl+D 快捷键保存,实际上写入了 /var/spool/at/ 这个目录,这个目录内的文件可以直接被 atd 服务调用和执行。表 1 中提到了 atq 命令和 atrm 命令。atq 命令用于查看当前等待运行的工作,atrm 命令后者用于删除指定的工作,它们的使用方法也很简单,这里给大家举几个简单的例子。【例 3】atq 命令的用法。

[root@localhost ~]# atq
9 2013-07-26 02:00 a root
#说明root用户有一个at任务在2013年7月26日02:00执行,工作号是9
[root@localhost ~]# atrm [工作号]
#删除指定的at任务

【例 4】atrm 命令的用法。

[root@localhost ~]# atrm 9
[root@localhost ~]# atq
#删除9号at任务,再查询就没有at任务存在了

f9551541b27b7da0aae773fc897d61c3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eigen(1)配置VS2015

1.在Eigen官网下载Eigen: Windows选压缩包zip下载,点击一下即可。下载后解压。 2.配置VS2015 打开vs2013,可以新建一个项目,也可以打开以前的项目,右键项目名,选择属性,在c/c附加目录里加入解压…

尺度不变性是指什么不变_不变性的来龙去脉

尺度不变性是指什么不变因此,在我的第一篇文章中,我谈到了一些构建器模式,并提到了一个非常强大但却被忽视的概念:不变性。 什么是不可变类? 这只是一个其实例无法修改的类。 类属性的每个值都在其声明或其构造函数中…

光模块

一、光模块: 1、光模块(opTIcalmodule)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部分。 发射部分是:输入一定码率的电信号经内部的驱动芯片处理后驱动半导体激光器(LD)…

radmin提示授权码过期_IdentityServer4 客户端授权模式(Client Credentials)

(给DotNet加星标,提升.Net技能)转自:朝闲cnblogs.com/Zing/p/13361386.html前言1、源码(.NET Core 2.2)git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git2、相关章节2.1、《IdentityServer4 (1) 客户端授权模式(Client Cr…

OpenCV访问像素点的灰度值

1.Mat矩阵数值的存储方式 这里以指针的方式访问图像素为例 (1)单通道 定义一个单通道图像&#xff1a; cv::Mat img_1 (320, 640, CV_8UC1, Scalar(0)); 对于单通道M(i,j)即为第i行j列的其灰度值&#xff1b;程序中表示为&#xff1a; img_1.ptr<uchar>(i)[j]; (2)多通道…

asp.net中大文件下载

因为IIS支持的最大文件为int32的最大值位数的文件下载&#xff0c;所以&#xff0c;超过2G的文件无法通过IIS进行下载。 通过网上查找的资料&#xff0c;如下可实现文件的下载&#xff0c;使用filestream进行下载。 public void download(){System.IO.Stream iStream null;byt…

Java的终结器仍然存在

当我第一次学习Java并从C 过渡到Java时&#xff0c;我记得我经常被告知&#xff0c;经常读到它不应该像C 析构函数那样对待Java终结器&#xff0c;也不应该依靠它。 该建议的频率和坚持性对我产生了影响&#xff0c;以至于我无法回忆起我上一次编写finalize&#xff08;&#x…

时隙aloha协议仿真程序_工控ModbusTCP/IP协议仿真环境搭建

01ModbusTCP/IP协议简介Modbus TCP/IP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品。它覆盖了使用TCP/IP协议的“intranet”和“internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC’S&#xff0c;I/O模块&#xff0c;以及连接其…

vector的初始化及常用操作

1.vector的初始化&#xff1a;可以有五种方式,举例说明如下&#xff1a; &#xff08;1&#xff09; vector<int> a(10); //定义了10个整型元素的向量&#xff08;尖括号中为元素类型名&#xff0c;它可以是任何合法的数据类型&#xff09;&#xff0c;但没有给出初值&a…

查看Linux版本

suse版本 lsb_release -a suse版本之间差距还是有的&#xff0c;在suse12.2跑的脚本没有问题&#xff0c;到suse12.4上就出现问题了。 centos版本 cat /etc/redhat-release 转载于:https://www.cnblogs.com/jkhere/p/10900659.html

ps法线贴图插件_法线与置换贴图原理讲解以及烘焙制作!

​首先在讲解之前先给大家讲解下什么是法线贴图&#xff0c;法线贴图其实就是一张带有颜色的凹凸贴图&#xff0c;分别是有红绿蓝&#xff0c;三种颜色构造而成的&#xff0c;如下图所示&#xff1a;每一个颜色通道分别控制了每个像素的方向&#xff0c;当你把法线贴图用到低解…

从向量中读取元素:

从向量中读取元素&#xff1a; 1通过下标&#xff1a; int a[6] { 1,2,3,4,5,6 }; vector<int> b(a, a 4); for (int i 0; i < b.size() - 1; i) cout << b[i] << " "; 2通过迭代器 int a[6] { 1,2,3,4,5,6 }; vector<int> b(a, …

Nim博弈

忽然发现博弈论是个很好玩的东西哎 之前假期学长讲课的时候就发现这种必胜的战略可以用来坑人做题 这两天终于做了第一道博弈论的题&#xff0c;写篇博客纪念一下 灵感来源&#xff1a;洛谷P1247 Pre-scene 众所周知&#xff0c;李明和Jenny都喜欢Danny&#xff0c;为了争夺Dan…

java调用怎么调用方法区_Java中的方法调用有多昂贵

java调用怎么调用方法区我们都去过那儿。 在查看设计不良的代码的同时&#xff0c;听听作者对人们永远不应该牺牲性能而不是设计的解释。 而且&#xff0c;您不能说服作者摆脱其500行方法&#xff0c;因为链接方法调用会破坏性能。 好吧&#xff0c;这可能在1996年左右是正确的…

python中的np array函数_numpy中的np.ascontiguousarray()函数

"Return a contiguous array (ndim > 1) in memory (C order)."用途ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组&#xff0c;使得运行速度更快。C order vs Fortran orderC order 指的是行优先的顺序(Row-major Order)&#xff0c;…

OpenCV版本

#include <opencv2/opencv.hpp>using namespace cv;void main(){/*printf("\t当前使用的opencv版本为 OpenCV"CV_VERSION);getchar();*/std::cout << "\t当前使用的opencv版本为 OpenCV" << CV_VERSION << std::endl;system(&quo…

使用jstat的JVM统计信息

过去&#xff0c;我已经写过关于Oracle和/或OpenJDK Java开发工具包&#xff08;JDK&#xff09;随附的几个命令行工具的信息&#xff0c;但是我从来没有专门写过jstat工具 。 Oracle JDK 9文档Early Access指出jstat用于“监视Java虚拟机&#xff08;JVM&#xff09;统计信息”…

每天一点点之 taro 框架开发 - taro路由及传参

1.路由 taro的路由是自带的&#xff0c;不需要我们额外配置&#xff0c;只需要我们在app.js下config中配置pages即可 class App extends Component {config {pages: [pages/test/test,pages/index/index],} } 2.taro通过api实现跳转&#xff0c;替换 官网地址&#xff1a;taro…

调用支付jsapi缺少参数:total_fee_小程序支付问题怎么解决?

微信小程序开发的过程一定会遇到各种问题&#xff0c;最让人棘手的就是支付问题&#xff0c;因为没有支付做商城类似的小程序就没有办法完成最关键的一步。那么支付失败到底什么原因呢&#xff1f;一下子收集了几个错误类似&#xff0c;希望对你有帮助&#xff1a;No.1{err_cod…

Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:

我的理解&#xff0c;我首先把这几个货分为两大类&#xff1b;第一类包括win32控制台应用程序&#xff0c;第二类就是剩下那俩货。而剩下那俩货又有一个包含关系&#xff0c;即win32项目包含mfc。&#xff08;我个人是这个区分的。&#xff09; 一、 区别: &#xff08;1&…