作業管理

作業管理

·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.www58058.com/45282

(0)
megedugaomegedugao
上一篇 2016-09-11
下一篇 2016-09-11

相關推薦

  • 馬哥linux2014|2015全套教程

    1、本課程全程將基于集成了Openstack云環境、支持高精度時間(PTP)及虛擬化性能大大提升的RHEL 6.5或CentOS 6.6,間或介紹CentOS 7系統的使用; 2、此文章給出的只是個課程知識點框架,實際講解過程相當精細;另外,知識點講授的次序未必同此文章所標示的順序相同; 3、第15期面授班定于2015年3月24號開課;本期將會是馬哥教育數年…

    Linux干貨 2015-07-14
  • M20 – 1- 第三周博客(2):Linux用戶、組

    一、Linux用戶組詳解 Linux系統中的每個用戶都有一個用戶組,系統能對一個用戶組中的所有用戶進行集中管理。不同Linux系統對用戶組的規定有所不同,如Linux下的用戶屬于和他同名的用戶組,這個用戶組在創建用戶時同時創建。用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就對/etc/group文件的更新。 用戶組(group)就是具…

    Linux干貨 2016-08-05
  • 馬哥Linux第三周作業

    正則表達式 用戶和組管理

    Linux干貨 2017-12-31
  • GRUB詳解

    GRUB的啟動流程: grub: 在centos56中:0.X版本 grub legacy 在centos7中:1.X版本  grub2 grub可分為三個階段: stage1:mbr前446字節中保存的Boot Loader程序 stage1.5:mbr之后的扇區,讓stage1中的Boot Loader能夠識別stage2所在的分區上的文件系統…

    Linux干貨 2016-09-13
  • N25期第四周作業

    1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 cp -r /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2.編輯/etc/group文件,添加組hadoop echo “hadoop:x:1080” >> /…

    Linux干貨 2016-12-26
  • 20161028第9天作業

    20161028第9天作業 1、編寫腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問” 2、編寫腳本/root/bin/checkdisk.sh,檢查磁盤分區空間和inode使用率率,如果超過80%,就發廣播…

    Linux干貨 2016-10-30
欧美性久久久久