你知道工作调度有哪几种吗?

你知道在进行工作调度时需要哪些服务在运行吗?

你知道突发性工作调度的指令at的用法吗?

知道如何管理at的工作调度吗?

知道at指令进行工作调度的原理吗?

知道什么是背景任务吗?

知道例行性工作调度的指令crontab的用法吗?

知道如何管理例行性工作调度吗?

知道如何对整个系统进行例行工作调度吗(跨越用户)?

知道可唤醒停机期间的工作任务的方法吗?

1.工作调度种类

1.突发性工作调度(仅执行一次)

相关指令:at

指令格式

其中TIME指的是时间,时间格式有以下3大种:

《1》HH:MM  //在今天的HH:MM进行调度执行该工作,若你创建这个突发性工作调度时的时间大于HH:MM,那么在明天的HH:MM执行该工作。比如14:24

《2》HH:MM   YYYY-mm-DD  //强制在某年某月某日的HH:MM进行调度执行该工作。

《3》now+m minute  //指定几分钟后执行,还可以将minute改为hour等等

其中第三种比较好用。

使用at指令注意事项

特别注意:at的执行与终端环境无关,而at中执行的所有的标准输出与标准错误输出都会被传送到执行者的mailbox(结果存放在文件“/var/mail/用户名”中);如果真的想将内容输出到终端中,那么在at中必须使用输出重定向,并且重定向到/dev/tty1。

at的特点:可以背景执行,就是系统会将你的at工作独立出你的bash环境,直接交给系统的atd程序管理,因此,当你下达了at指令之后可以立刻离线了。

进行突发性工作调度前提条件:系统安装了atd服务才能执行at指令。使用yum 或 apt-get install  at 指令安装。

atd服务相关操作:

systemctl start atd    //启动atd这个服务

systemctl restart atd    //重新启动atd这个服务

systemctl enable atd  //让atd这个服务开机就自动启动

systemctl status atd  //查阅一下atd服务目前的状态

1.at的运行方式:

我们使用at指令来产生要运行的工作,并将这个工作以文本文件的形式写入/var/spool/at 这个目录中,该工作便能等待atd服务的取用与执行了。

对at指令进行限制:

可以通过/etc/at.allow与/etc/at.deny这两个文件对at指令进行限制,即允许哪些用户可以使用at指令与哪些用户不能使用指令;系统读取文件(只读一个文件)的次序at.allow-->at.deny,即如果存在at.allow文件则不会去读取at.deny文件,如果这两个文件都不存在说明只有root可以使用这个指令。

at指令使用实例:

at  now+5 minutes   //该指令代表5分钟后执行某个命令,单击enter键之后编辑要执行的操作,使用Ctrl + D 退出(显示<EOT>)编辑;系统自动打印job 3这一行的内容

at 13:20 2019-10-8  //代表在一个确定的时间执行某个操作,比如关机。

2.at指令的工作管理

什么意思呢?当你使用at指令下达了某个工作调度之后想要撤销这个工作调度,比如原本定在3分钟后关机,突然想到还有许多东西没保存,因此现在需要取消关机这个工作调度,这就是at指令的工作管理。

指令格式:

  atq  //查询目前主机上还有多少个at的工作调度

  atrm  工作号  //删除指定工作号的工作调度,工作号可以通过atq指令查询

系统有空时才进行背景任务

有没有考虑过这么一种情况,当你使用at指令指定某一刻要进行某个工作调度时很不巧此时cpu比较忙,那么如果这个时候又加进来一个任务会加重CPU的负担;那我们该如何解决呢,可不可以等到CPU比较闲的时候再执行我们的任务呢?可以,这就需要使用到batch指令了。

其实batch是利用at指令来下达工作调度的,并且加入了一些控制参数。batch很神奇的地方在于:当CPU的工作负载小于0.8的时候,才会进行你所下达的工作任务。

batch的用法是直接输入batch指令并回车会出现编辑区,在编辑区中编辑要进行调度的工作。

2.例行性工作调度(循环执行)

相关指令:crontab

前提条件:系统安装了crond服务。

对指令crontab进行限制

与对at指令进行限制类似,通过/etc/at.allow与/etc/at.deny这两个文件对at指令进行限制。

 指令格式:

crontab  [-u username]  [ -r | -e | -l ]

-r:删除crontab的所有工作内容,如果只想删除一个请使用-e来重新编辑即可

-e:编辑crontab的工作内容

-l:显示crontab的工作内容

使用者的设置

当使用者使用crontab指令来创建工作调度之后,该项工作就会被记录到/var/spool/cron/目录中去,而且是以账号作为判断。举例deepin_zxp使用crontab指令创建工作调度后,相应的工作就会被记录到deepin_zxp这个文件中。

系统配置文件(/etc/crontab,/etc/cron.d/*)

指令crontab -e是针对使用者的cron来设计的,如果是“系统的例行性任务”时,该怎么办?是否还需要以crontab -e指令来管理例行工作调度?当然不需要,只要编辑/etc/crontab这个文本文件就可以,crontab这个指令其实是/usr/bin/crontab这个可执行文件。

2.可唤醒停机期间的工作任务

就是当你的系统在将来某个确定的时间要执行某个工作调度时,很不巧那段时间停电了因此没有执行,那么该怎么办?这时候就得靠anacron这个指令了。

anacron指令可以唤醒停机期间系统本该进行但却为进行的crontab任务。

Linux系列(12)之例行工作调度的更多相关文章

  1. Caffe学习系列(12):训练和测试自己的图片--linux平台

    Caffe学习系列(12):训练和测试自己的图片   学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...

  2. Linux系列(17)之系统服务

    我们知道,在我们登陆Linux后,系统就为我们提供了很多服务,比如例行工作调度服务crond.打印服务.邮件服务等.那么这些服务是如何被启动的呢? 这个问题先放一下,接下来我们先了解一下Linux的启 ...

  3. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  4. 跟着鸟哥学Linux系列笔记1

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...

  5. 学习Linux系列--安装Ubuntu

    最近学习Linux,使用虚拟机太不方便,于是购买了阿里云最便宜的云主机作为学习设备. 本系列文章记录了个人学习过程的点点滴滴. 学习Linux系列--安装Ubuntu 学习Linux系列--安装软件环 ...

  6. kali Linux系列教程之BeFF安装与集成Metasploit

    kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...

  7. Kali linux系列之 zmap 安装

    Kali linux系列之 zmap 安装 官方文档地址:https://zmap.io/ 准备:保证有比较顺畅的更新源,可以更新系统,下载安装包. 安装 第一步:sudo apt-get insta ...

  8. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  9. [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

随机推荐

  1. Python3读写JSON文件

    JSON简介 JSON(JavaScript Object Notation)即JavaScript对象表示法,一种轻量级,通用的文本数据格式. JSON语法支持对象(Object),数组(Array ...

  2. php 图片格式转换-亲测ok

    代码如下 /** * 图片格式转换 * @param string $image_path 文件路径或url * @param string $to_ext 待转格式,支持png,gif,jpeg,w ...

  3. Eclipse修改为中文版

    1.打开浏览器访问 https://www.eclipse.org/babel/downloads.php 复制语言包的url地址,我选择最新的 2.打开eclipse,依次选择菜单栏“Help - ...

  4. 访问redis集群提示连接超时的问题

    上周在服务器通过docker部署了一个单机版redis集群,今天通过StackExchange.Redis访问的时候报了这个错: 提示我把超时时间设置一下,我去服务器上找到redis的配置文件,发现不 ...

  5. Ubuntu无法找到add-apt-repository问题的解决方法

      网上查了一下资料,原来是需要 python-software-properties 于是 apt-get install python-software-properties 除此之外还要安装 s ...

  6. Programming a Hearthstone agent using Monte Carlo Tree Search(chapter one)

    Markus Heikki AnderssonHåkon HelgesenHesselberg Master of Science in Computer Science Submission dat ...

  7. Flutter移动电商实战 --(20)首页上拉加载更多功能的制作

    这节课学习一下上拉加载效果,其实现在上拉加载的插件有很多,但是还没有一个插件可以说完全一枝独秀,我也找了一个插件,这个插件的优点就是服务比较好,作者能及时回答大家的问题.我觉的选插件也是选人,人对了, ...

  8. Objective-C如何自己实现一个基于数组下标的属性访问模式

    在iOS6.0以及OS X10.8之后,Apple引入了一套非正式协议(informal protocol)与Objective-C语法直接绑定.当你实现了这其中的方法之后即可使用数组下标来访问属性元 ...

  9. thinkphp模版主题使用方法

    3.1.3模版主题使用方法,手册貌似没有.配置项: 'DEFAULT_THEME'=>'default',//默认主题 'THEME_LIST'=>'default,theme',//主题 ...

  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_23-页面预览-页面预览开发

    1.用户进入cms前端,点击“页面预览”在浏览器请求cms页面预览链接. 2.cms根据页面id查询DataUrl并远程请求DataUrl获取数据模型. 3.cms根据页面id查询页面模板内容 4.c ...