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

相关推荐

  • 第五周作业

    1、简述rpm与yum命令的常见选项,并举例
    2、自建yum仓库,分别为网络源和本地源
    3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    4、简述sed常用操作命令,并举例

    Linux笔记 2018-06-11
  • 神奇的awk

    有了这个awk,忘了那个他

    2018-05-17
  • CentOS系统Shell编程语言基础之Bash的基础特性

    bash的基础特性之命令历史: 命令历史:shell进程会在其会话中保存此前用户提交执行过的命令~]#history定制history的功能,可通过环境变量实现HISTSIZE:shell进程可保留的命令历史的条数HISTFILE:持久保存命令历史的文件, “.bash_history”HISTFILESIZE:命令历史文件的大小 命令用法: history…

    Linux笔记 2018-06-27
  • YUM安装的MySQL(MariaDB)实现多实例运行

    生产环境中,可能需要多个数据库同时在线。但一台服务器只运行一个数据库实例势必会引起资源的浪费,因此,本文介绍如何将yum安装的MySQL多开,实现多实例运行。(二进制与编译安装步骤与此类似)

    Linux笔记 2018-06-12
  • 在CentOS 7.3中创建本地yum源

    1.挂载系统光盘 1.1创建挂载文件 [root@centos7 ~]# mkdir /mnt/cdrom                          #创建文件 1.2挂载光驱 [root@centos7 ~]# mount /dev/cdrom /mnt/cdrom/              #挂载光驱  mount: /dev/sr0 is w…

    Linux笔记 2017-05-18
  • Linux 的哲学思想

    在我看来,Linux相比Windows 是一个自由的操作系统,用户可以通过网络或其他途径免费获得,并可以审议修改其源代码;相比于windows的图形界面,Linux的字符界面可能会对新手不是那么的友好,但是对于熟悉Linux系统的用户来说,Linux则是一个高效、稳定、安全的系统。 Linux的哲学思想: 1.一切皆文件: 不论是命令、硬件设备、软件设备、操…

    Linux笔记 2018-08-18