Linux进程管理

简介:

需重点掌握内容:

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

一、查看进程

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


相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
445 32
|
11月前
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
378 67
|
10月前
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
284 16
|
10月前
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
203 20
|
9月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
215 0
|
9月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
285 0
|
9月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
170 0
|
9月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
231 0
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
580 34