進程管理,計劃任務(2)

二、作業管理

    Linux的作業控制

        前臺作業:通過終端啟動,且啟動后一直占據終端;

        后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)

    如何讓作業運行于后臺?

        (1) 運行中的作業: Ctrl+z

        (2) 尚未啟動的作業: # COMMAND &

    此類后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系:

        # nohup COMMAND &

    查看所有作業:

        # jobs

    作業控制:

        # fg [[%]JOB_NUM]:把指定的后臺作業調回前臺;

        # bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;

        # kill [%JOB_NUM]:終止指定的作業;

    并行運行

        vi f4.sh

            F1.sh&

            F2.sh&

            F3.sh&

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

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

    進程優先級

        進程優先級調整:

            靜態優先級: 100-139

            進程默認啟動時的nice值為0,優先級為120

            只有根用戶才能降低nice值(提高優先性)

        nice命令:

            nice [OPTION] [COMMAND [ARG]…]

        renice命令:

            renice [-n] priority pid…

        查看:

            ps axo pid,comm,ni

    任務計劃

        Linux任務計劃、周期性任務執行

            未來的某時間點執行一次任務:

                at:指定時間

                batch:系統自行選擇空閑時間去執行此處指定的任務

            周期性運行某任務: cron

    at命令

        at命令:

            at [option] TIME

        TIME:

            HH:MM [YYYY-mm-dd]

            noon, midnight, teatime

            tomorrow

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

        常用選項:

            -q QUEUE:

            -l: 列出指定隊列中等待運行的作業;相當于atq

             -d: 刪除指定的作業;相當于atrm

            -c: 查看具體作業任務

            -f /path/from/somefile:從指定的文件中讀取任務

            -m:強制at發送郵件,表示執行完畢

        注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

        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 day

        執行方式:

            1)交互式 2)輸入重定向 3) at –f 文件

        依賴與atd服務,需要啟動才能實現at任務

        at隊列存放在/var/spool/at目錄中

        /etc/at.{allow,deny}控制用戶是否能執行at任務

            白名單: /etc/at.allow 默認不存在,只有該文件中的用戶才能執行at命令

            黑名單: /etc/at.deny 拒絕該文件中用戶執行 at命令, 而沒有在at.deny 文件中的使用者則可執行

            如果兩個文件都不存在,只有 root 可以執行 at 命令

    batch命令:

        讓系統自行選擇空閑時間去執行此處指定的任務

    周期性任務計劃: cron

        相關的程序包:

        cronie: 主程序包,提供crond守護進程及相關輔助工具

        cronie-anacron: cronie的補充程序;用于監控cronie任務執行狀況;如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務

        crontabs:包含CentOS提供系統維護任務

    確保crond守護處于運行狀態:

        CentOS 7:

            systemctl status crond

            …running…

        CentOS 6:

            service crond status

    計劃周期性執行的任務提交給crond,到指定時間會自動運行

        系統cron任務:系統維護作業

            /etc/crontab

        用戶cron任務:

            crontab命令

        系統cron任務:/etc/crontab

        注釋行以 # 開頭

        詳情參見 man 5 crontab

            # 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

        例如:晚上9點10分運行echo命令;

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

        時間表示法:

            (1) 特定值;

                給定時間點有效取值范圍內的值

            (2) *

                給定時間點上有效取值范圍內的所有值

                表示“每…”

            (3) 離散取值:

                #,#,#

            (4) 連續取值: –

                #-#

            (5) 在指定時間范圍上,定義步長:

                /#: #即為步長

        例如:每3小時echo命令;

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

        時間格式

            @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:要執行的任務

        當執行任務時,更新/var/spool/anacron/文件時間戳

    管理臨時文件

        rhel7.0之前使用tmpwatch工具定時清除臨時文件。

        rhel7.0使用systemd-tmpfiles-setup服務實現

        配置文件:

            /etc/tmpfiles.d/*.conf

            /run/tmpfiles.d/*.conf

            /usr/lib/tmpfiles/*.conf

        /usr/lib/tmpfiles.d/tmp.conf

            d /tmp 1777 root root 10d

            d /var/tmp 1777 root root 30d

        命令:

            systemd-tmpfiles –clean|remove|create configfile

    計劃任務

        用戶cron:

        crontab命令定義,每個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME

        crontab命令:

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

                -l: 列出所有任務;

                -e: 編輯任務;

                -r: 移除所有任務;

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

                -u user: 僅root可運行,指定用戶管理cron任務

    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) COMMAND > /dev/null

            (2) COMMAND &> /dev/null

        對于cron任務來講, %有特殊用途;如果在命令中要使用%,則需要轉義;不過,如果把%放置于單引號中,也可以不用轉義;

        思考:

            (1) 如何在秒級別運行任務?

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

            (2) 如何實現每7分鐘運行一次任務?

            sleep命令:

                sleep NUMBER[SUFFIX]…

                    SUFFIX:

                    s: 秒, 默認

                    m: 分

                    h: 小時

                    d: 天

原創文章,作者:DYW,如若轉載,請注明出處:http://www.www58058.com/47406

(0)
DYWDYW
上一篇 2016-09-18
下一篇 2016-09-18

相關推薦

  • WORD文檔格式要求與linux學習規劃

    WORD文檔格式要求 一、封面               1、活動名稱(隸書,小初號字,加粗)               2、主辦單位、策劃日期(宋體、3號字) 二、目錄    &nbs…

    Linux干貨 2013-06-20
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@centos7 ~]# cp -r /etc/skel/ /home/tuser1 [root@centos7 ~]# chmod …

    Linux干貨 2017-01-16
  • samba的部署及應用

    samba: 啟動服務:nmb.server;smb.server 會通過文件系統的方式輸出給客戶端 smb:Service Message Block;服務信息塊 cifs:Common Internet File System,通用互聯網文件系統 samba:Andrew Tridgell;熱情奔放的桑巴…

    Linux干貨 2016-10-19
  • Shell中的循環語句

    在編程語言中,循環語句是最基本的語法之一,在Shell(這里是Bash)中也不例外。把相關內容整理一下吧。 這里包括for/while/until循環,以及變量自增的語法實例。 Shell(以Bash為例)中的循環語句一般有for、while、until這幾種,偶爾還有寫錯語法的時候,這里結合實例來自己總結一下。也為今后使用提供一個快捷的資料獲取渠道。 一、…

    Linux干貨 2016-08-22
  • 基于lamp實現wordpress(php-rpm)與phpMyAdmin(pph-rpm+https支持)

    前言    踩了好多坑終于把想象中的樣子搭建出來了。真的是,只有遇到問題了,然后扎耳撓腮把問題解決了,才是真的學到了。此次環境我們采用lamp架構,并且通過fastcgi讓httpd和php進行通信。當然所有的一切都是在同一臺主機上實現。本次安裝的應用是phpMyAdmin-4.4.14.1和wordpress-4.3.1

    Linux干貨 2016-12-26
  • Linux基礎系列(用戶,組管理)

       Linux是一個多用戶操作系統多任務的分時操作系統,平時的日常使用離不開用戶登錄以及用戶組的管理,熟練管理用戶和用戶組,會提升我們的工作效率。   Linux用戶管理:   Linux包括系統管理員,普通用戶。普通用戶又分為系統用戶和登錄用戶。系統用戶一般不會登陸系統,其shell類型一般為/etc/nologi…

    Linux干貨 2016-08-04
欧美性久久久久