Linux作业管理,并行运行,任务计划(at任务和cron任务)

本文主要介绍:1、Linux作业管理 2、并行运行 3、任务计划(at 一次性任务和 cron 周期性任务)

本文涉及到的命令主要有:

1、作业管理:   jobs、  ctrl+Z(按键)、 fg 、 bg、 kill、 killall、 nohup、 screen

2、任务计划:   at、 crontab、  sleep

一、Linux作业管理

  •     Linux的作业控制

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)

  •   让作业运行于后台

运行中的作业: Ctrl+z (会自动转为休眠模式)

尚未启动的作业: COMMAND &

  •   查看当前终端所有作业:jobs

查看到的后台作业中,显示有+ –的,如果用 fg 命令后面不指定作业号时,+为默认调用的第一个作业,为第二个作业,越早送到后台的作业,默认越晚被调回

  •   作业控制:

fg   [JOB_NUM]     把指定的后台作业调回前台

bg  [JOB_NUM]     让送往后台的作业在后台继续运行

kill [%JOB_NUM]     终止指定的作业(这里作业号前面一定要加%,否则会与 kill 的命令冲突)

killall -19 COMMAND  将后台作业转入休眠模式

killall -18 COMMAND  将后台作业转入运行模式

  • 后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系

nohup COMMAND  [&>/dev/null]  &   (如果不加中括号里的重定向,则执行命令后的标准输出及错误会追加至nohup.out)

screen  ;   COMMAND      (开启分屏会话,然后执行任务,screen -r 恢复回话)

二、并行运行

同时运行多个进程,提高效率

  •  方法1 :编辑脚本,将要执行的任务写入脚本

   vi all.sh

f1.sh &

f2.sh &

f3.sh &

  •  方法2  :小括号

(f1.sh &);(f2.sh &);(f3.sh &)

  •  方法3  : 大括号

{  f1.sh &  f2.sh &  f3.sh &  }

三、任务计划

定时执行一次任务:at

周期性运行任务:cron

(共同点:没有被重定向的输出和错误以邮件通知给相关用户;根用户能够修改其它用户的作业)

  • 共同点:运行结果的标准输出和错误以邮件通知给相关用户

COMMAND > /dev/null   则执行正确之后,不发送执行结果;但执行错误还是会发送邮件

COMMAND &> /dev/null   则执行结果无论对错都不发送邮件

at一次性任务

  • 包:at

        需要启动atd服务,才能实现at任务。

centos6启用:service atd start

centos7启用:systemctl start atd

  •  at命令:at [option] TIME

 常用选项:

-V    显示版本信息

-l      列出指定队列中等待运行的作业;相当于atq at队列存放在/var/spool/at/目录中

-d #    删除指定的作业;相当于atrm

-c #     查看具体作业任务

-f /path/from/somefile      从指定的文件中读取任务

-m     当任务被完成之后,将给用户发送邮件,即使没有标准输出

  •  TIME    定义出什么时候进行 at 这项任务的时间

HH:MM [YYYY-mm-dd]  (如14:00 [2018-05-06] )

noon(中午12点), midnight(晚上12点), teatime(下午4点)

tomorrow

now+#{minutes,hours,days, OR weeks}   (如 now + 3 minutes)

  • 执行方式:
1)交互式   (如 :输入 at now + 1 minutes 回车后系统会等待输入任务,输入完成后 ctrl + d提交)

2)输入重定向  (如:echo ping 8.8.8.8 | at now + 1 minutes,或 at now + 1 minutes < /path/from/somefile  )

3)at –f  /path/from/somefile
  • at任务的用户控制功能

/etc/at.{allow,deny}控制用户是否能执行at任务

白名单:/etc/at.allow 默认不存在;如果建立白名单,只有该文件中的用户才能执行at命令

黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用者则可执行

如果两个文件中有同一个用户,则白名单优先;

如果两个文件都不存在,只有 root 可以执行 at 命令。

cron周期性任务

  • 相关的程序包:

cronie: 主程序包,提供crond守护进程及相关辅助工具

cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务。(家用电脑由于关机会有这方面问题,生产中服务器不关机一般不会影响周期任务执行,了解即可)

crontabs:包含CentOS提供系统维护任务

  • 确保crond守护处于运行状态:

CentOS 7:   systemctl status crond

CentOS 6:   service crond status

  • 1)系统cron任务:系统维护作业     /etc/crontab
  • 2)用户cron任务:crontab命令

日志:/var/log/cron  (追踪周期任务,误删任务时可根据日志找回)

  • 对于cron任务来讲,%有特殊用途,如果在命令中要使用%,则需要转义,或放置于单引号,或写入脚本中然后调用此脚本。

1)系统cron任务:系统维护作业     /etc/crontab

  • 直接编辑 /etc/crontab 文件 ,格式如下图所示:

QQ截图20180506195404

例:30 21 * * *   root   /bin/echo “nihao”    每天晚上9点30分执行echo命令

  • 时间表示法:
  1.  特定值:给定时间点有效取值范围内的值
  2. *    给定时间点上有效取值范围内的所有值,表示“每…”    (如:*  02  *  *  *  表示每天2点每分钟执行任务)
  3. #,#,#   离散取值    (如:0  2  1,3,5  *  *   表示每个月1号3号5号的2点00分执行任务)
  4. #-#    连续取值    (如:0  2  1-5  *  *   表示每个月1号到5号的2点00分执行任务)
  5. /#   在指定时间范围上,定义步长  (如:0  */3 *  *  *   表示每天每3个小时执行任务)
  • 特定的时间格式:

                @reboot     表示每次重启之后运行一次
@yearly     表示每年运行一次,功能相当于 0 0 1 1 *
@annually   表示每年运行一次,功能相当于0 0 1 1 *
@monthly    表示每月运行一次,功能相当于0 0 1 * *
@weekly     表示每周运行一次,功能相当于0 0 * * 0
@daily      表示每天运行一次,功能相当于0 0 * * *
@hourly     表示每小时运行一次,功能相当于0 * * * *

  • 在秒级别运行任务:结合 sleep 命令

sleep NUMBER[SUFFIX]…
SUFFIX:
s: 秒, 默认
m: 分
h: 小时
d: 天

如:* * * * * wall 1 ; sleep 20; wall 2 ; sleep 20 ; wall 3 表示每个广播任务之间间隔20秒。

  • 系统的计划任务:

/etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 脚本

/etc/cron.daily/ 脚本

/etc/cron.weekly/ 脚本

/etc/cron.monthly/ 脚本

  • 管理临时文件:

CentOS6使用/etc/cron.daily/tmpwatch定时清除临时文件

CentOS7使用systemd-tmpfiles-setup服务实现

2)用户cron任务:crontab命令

crontab命令定义:每个用户都有专用的cron任务文件: /var/spool/cron/USERNAME

  • crontab命令: crontab [-u user] [-l | -r | -e] [-i]

-l    列出所有任务

-e    编辑任务

-r    移除所有任务

-i    同-r一同使用,以交互式模式移除指定任务

-u user    仅root可运行,指定用户管理cron任务

  • 控制用户执行计划任务:

/etc/cron.{allow,deny}   (性质同 at 任务的黑白名单,如果一个用户之前不在黑名单,后来加入黑名单,那他之前所创建的周期任务依然会定期执行)

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97658

(1)
上一篇 2018-05-06 20:46
下一篇 2018-05-06 20:57

相关推荐

  • bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

    bash的基础特性: 1.命令补全: shell程序在接收到用户执行命令的请求时,分析完成之后,最左侧的字符串会被当作命令; 命令查找机制: 根据PATH环境变量中设定的目录,自左向右逐个搜多目录下的文件名 给定的打头字符串,如果能唯一标识某命令程序文件,则直接补全,                      如果不能唯一标识某命令程序文件,再tab一次会给…

    Linux笔记 2018-05-20
  • 文本三剑客之sed

    我们知道,sed被称为Linux中被称为文本处理三剑客之一,相比于grep命令匹配内容的功能,sed则能够做到对匹配到的文本内容对其进行编辑。

    2018-04-15
  • Linux小技巧-检验系统光盘映像完整性

    系统的光盘映像一般比较大,如果文件不完整,或者是被别人动过手脚的,那就很恶心人了,那我们如何确认自己下载的映像文件和官方发布的一样准确无误呢,本文以Centos 7.5为例,详解如何运用哈希值,判断光盘文件的完整性。

    2018-05-16
  • Linux_bash基础特性_golbbing文件通配符

    Linux_bash基础特性_golbbing文件通配符

    Linux笔记 2018-06-08
  • centos7下的raid10实现及挂载

    需求分析,实现raid10可以有两种方法,第一种是先实现raid1,然后对raid1实现raid0,第二种是一次生成raid10。生成raid1至少需要2个分区或者硬盘,生成raid0至少需要2个分区或者硬盘,因此新建4个分区来实现本次试验。实现raid的命令是mdadm命令,下面介绍一下命令的常用选项-C 创建raid,后跟raid名称,例如/dev/md…

    Linux笔记 2018-04-29
  • 系统启动和内核管理之系统启动实验

    本文主要记录:内核文件损坏导致系统无法启动的修复过程

    2018-05-07