首页 > 代码库 > linux进程管理

linux进程管理

   我们在使用任何操作系统的时候都会打开一些应用程序,那么打开程序就会开启一个进程,我们在使用windows系统的时候,有时候开一个QQ,同时开一个游戏,还可以打开音乐播放软件,打开程序过多会消耗大量的内存和cpu是得系统有时候会感觉很卡顿,那么在Linux下如何管理进程呢,接下跟大家分享下linux系统下linux进程管理。


  1. 静态管理进程
     ps -e 列出所有进程的相关信息
     
     PID TTY          TIME CMD
     
     1号进程为一切进程的父进程  init   

     pstree 以树状形式列出进程   
     
     ps -ef
     UID        PID  PPID  C STIME TTY          TIME CMD
     进程拥有者        
     ?临时执行 退出 不占用状态


     ps au
     USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START
     
     %CPU cpu的使用率
     %MEM 内存的使用率
     VSZ  虚拟内存
     RSS  内存页
     START 何时开启的进程

     ps axo  pid,pri,nice,%cpu,%mem,command | grep vsftpd
     
     ps -p  pid  

     ps u -p 6917
        
     -e/-A 所有进程   
     a 所有的tty    (BSD-style)
     f 全格式显示
     PPID显示父进程

    ps -u root 查看指定用户开启哪些进程

    ps a
    PID TTY      STAT   TIME COMMAND  

    1.进程ID
    2.控制台
    3.进程状态
      STAT 进程的状态:
      R  正在运行的进程
      S  可以中断的休眠进程
      T  停止/暂停的进程
      D  不可中断的进程
      Z  zombie 僵尸进程
      X  退出状态
      s  还有子进程
      l  锁住内存页的内存
      N  优先级比较低的进程
      <  高优先级的进程

    4.消耗cpu时间
    5.进程的名称




    ps -ef

    ps aux

    ps axo


    netstat -tulnp  

    t:基于tcp的协议
    u:基于udp的协议
    l:listening 侦听  如果侦听表示该服务正在运行
    n:不做域名解析
    p:进程名

    lsof  -i:80  查看80端口是否监听

    pidof   vsftpd 查看进程的pid (只可以查看正在运行中的服务的PID)

    进程动态管理
    uptime
    11:30:15 up  2:37,  4 users,  load average: 1.02, 1.01, 0.95

    当前系统时间  开启了多久  4个用户   每1、5、15分钟的平均负载

     
    top
    %us  用户空间使用率
    %sy  内核空间

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1.pid
    2.进程的拥有者
    3.PRI Priority 优先级
    4.nice 值
    5.6
    7.SHR 共享内存 实现不同进程间访问的主要机制
    8.S进程状态
    9.cpu使用率
    10.内存使用率
    11
    12

    top
    P CPU
    M men
    k pid
    Z 带颜色显示
    q 退出
     
    top -u redhat 动态查看redhat用户信息
    top -p 1      查看指定pid信息



    /proc
    cat  /proc/meminfo  查看内存状态
    cat  /proc/cpuinfo  查看cpu详细信息

    路由转发

    临时
    echo 1 > /proc/sys/net/ipv4/ip_forward  

    永久
    echo "echo 1 > /proc/sys/net/ipv4/ip_forward " >> /etc/rc.local  

    环境变量的配置文件  
    ~/.bashrc   ~/.bash_profile  /etc/profile /etc/bashrc

    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    sysctl -p 让当前配置立即生效

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 放置ping  
    ----------------------------------------------------------------
    进程管理(kill)

    kill  [signal] pid

    pidof vsftpd
    6917

    kill  6917

    kill -15 15185

    kill -9 15185  强制

    信号
    man 7 signal  = kill -l

    1   reload  重新加载配置文件不影响业务
    2   ctrl+c  强制中断  
    9   强制杀死进程
    15  正常杀死进程
    17  暂停
    18  恢复

    进程调度(前后台切换)

    进程前台:
    占用当前shell  当shell关闭 进程就结束

    后台
    xeyes   &     当shell关闭 进程就结束

    ctrl+z  把前台正在运行的进程放后台处理 且是停止的状态   

    ctrl+c  杀死当前的进程  强制终止

    nohup xeyes   &   把进程放在后台运行 不占用当前的shell


    pkill  httpd 按照程序名杀死进程

    ------------------------------------------------------------------
    进程的前后台切换

    查看作业号
    jobs
    [1]-  Running                 xeyes &
    [2]+  Running                 xeyes &

    A:1、2 表示作业号
    B:+当前的进程
       -表示当前进程的上一个进程
    C:状态

    把后台进程放到前台工作
    fg %1

    ctrl z --->把前台进程后台且终止

    把后台暂停的进程放在后台继续运行
    bg %1

    kill  %1   杀死第一个作业所在的进程  
    ---------------------------------------------------------------------  
    进程优先级调整

    进程优先级不可以直接调整靠Nice值,通过Nice值的调整来影响pri的值

    好心值范围
    -20(最大优先级) 到 19 (最小优先级)  

    可以在进程开启的时候指定一个优先级
    ps axo  pid,nice,pri,command  | grep vsftpd
            15220  0 19 /usr/sbin/vsftpd

    开启一个进程默认的Nice值为0  优先级19   

    nice值越大 ----》  pri越优先(越小)

    在服务开启的时候指定其运行的优先级
    nice  -n 1  xeyes      nice --->1  
    17483   1  18 xeyes

    nice -n -1 firefox &   nice --->-1

    针对已经定义的优先级的调整

    renice  -5 17803     

    注意:renice后接的数字是指你想最终设置为-5(nice)
     


linux进程管理