LINUX 系統管理

                          #  一 進程管理
              
      1. 進程簡介
        
      進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源。
                  
      2. 進程管理的作用
          1)判斷服務器健康狀態
          2)查看系統中所有進程
          3)殺死進程     
      3. 殺死進程
      4. 修改進程優先級
  
                         #   簡介與分類
           
           1. 進程管理簡介
           2. 進程的查看 -- ps 和 pstree 命令
           3. 進程的查看 --top命令


                         #   查看所有進程
    
            ps aux 查看系統中所有進程,使用BSD操作系統格式
            ps -le  查看系統中所有進程,使用linux標準命令格式
            選項:
                -a : 顯示一個終端的所有進程,除了回家引線
                -u: 顯示進程的歸屬用戶及內存的使用情況
                -x: 顯示沒有控制終端的進程
                -l : 長格式顯示,顯示更加詳細的信息
                -e :顯示所有進程和-A作用一致
    
                            # ps命令的輸出

            USER: 該進程是由哪個用戶產生的
            PID: 進程的ID好
            %CPU:該進程占用CPU資源的百分比,占用越高,進程越消耗資源
            %MEM:該進程占用物理內存的百分比,占用越高,進程越消耗資源
            VSZ:該進程占用虛擬內存的大小,單位KB
            RSS:該進程占用虛擬內存的大小,單位KB
            TTY:該進程是在那個終端中運行的。其中tty | -tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端。
            STAT:進程狀態,常見的狀態有:
                         R:運行 S:睡眠 T:停止狀態 s:包含子進程 +:位于后臺
            START: 該進程的啟動時間
            TIME: 該進程占用CPU的運算時間,注意不是系統時間
            COMMAND:產生此進程的命令名


                                      # 查看進程樹
  
             pstree [選項]
                         -p:顯示進程的PID
                         -u:顯示進程的所屬用戶
            
                                      # 查看系統健康狀態
                      
             top [選項]
                          -d:秒數 指定top命令每隔幾秒更新,默認3秒
                          -b:使用批處理模式輸出,一般和“-n”選項合用
                          -n 次數:制定top命令執行的次數,一般和“-b”選項合用
                 
                  在top命令的交互模式當中可以執行的命令
                        ?或h : 顯示交互模式的幫助
                         P:以CPU使用率排序,默認就是此項
                         M:以內存的使用率排序
                         N:以PID排序
                         q:退出top

  
                              # top 查詢出的信息
  
            第一行為隊列信息
    
                      內容                                                說明
              12:26:46                                     系統當前時間
              up 1 day,13:32                          系統的運行時間,
                                                            本機已經運行1天13小時32分鐘
              2 users                                             當前登陸了2個用戶
              load arerage:0.00 0.00 0.00   15分鐘的平均負載,一般認為小于1時,負載較小
                                                                 如果大于1,系統已超出負荷

            第二行為進程信息
                          
                      內容                                                  說明
                tasks : 95 total                             系統中的進程總數
                1 running                                        正在運行的進程數
                94 sleeping                                     睡眠的進程
                0 stopped                                       正在停止的進程
                0 zombie                                        僵尸進程,如果不是0,需要手工檢查僵尸進程

            第三行為CPU信息

                       內容                                                    說明
                Cpu(s): 0.1%us                             用戶模式占用的CPU百分比
                0.1%sy                                             系統模式占用的CPU百分比
                0.0%ni                                            改變過優先級的用戶進程占用的CPU百分比
                99.7%id                                            空閑的CPU百分比
                0.1%wa                                             等待輸入/輸出的進程的占用CPU百分比
                0.0%hi                                               硬中斷請求服務占用的CPU百分比
                0.1%si                                               軟終端請求服務占用的CPU百分比
                0.0%st                                               st(steal time)虛擬時間百分比。就是當有
                                                                          虛擬機時,虛擬CPU等待實際CPU時間

             第四行為物理內存信息

                      內容                                                         說明
                Mem:625344k total                          物理內存的總量,單位KB
                571504k used                                     已使用物理內存數量
                53840k  free                                        空閑的物理內存數量
                65800k buffers                                    作為緩沖的內存數量

            第五行為交換分區(swap)信息
    
                      內容                                                             說明
               swap:524280k total                              交換分區(虛擬內存)的總大小
               ok used                                                   已經使用的交互分區的大小
               524280k free                                           空間交換分區的大小
               409280k cached                                      作為緩存的交互分區的大小

                                          使用top查看所有進程
              top -b -n 1 > /root/top.log




                                          殺死進程

                1. kill 
                    kill    -l   查看可用的進程信號

                例:
              信號代號             信號名稱                      說明
                  1.                     SIGHUP             該信號讓進程立即關閉,
                                                                      然后重新讀取配置文件之后重啟
                  2.                     SIGINT               程序終止信號,用于終止前臺進程。
                                                                       相當于輸出ctrl+c快捷鍵
                  8.                      SIGFPE             在發生致命的算術運算錯誤時發出,不僅包
                                                                       含浮點運算,還包括溢出及除數0等其他所
                                                                       有算數的錯誤
                  9.                      SIGKILL             用來立即結束程序的運行,本信號不能被阻
                                                                        塞、處理和忽略一般用于強制終止進程
                  14.                    SIGALRM           時鐘定時信號,計算的是實際時間或時鐘時
                                                                        間,alarm使用該信號
                  15.                    SIGTERM           正常結束進程的信息,kill命令的默認信號,
                                                                         有時如果進程已經發生問題,這個信號是
                                                                         無法正常終止進程的,我們才會嘗試
                                                                         SIGKILL信號也就是信號9
                   18.                   SIGCONT            該信號可以讓暫停的進程回復執行,本信號
                                                                          不能被阻斷                    
                   19.                   SIGSTOP             該信號可以暫停前臺進程,相當于輸入
                                                                            ctrl+z快捷鍵,本信號不能被阻斷
      
            例:
                kill -1 端口號 重啟進程
                kill - 9 端口號 強制殺死進程


                                     #2. killall 命令
    
            killall [選項][信號]進程名                  按照進程名殺死進程
                        -i  交互式,尋味是否要殺死某個進程
                        -I  忽略進程名的大小寫

                                     #3. pkill 命令
            pkill [選項][信號]進程名                     按照進程名終止進程
                        -t 端口號 : 按照終端號提出用戶
                         
            w:查看當前登陸用戶


                                     #進程優先級簡介

              Linux操作系統是一個多用戶、多任務的操作系統,Linux系統中通知運行著非常多的進程。但是CPU在同一個時鐘周期內只能運算一個指令。進程優先級決定了每個進程處理的先后順序

              ps -le    PRI代表Priority ,Ni代表Nice 這兩個值都是優先級,數字越小代表該進程優先級越高

                            
                                    # 修改NI值時有幾個注意事項

               1. NI的值的范圍是-20 到 19
               2. 普通用戶調整NI值的范圍是0到19,而且只能調整自己的進程
               3. 普通用戶只能調高NI值,而不能降低,如果本NI值為0,則只能調整為大于0
               4. root用戶才能設定進程NI值為負值,而且可以調整任何用戶的進程
               5. PRI(最終值) =  PRI(原始值) + NI
               6. 用戶只能修改NI的值,不能直接修改PRI

                                      # nice 命令
                nice [選項] 命令  nice命令可以給新執行的命令直接賦予NI值,但是不能修改已經存在進程的Ni值
                            -n   NI值:給命令賦予NI值

                例:
                   nice -n -5 service httpd start
      
                                     # renice 命令
  
                 renicre [優先級] PID
                 renice 命令是修改已經存在的進程的NI值的命令
                 renice -10 2125


                                      # 工作管理
  
                  jobs 查詢在后臺執行的進程

                                      # 工作管理簡介
                  
    工作管理指的是在單個登陸終端中(也就是登陸的shell界面中)同時管理多個工作的行為。

                                      # 注意事項
  
            1 當前的登陸終端,只能管理當前終端的工作,而不能管理其他登陸終端工作
            2 放入后臺的命令必須可以持續執行一段時間,這樣我們才能捕捉和操作這個工作
            3 放入后臺執行的命令不能和前臺用戶有交互或需要前臺輸入,否則放入后臺只能暫停,而不能執行

                                      # 1.把進程放入后臺

              1 top & 把命令放入后臺,并在后臺執行
              2 ctrl+z 快捷鍵,放在后臺暫停

                                     # 2. 查看后臺的工作
            
               jbos [-l]
                          -l : 顯示工作的PID
                        注: “+”號代表最近一個放入后臺的工作,也是工作恢復時,默認恢復的工作?!?”號代表倒數第二個放入后臺的工作

                                    # 3.將后臺暫停的工作恢復到前臺執行
        
                fg % 工作號
                    參數: 
                        % 工作號:%號可以省略,但是要注意工作號和PID的區別

                                  # 4. 把后臺暫停的工作回復到后臺執行
                
                 bg % 工作號
                        注: 后臺回復執行的命令,是不能和前臺有交互的,否則不能回復到后臺執行

                                   # 后臺命令脫離登陸終端執行的方法
  
                 第一種方法是把需要后臺執行的命令加入/etc/rc.local文件
                 第二種方法是使用系統定時任務,讓系統在制定的時間執行某個后臺命令
                 第三種方法是nohup命令
        
                                  #  nohup 命令
                  
                   nohup [命令] & 
  
                                          # 系統資源查看
  
                                  # 1 vmstat 命令監控系統資源

                    vmstat [刷新延時 刷新次數] 例: vmstat 1 3

                    procs:進程信息字段
                                  r : 等待運行的進程數,數量越大,系統越繁忙
                                  b : 不可被喚醒的進程數,數量越大,系統越繁忙

                     memory : 內存信息字段
                            swod:虛擬內存的使用情況,單位KB
                            free:空閑的內存容量,單位KB
                            buff:還從的內存容量,單位KB
                            cache:緩存的內容容量,單位KB
                        
                     swap : 交換分區的信息字段:
                            si:從磁盤中交換到內存中數據的數量,單位KB
                            so:從內存中交換到磁盤中數據的數量,單位KB。此兩個數越大,證明數據需要經常在磁盤和內存之間交換,系統性能越差
                      
                      io : 磁盤讀寫信息字段:
                            bi:從塊設備讀取數據的總量,單位是塊
                            bo:寫到塊設備的數據的總量,單位是塊。此兩個數越大,代表系統的I/0越繁忙
                
                      system:系統信息字段
                            in:每秒被終端的進程次數
                            cs:每秒中進行的事件切換次數,此兩個數越大,代表系統與接口設備的通信越繁忙
  
                      cpu: cpu 信息字段
                            us:非內核進程消耗cpu運算的百分比
                            sy:內核進程消耗cpu運算時間的百分比
                            id:空閑cpu的百分比
                            wa:等待I/O所消耗的CPU百分比
                            st:被虛擬機所盜用的CPU占比

                                  # 2. dmesg 開機時內核檢測信息

                      dmesg 
                      dmesg | grep cpu
  
                                  # 3. free 命令查看內存使用狀態

                      free [-b|-k|-m|-g]
                                  -b:以字節為單位顯示
                                  -k:以kb為單位顯示,默認就是以KB為單位顯示
                                  -m:以MB為單位顯示
                                  -g:以GB為單位顯示

                                  # 4. 查看cpu信息
  
                      cat /proc/cpuinfo
  
                                 # 5. uptime 命令
  
                      uptime  顯示系統的啟動時間和平均負載嗎也就是top命令的第一行,w命令也可以看到這個數據。

                                 # 6. 查看系統與內核相關信息

                       uname [選項]
                                      -a : 查看系統所有相關信息
                                      -r: 查看內核版本
                                      -s:查看內核名稱
  
                   判斷當前系統位數      file /bin/ls 查看位數
                   
                    查看當前linux 系統的發行版本
                    lsb_release -a
  
                                 # 7. 列出進程打開或使用的文件信息

                     lsof [選項]
                            列出進程調用或打開的文件信息
                              -c 字符串:只列出以字符串開頭的進程打開的文件
                              -u 用戶名:只列出某個用戶的進程打開的文件
                              -p pid : 列出某個PID進程打開的文件

                    lsof | more       查詢系統中所有的進程調用的文件
                    lsof /sbin/init    查詢某個文件被哪個進程調用
                    lsof -c httpd      查看httpd進程調用了哪些文件
                    lsof -u root        按用戶名,查詢某用戶的進程調用的文件名



                                        # at 一次執行
      
                   1. 確定at安裝
                         chkconfig --list | grep atd              at 服務是否安裝
                         service atd restart                         at 服務重啟

                    2. at 的訪問控制
                          如果系統中有/etc/at.allow 文件,那么只有寫入/etc/at.allow文件(白名單)中的用戶可以使用at命令(/etc/at.deny文件會被忽略)
                          如果系統中沒有/etc/at.allow文件,只有/etc/at.deny文件,那么寫入/etc/at.deny文件(黑名單)的用戶不能使用at命令  對root不起作用
                          如果系統中這兩個文件都不存在,那么只有root用戶可以是以哦那個at命令

                    3.at命令
                        at [選項] 時間
                              -m : 當at 工作完成后,無論是否命令有輸出,都用email通知執行at命令的用戶
                               -c 工作號:顯示該at工作的實際內容
                                   時間:
                                HH:MM                             例:02:30
                                HH:MM YYYY-MM-DD     例: 02:30 2013-7-25
                                HH:MM [ap|pm] [month] [date] 例: 02:30 july 25
                                HH:MM [ap|pm]+[minutes|hours|days|weeks] 例: now +5 minutes

                    4. 例子1
                        at now+2 minutes
                        at > /root/hello.sh >> /root/hello.log
                      
                         例子2
                         at 02:00 2017-07-26
                         at> /bin/sync
                         at > /sbin/shutdown -r now
  
                    5. 其他at管理命令
        
                         atq 查詢當前服務器上的at工作
                         atrm [工作號] 刪除制定的at任務
                         ctrl+d 保存退出

                          Crontab 循環定時任務

                   1. crond 服務管理與訪問控制
                        service crond restart
                        chkconfig crond on

                          訪問控制

        當系統中有/etc/cron.allow 文件時,只有寫入此文件的用戶可以使用crontab命令,沒有寫入的用戶不能使用crontab命令。同樣如果有此文件,/etc/cron.deny文件會被忽略,/etc/cron.allow文件的優先級更高
        
         當系統中只有/etc/cron.deny文件時,則寫入此文件的用戶不能使用crontab命令,沒有寫入文件的用戶可以使用crontab命令

                     2. 用戶的crontab設置
      
         crontab [選項]
                           -e:biaoji crontab 定時任務
                           -l: 查詢crontab任務
                          -r:刪除當前用戶所有的crontab任務               
                        
          項目                                    含義                              范圍
        第一個“*”                一小時當中的第幾分鐘                0-59
        第二個“*”               一天當中的第幾個小時                 0-23
        第三個“*”               一個月當中的第幾天                     1-31
        第四個“*”               一年中的第幾個月                         1-12
        第五個“*”               一周當中的星期幾                          0-7(0和7都代表周日)  

        特殊符號                                                        含義
            *                代表任何時間。比如第一個“*”就代表一小時中每秒都執行一次的意思
            ,                代表不連續的時間,比如“0 8,12,16 * * * 命令” 就代表在每天的8點
                                 0分,12點0分,16點0分,都執行一次命令
            -                代表連續時間范圍,比如“0 5 * * 1-6 命令”,代表周一到周六的凌晨5
                                點0分執命令
           */n               代表每隔多久執行一次。比如“*/10 * * * * 命令” 代表每隔10分鐘就執
                                 行一遍命令

          時間

       45 22 * * * 命令                  在22點45分執行命令
       0 17 * * 1 命令                   每周一的17點0分執行命令
       0 5 1,5 * * 命令                  每月1號和15號的凌晨5點執行命令
       40 4 * * 1-5 命令                每周一到周五的凌晨4點40分執行命令
       */10 4 * * * 命令                  每天的凌晨4點,每隔10分鐘執行命令
       0 0 1,15 * 1 命令              每月1號和15號,每周一的0點0分都會執行。
      注意:星期幾和幾號最好不要同時出現,他們定義的都是天,非常容易讓管理員還亂

              例:
          */5 * * * * /bin/echo "11" >> /tmp/test
          5 5 * * 2 /sbin/shutdown -r now
          0 5 1,10,15 * * /root/sh/autobak.sh


                            4. crontab注意事項
  
      1) 六個選項都不能為空,必須填寫。如果不確定使用“*”代表任意時間
      2) crontab 定時任務,最小有效時間是分鐘,最大時間范圍是月,像2018年某時執行,3點30分30秒這樣的時間都不能識別
      3) 在定義時間時,日期和星期最好不要在一條定時任務中出現,因為他們都是以天為單位,非常容易讓管理員混亂
      4) 在定時任務中,不管是直接寫命令,還是在腳本中寫命令,最好都是用絕對路徑

                          系統的定時任務
  
      “crontab -e”是每個用戶執行的命令,也就是說不同的命令身份可以執行自己的定時任務。可是有些定時任務需要系統執行,這時我們就需要編輯/etc/crontab這個配置文件了

                         執行系統的定時任務的方法

       手工執行定時任務
       系統定時任務

          第一種是把需要定時執行的腳本復制到/etc/cron.{daily,weekly,monthty,hourly}目錄中的任意一個
          第二種是修改/etc/crontab 配置文件

                        anacron是什么

        anacron是用來保證在系統關機的時候錯誤的定時任務,可以在系統開機之后再執行

                         anacron 檢測周期

        anacron會使用一天,七天,一個月作為檢測周期

        在系統的/var/spool/anacron/目錄中存在cron.{daily,weekly,monthly}文件,用于記錄上執行cron的時間

        和當前時間做比較,如果兩個時間的差值超過了anacron的制定時間差值,證明有cron任務被漏執行


                                Centos 6.x 區別

    在老的CentOS版本中,/etc.{daily,weekly,monthly}這些目錄即會被cron調用,也會被anacron調用,容易重復執行
    在CentOS 6.x中則只會被anacron調用,避免了重復執行
    在CentOS 6.x中,anacron不再是服務,而是系統命令

                            anacron 配置文件

    vi /etc/anacrontab 
          RANDOM_DELAY=45  最大隨機延時
          START_HOURS_RANGE=3-22   anacron的執行時間是3到22點
          1  5  cron.daily  nice  run-parts  /etc/cron.daily
          7  25  cron.weekly  nice  run-parts  /etc/cron.weekly
          @monthly 45 cron.monthly  nice run-parts  /etc/cron.monthly
           # 天數  強制延遲(分)  工作名稱  實際執行的命令

                        cron.daily工作來說明執行過程
  
      首先讀取/var/spool/anacron/cron.daily中上一次anacron執行的時間
      和當前時間比較,如果兩個時間的差值超過1天,就執行cron.daily工作
      執行這個工作只能在03:00-22:00之間
      執行工作時強制延遲5分鐘,再隨機延遲0-45分鐘時間
      使用nice命令制定默認優先級,使用run-parts 腳本執行/etc/cron.daily目錄中的所有可執行文件






最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容