進程管理,計劃任務(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 13:28
下一篇 2016-09-18 13:37

相關推薦

  • 源碼安裝http

    http://xxlii.blog.51cto.com/10277731/1841570     哈哈!

    Linux干貨 2016-08-24
  • Linux學習之課前環境安裝調試

    系統安裝,VNC,VMware軟件安裝

    2018-03-26
  • 第十五周作業

    1、總結sed和awk的詳細用法; sed:     模式空間:sed是一種在線編輯器、行編輯器,一次處理一行內容,在處理時,把當前處理的行存儲在臨時緩沖區當中,并在該緩沖區中完成后續的處理,該緩沖區被稱為”模式空間”。     保持空間:在模式空間中處理完一行內容后會繼續處理下一行,但是對于處…

    Linux干貨 2017-04-18
  • linux用戶和組

    *** Linux用戶和組: 1.用戶:Username/UID     管理員:root, 0     系統用戶:1-499(CENTOS6), 1-999(CENTOS7)     對守護進程獲取資源進行權限分配  &nbsp…

    Linux干貨 2016-08-04
  • Linux中/etc/passwd、/etc/shadow文件字段的含義以及用處

        今天本人學習到了兩個個Linux中非常重要的文件,它們承載著Linux用戶的相關信息,如果在賬號方面出現一些密碼相關的問題,就可以來找這兩個文件查看和分析一番。     他們分別是/etc/passwd和/etc/shadow兩個文件,他們都存放于/etc目錄中,都可以使用cat命令來查看其內容。  …

    Linux干貨 2016-01-14
  • 文件壓縮,解壓縮及歸檔

        在Linux的環境中,壓縮文件的擴展名大多是:“*.tar, *.tar.gz, *.gz, *.Z, *.bz2, *.xz”,因為 Linux 支持的壓縮指令非常多,且不同的指令所用的壓縮技術并不相同,當然彼此之間可能就無法互通壓縮/解壓縮文件,當你下載到某個壓縮文件時,自然就需要知道該文件是由哪種壓縮指令…

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