1. 程式人生 > >linux進程的查看與管理

linux進程的查看與管理

running 結束 如果 批次 kill 服務 ont 定義 連續

一、進程的查看與管理
1、查看
a、ps 靜態查看
格式:ps [選項]
選項:
a:與終端相關的
x:與終端無關的
u:以用戶為中心
-e:顯示所有進程
-f:顯示完整格式程序信息
-l:顯示完整的列
-H: 以進程層級格式顯示進程相關信息

  ~]# ps aux
  USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
        VSZ: Virtual memory SiZe,虛擬內存集
    RSS: ReSident Size, 常駐內存集
    STAT:進程狀態
        R:running
        S: interruptable sleeping
        D: uninterruptable sleeping
        T: stopped
        Z: zombie

        +: 前臺進程
        l: 多線程進程
        N:低優先級進程
        <: 高優先級進程
        s: session leader

    b、top   動態查看
     有許多內置命令:
          排序:
                P:以占據的CPU百分比;
                M:占據內存百分比;
                T:累積占據CPU時長;

            首部信息顯示:
                uptime信息:l命令
                tasks及cpu信息:t命令
                    cpu分別顯示:1 (數字)
                memory信息:m命令

            退出命令:q
            修改刷新時間間隔:s
            終止指定進程:k

           選項:
            -d #: 指定刷新時間間隔,默認為3秒;
            -b: 以批次方式;
            -n #: 顯示多少批次;

   c、pstree   查看進程樹
    格式:pstree  [選項]
    選項:
     -a:顯示完整信息
     -u:顯示用戶名
     -p:顯示進程id號

   d、pgrep   根據指定信息查看進程
  格式:pgrep    指定信息
      例如:pgrep  -l  -U  用戶名   -t  終端
     -l:顯示進程名稱
     -U:指定用戶
     -t:指定終端

2、進程的啟動
a、手動啟動
    前臺啟動:直接在終端運行程序即可
    後臺啟動:將原本在前臺執行的程序調到後臺運行        在運行程序後加上&
    前後臺調度的操作:
        ctrl+z:將正在運行的進程調入後臺並停止執行
        jobs:查看後臺進程列表
        fg [進行列表序號]:將後臺停止的進程恢復前臺運行
b、調度啟動
    一次性計劃任務:at
    周期性計劃任務:crontab

3、結束進程
ctrl+c
kill PID號
kill  -9   PID號    //慎用
killall 進程名稱
killall  -9  進程名稱    //慎用
pkill -U 用戶名  -t  終端      //結束指定用戶在指定終端上的進程
pkill -9  -U 用戶名  -t  終端  //慎用

二、計劃任務
1、一次性 at
確保:atd服務正在運行
格式:at [HH:MM] [YYYY-mm-DD] //按ctrl+d提交
例如:#at 21:30
at>shutdown -h now
atq //查看尚未執行的任務列表
atrm n //刪除指定尚未執行的任務

2、周期性
周期性任務計劃: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任務
            # 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!"

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

            crontab命令:
                crontab [-u user] [-l | -r | -e] [-i] 
                    -l: 列出所有任務;
                    -e: 編輯任務;
                    -r: 移除所有任務;
                    -i:同-r一同使用,以交互式模式讓用戶有選擇地移除指定任務;

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

        註意:運行結果以郵件通知給相關用戶;
            (1) COMMAND > /dev/null 
            (2) COMMAND &> /dev/null

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

linux進程的查看與管理