作业管理

作业管理

·Linux的作业控制:

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

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

·如何让作业运行于后台?

         (1)运行中的作业: Ctrl+z

         (2)尚未启动的作业:# COMMAND &

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

                     命令:

                             # nohup COMMAND &

                             # screen;COMMAND

        

·查看所有作业:

    # jobs

·作业控制:

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

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

         # kill [%JOB_NUM] :终止指定的作业

·并行运行:

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

         (1)vi all.sh   写一个脚本

             f1.sh&

             f2.sh&

             f3.sh&

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

         (3){ f1.sh& f2.sh& f3.sh& }

·进程优先级:

         PRI优先级于系统优先级相反(ps命令中的参数)

                 系统: 0    —-   139

                 PRT:  139  —-   0

         进程优先级调整:

                 静态优先级:100-139

                 进程默认启动时的nice 值为0 ,优先级为120

                 只有根用户才能降低nice值(提高优先性),其他用户只能提高自己所发起进程的nice

·nice 命令:

         nice [OPTION] [COMMAND [ARG]…]

        

         ~]# nice -n -5 ping 127.0.0.1

         ~]# nice –5 ping 127.0.0.1

         调整即将运行的程序的优先级

·renice 命令:

         renice [-n] priority pid…

        

         ~]# renice -20 6754

         ~]# renice -n -10 6754

         renice调整运行中的优先级

·查看:

        ps axo pid,comm,n

Linux任务计划、周期性任务执行


·未来的某时间点执行一次任务:at、batch

·周期性运行某任务:crontab

·执行结果: 会通过邮件发送给用户

         查看邮件服务是否打开:(25号端口)

                 # netstat -tnlp

                 # ss -tnlp

·本地电子邮件服务:

         smtp:simple mail transmission procotol

         pop3:Post office Procotol

         imap4:Internet Mail Access Procotol

·mail:命令

         mailx – send and receive Internet mail

         MUA:Mail User Agent. 用户收发邮件的工具程序

         mail/mailx [-s 'SUBJECT'] username [@hostname]

                 邮件正文:

                         (1)输入重定向

                         (2)通过管道

                         (3)交互式输入

at命令:

·at [option] TIME

·常用选项:

         -l:列出指定队列中等待运行的作业;相当于atq

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

         -c:查看具体作业任务

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

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

         -q QUEUE:指明队列

         -V:显示版本信息

        

·注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

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

         HH:MM [YYYY-mm-dd]

         noon, midnight, teatime(4pm)

         tomorrow

         now+# {minutes,hours,days, OR weeks}

·at时间格式

         HH:MM ==> 02:00

                 在今日的HH:MM进行,若该时刻已过,则明天此时执行任务

         HH:MM YYYY-MM-DD ==> 04:00 2016-09-20

                 规定在某年某月的某一天的特殊时刻进行该项任务

         HH:MM[am|pm] [Month] [Date]

                 04pm March 17

                 17:20 tomorrow

         HH:MM[am|pm] + number [minutes|hours|days|weeks]

                 在某个时间点再加几个时间后才进行该项任务

                 now + 5 minutes

                 04pm + 3 days

·执行方式:

         1)交互式

         2)输入重定向

         3)at –f 文件

·依赖与atd服务, 需要启动才能实现at任务

        服务: service atd status

·at队列存放在/var/spool/at目录中,可以通过修个文件来改变队列中的命令

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

        ·先寻找/etc/at.allow文件,文件中的使用者才能使用at,没有在这个文件中的使用者则不能使用at(即使没有写在at.deny当中)

        ·如果/etc/at.allow找不存在,就寻找/etc/at.deny这个文件,若写在这个at.deny用的使用者则不能使用at,而没有在这个at.deny文件中的使用者则可使用at命令

        ·如果两个文件都不存在有,只有root用可以使用at这个命令

                 # cat /etc/at.deny   //文件格式

                     gao //禁止使用at命令的USERNAME

                     hlr

·batch命令:

         batch会让系统自行选择空闲时间去执行此处指定的任务

         常用选项同at命令

周期性任务计划:cron


·相关的程序包:

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

         cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

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

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

         CentOS 7:

              systemctl status crond

         CentOS 6:

              service crond status

        

·计划周期性执行的任务提交给crond,到指定时间会自动运行

         cron任务分为两类:

                 系统cron任务:主要用于实现系统自身的维护

                        手动编辑/etc/crontab文件

                 用户cron任务:

                         命令:crontab命令

        

·日志:/var/log/cron

·系统cron的配置文件:/etc/crontab

        注释行以#开头

        详情参见man 5 crontab

        

         SHELL=/bin/bash

         PATH=/sbin:/bin:/usr/sbin:/usr/bin

         MAILTO=root

         HOME=/

        

         # For details see man 4 crontabs

        

         # Example of job definition:

         # .—————- minute (0 – 59)

         # |  .————- hour (0 – 23)

         # |  |  .———- day of month (1 – 31)

         # |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …

         # |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

         # |  |  |  |  |

         # *  *  *  *  * user-name command to be executed

        

         注意:

             (1)每行定义一个周期任务,共7个字段

                     * * * * * :定义周期性时间

                     user-name :定义运行任务的身份

                     command to be executed :任务

             (2)此处的环境变量不同于用户登录后获得的环境变量,因此建议命令使用绝对路径或者定义PATH环境变量

             (3)执行结果以邮件发送给MAILTO指定的用户

·用户cron的配置文件:/var/spool/cron/USERNAME

         # Example of job definition:

         # .—————- minute (0 – 59)

         # |  .————- hour (0 – 23)

         # |  |  .———- day of month (1 – 31)

         # |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …

         # |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

         # |  |  |  |  |

         # *  *  *  *  * command to be executed

        

         注意:

             (1)每行定义一个周期任务,共6个字段

             (2)此处的环境变量不同于用户登录后获得的环境变量,因此建议命令使用绝对路径或者定义PATH环境变量

             (3)邮件发送给用户

·时间表示法:(5个 * * * * * 的表示法)

         (1)特定值;

                 给定时间点有效取值范围内的值

                 注意:day of month(3) 和 day of week(5) 同时使用表示或的关系

         (2) *

                 给定时间点上有效取值范围内的所有值,表示“每…”

         (3)离散取值:,

                 在时间点上使用逗号分隔多个值

                 #,#,#

         (4)连续取值:-

                 #-#

         (5)在指定时间范围上,定义步长:

                 */#: # 即为步长

         例如:每3小时echo 命令;

                 0 */3 * * * centos /bin/echo "howdy!"

         例如:晚上9点10分运行echo命令;

                 10 21 * * * centos /bin/echo "Howdy!"

         例如:

                 (1) 3 * * * * :每小时的第3分钟执行

                 (2) 3 4 * * 5 :每周五的04:03执行

                 (3) 5 6 7 * * :每月7号的06:05执行

                 (4) 7 8 1 2 * :每年的2月1号08:07执行

                 (5) 8 8 * * 3,7 :每周三和周日08:08执行

                 (6) 0 8,20 * * 1,5 :每周1周五08:00和20:00执行

                 (7) 0 9-18 * * 1-6 :每周1-6的09:00-18:00每小时执行一次

                 (8) */5 * * * * :每5分钟执行一次

                 (9) */7 * * * * :每7分组执行一次,但最后一次4分组执行

·特殊时间格式

        @reboot Run once after reboot.

        @yearly 0 0 1 1 *

        @annually 0 0 1 1 *

        @monthly 0 0 1 * *

        @weekly 0 0 * * 0

        @daily 0 0 * * *

        @hourly 0 * * * *

·系统的计划任务配置文件:

         /etc/crontab

         /etc/cron.d/ 配置文件

         /etc/cron.hourly/  每小时脚本

         /etc/cron.daily/ 每天脚本

         /etc/cron.weekly/  每周脚本

         /etc/cron.monthly/ 每月脚本

·anacron系统:

         运行计算机关机时cron不运行的任务,CentOS6.0 以后版本取消anacron服务,由crond服务管理

                假设计算机没有一直开机

                对笔记本电脑、台式机、工作站及其它不一直开机的系统很重要

                对偶尔要关机的服务器很有用

                配置文件:/etc/anacrontab,负责执行/etc/cron.daily /etc/cron.weekly /etc/cron.monthly 中系统任务。/etc/cron.hourly/ 由/cron.d/0hourly 执行

                         字段1 :如果在这些日子里没有运行这些任务……

                         字段2 :在重新引导后等待这么多分钟后运行它

                         字段3 :任务识别器,在日志文件中标识

                         字段4 :要执行的任务

·管理临时文件:

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

         rhel7.0 使用systemd-tmpfiles-setup 服务实现

·crontab命令定义了每个用户都有专用的cron任务文件:

        /var/spool/cron/USERNAME


·crontab命令:

         crontab [-u user] [-l | -r | -e] [-i]

                 -e:编辑任务;

                 -l:列出所有任务;

                 -r:移除所有任务;

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

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

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

     /etc/cron.{allow,deny}

            ·先寻找/etc/cron.allow文件,文件中的使用者才能使用crontab,没有在这个文件中的使用者则不能使用crontab(即使没有写在cron.deny当中)

            ·如果/etc/cron.allow找不存在,就寻找/etc/cron.deny这个文件,若写在这个cron.deny用的使用者则不能使用crontab,而没有在这个cron.deny文件中的使用者则可使用crontab命令

            ·如果两个文件都不存在有,只有root用可以使用crontab这个命令

·注意:运行结果的标准输出和错误以邮件通知给相关用户

(1) COMMAND > /dev/null

(2) COMMAND &> /dev/null

·对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义

·思考:

    (1)  如何在秒级别运行任务?

             * * * * * for min in 0 1 2; do echo "hi"; sleep 20; done

    (2)  如何实现每7分钟运行一次任务?

             * * * * * for min in 0 1 2; do echo "hi"; sleep 7m; done

        sleep命令:

             sleep NUMBER[SUFFIX]…

                     SUFFIX:

                             s:秒,  默认

                             m:分

                             h:小时

                             d:天

at和crontab


一次性作业使用 at

重复性作业使用crontab


Create       at time           crontab -e

List         at -l             crontab -l

Details      at -c jobnum      N/A

Remove       at -d jobnum      crontab -r

Edit         N/A               crontab -e


没有被重定向的输出会被邮寄给用户

根用户能够修改其它用户的作业

作业

1、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

        0 0 * * 2,4,7 cp /var/log/messages /logs/messages-`date +\%Y\%m\%d`

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

        0 */2 * * * grep "^[SM]" /proc/meminfo >> /tmp/meminfo.txt

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/45282

(0)
上一篇 2016-09-11 18:46
下一篇 2016-09-11 19:09

相关推荐

  • linux的终端类型

    Linux系统的终端类型    Linux系统的终端主要包括控制台终端、控制终端、串口终端、伪终端、虚拟终端。                 1.  控制台终端(/dev/console)。    在Unix系统中,计…

    Linux干货 2016-10-19
  • The best essay writing service on reddit will supply your paper instantaneously and ensure that you should without doubt have gotten a top quality grade

    How to Keep track of down Best Essay Writing Service on Reddit to Get Help with Your Essay Best essay writing service reddit will deliver your paper in time and ensure you will hav…

    Linux干货 2023-01-14
  • Linux基础:计算机的组成及其功能

    1. 描述计算机的组成及其功能。
    2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3. 描述Linux的哲学思想,按照自己的理解对其解释性描述。
    4. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date等命令使用,配合相应实例阐述。
    5. 如何获取帮助信息,描述man文档章节划分。
    6. 罗列发行版基础目录名称命名法则及功用规定。

    2017-12-07
  • Aside from the real homework, a trustworthy homework guidance course may help you

    Who Can i Fork out to Do My Homework? Paying for homework may possibly be a boon to students that are struggling to complete their assignments. This really is a good way to acquire…

    Linux干货 2023-01-27
  • yum命令的用法

    1.列出所有可更新的软件清单命令:yum check-update 2.安装所有更新软件命令:yum update 3.仅安装指定的软件命令:yum install <package_name> 4.仅更新指定的软件命令:yum update <package_name> 5.列出所有可安裝的软件清单命令:yum list 用YUM安…

    Linux干货 2017-08-11
  • 第二周相关习题。

    习题 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。 [root@localhost /]# ls -d /var/l*[0-9]*[[:lower:]] 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。 [root@localhost&n…

    Linux干货 2016-11-05