Linux进程管理

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux进程管理

科技小能手 2017-11-12 01:58:00 浏览508
展开阅读全文

需重点掌握内容:

一、查看进程
二、进程控制
三、作业控制
四、进程优先级      

一、查看进程

ps命令 
process snapshot

查看当前终端上运行的进程
# ps 
# ps aux
# ps auxf

其中所用参数含义如下:

a 只能查看所有终端进程
u 显示进程拥有者
x 显示系统内所有进程
f  显示进程之间的父子关系(使用pstree查看更详细的父子关系)

显示结果中每列含义如下:

    USER 进程拥有者
    PID  process identify
    TTY  进程在哪个终端运行
        查看tty的方法:
        #tty
        其中'?' 表示这个进程开启的时候没有占用终端
    TIME 进程占用cpu的总时间
    CMD  进程名称
    %CPU 进程占用的cpu百分比
    %MEM 进程占用memory百分比
    VSZ  进程占用的虚拟内存大小
    RSS  占用的物理内存大小
    STAT 当前进程状态
     #man ps
     R running
     S sleep
     T stop  
     Z zombie(僵死,僵尸)

        D    Uninterruptible sleep (usually IO)
        R    Running or runnable (on run queue)
        S    Interruptible sleep (waiting for an event to complete)
        T    Stopped, either by a job control signal or because it is
        being traced.
        W    paging (not valid since the 2.6.xx kernel)
        X    dead (should never be seen)
        Z    Defunct ("zombie") process, terminated but not reaped by
        its parent.
        <    high-priority (not nice to other users)
        N    low-priority (nice to other users)
        L    has pages locked into memory (for real-time and
                custom IO)
        s    is a session leader
        l    is multi-threaded (using CLONE_THREAD, like NPTL
                pthreads do)
        +    is in the foreground process group

--sort 按指定字段排序显示:
        [root@wing ~]# ps aux --sort %cpu | less
        [root@wing ~]# ps aux --sort %-cpu | less

-o 显示指定字段:
        [root@wing ~]# ps  axo user,%cpu,command --sort -%cpu | less
        [root@wing ~]# ps  -eo user,%cpu,%mem,command --sort %cpu

#ps -elf
    -e  显示所有进程    
    -l  长格式显示
    -f  完整格式    
#ps -e 常用

pstree命令

查看进程树
#pstree
-a 显示参数
-p 显示pid
-u 显示用户名

lsof命令

用在这里查看带端口的进程)
lsof -i:80
查看端口为80的进程

pidof命令
#pidof 进程名称


pgrep命令

#pgrep -l eyes 
 1179 xeyes

进程pid文件

cd /var/run

    # cat /var/run/httpd/httpd.pid 
    12265

w命令

查看当前登录系统账户进程
[root@server ~]# w
 16:51:43 up  8:30,  7 users,  load average: 0.11, 0.27, 0.30
USER     TTY      FROM             LOGIN@   IDLE   JCPU   
PCPU WHAT
root     :0       :0               08:22   ?xdm?  29:39   0.23s 
gdm-session-
root     pts/0    :0               14:13    1:43   0.30s  0.30s bash
root     pts/1    :0               11:19    5:19   0.62s  0.62s bash
root     pts/2    :0               14:13    1:39m  0.06s  0.01s less
root     pts/3    :0               14:54    7.00s  0.06s  0.01s w
root     pts/4    :0               16:25   25:51   0.06s  0.06s bash
root     pts/5    :0               16:40    7:11   0.24s  0.24s bash

who命令

        查看当前登录账户的简要信息
        [root@server ~]# who
        root     :0           2017-11-27 08:22 (:0)
        root     pts/0        2017-11-27 14:13 (:0)
        root     pts/1        2017-11-27 11:19 (:0)
        root     pts/2        2017-11-27 14:13 (:0)
        root     pts/3        2017-11-27 14:54 (:0)
        root     pts/4        2017-11-27 16:25 (:0)
        root     pts/5        2017-11-27 16:40 (:0)

users命令

    只查看当前登录账户名称
    [root@server ~]# users
    root root root root root root root

top命令

强大的进程查看工具,实时的查看进程的状态
#top
    h或者? 显示top内部帮助信息
    >  往下翻页
    <  往上翻页
    M  按内存排序
    P  按cpu排序
    k  输入pid杀死进程
    q  退出
    1  展开cpu信息
    f   打开列显示操作界面
    W 保存当前列显示设置
    R  排序反转   
    z   彩色显示
    r   调整进程的nice优先级

[root@wing ~]# top -d 2 -p 1068 -bn1
[root@wing ~]# top  -u apache           
    -d 数字   #指定刷新时间,单位秒
    -p pid      #指定单独显示某一个进程的信息
    -bn 1       #静态打印进程信息1次,数字1可改

二、进程控制

kill命令利用信号和pid控制进程

语法
#kill 信号(signal) pid

常用信号如下

-1   HUP  重新加载进程或者重新加载配置文件
-9   KILL 强制杀死
-15  TERM 正常杀死(这个信号可以默认不写)
-18  CONT 激活进程
-19  STOP 挂起进程

数字和进程号缩写可通用,含义相同,比如:
#kill -HUP  pid
#kill -STOP pid

-l 显示所有可用信号
#kill -l
#man 7 signal #查看所有信号的解释

其他进程控制命令
#killall 信号 进程名称 //杀死所有跟进程相关的进程 
#pkill -9 进程名称 //按进程名称杀死进程
#pkill -t 终端 //按终端杀死进程
不加-9只杀死在终端上运行的进程,加-9连终端本身一起干掉
#pkill -u 用户名称 //按用户杀死进程
#xkill //执行命令后用鼠标点杀。。。点杀?发现自个儿这词儿用的不错,哈哈

======================================

三、作业控制

作业控制之jobs:

ctrl+z  此快捷键把程序放到后台(这方法会让程序在后台暂停)
#fg %1         //把程序调到前台,%是用来修饰job number,1就是job number。
#jobs            //查看工作号
#bg %1        //让暂停的程序在后台运行
#kill -9 %1   //按工作号杀死进程
#kill -9 pid    //千万不能把%丢掉,不然会变成这条命令的含义,可怕

作业控制之screen:

screen提供会话恢复和多窗口功能,本节讲解常用的会话恢复功能
先安装软件:
        #yum install screen -y
实例:
        **开启screen会话**:
        [root@wing ~]#screen -S  lala             //给screen起个名字叫lala
        [root@wing ~]# ssh 192.168.245.3     //远程连到245.3这台机器
        root@192.168.245.3's password: 
        Last login: Sun Nov 26 19:48:39 2017 from 192.168.245.137
        [root@master ~]# vim aa.txt              //编辑一个文件,在没有编辑完的情况下关闭终端

        **恢复screen会话**:
        [root@wing ~]# screen -list
        There are screens on:
            39160.lala  (Attached)
            38966.pts-0.wing    (Detached)
        2 Sockets in /var/run/screen/S-root.

        [root@wing ~]# screen -r 38966          //38966是screen lala中运行的会话进程
        回车后神奇恢复被意外中断的会话,恭喜你已经会用screen杀手级功能了:)

四、进程优先级

优先级本身是"不能"修改,通过nice值修改优先级。
普通账户只能调高nice值,不能往低调
root账户随便调
nice值越高,优先级越低。
nice值范围:-20到19

查看进程优先级:方式很多
    # top
    # ps axo pid,command,nice  --sort=-nice | less
    # ps -elf
    PR:priority
    NI:nice

指定进程优先级运行程序:
    #nice --15 firefox &   

修改进程优先级:

# renice 10 7116 nice值前面不能加-


本文转自 CrazyWing 51CTO博客,原文链接:
http://blog.51cto.com/fklinux/2044927


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注