• Linux进程管理


    进程:是操作系统中的一种抽象概念,用来表示正在运行的程序
    进程有多个属性参数:PID、PPID、UID、GID等
     
    例子:手动创建一个后台程序,并通过kill杀死它,前台程序可以Ctrl+C杀死
         1.在主目录中用文本编辑器创建一个名为badpro的文本文件,包含如下内容:
              #!  /bin/bash
              while echo "I'm making files!!!"
              do
                   mkdir adir
                   cd adir
                   touch afile
                   sleep 2s(不能忘,否则,必须使用rm -fr adir来删除这些“垃圾”目录)
              done
         2.将这个文件加上可执行权限,并从后台执行。
              chmod +x badpro
              ./badpro & (将命令放到一个工作队列中,可以用命令“jobs”查看)
         3.程序运行起来了,运行ps命令查看这个程序的PID号(PID号用于唯一表示一个进程);
              ps  aux  |  grep  badpro          
              ps 查看所有运行的程序
              ps -aux      ##可以看到所有运行的程序与grep连用筛选
              ps -a          ##显示现行终端机下的所有程序(包括其他用户的程序)
              ps -u          ##以用户为主的排序显示(username)
              ps -x          ##显示所有程序(包括所有终端机下的)
         4.使用kill命令“杀死“这个进程。
              kill  12794 ( PID );
         5.回到运行badpro的终端,可以看程序已被终止,最后删除建立的目录和文件
              rm -r adir
     
    1.查看所有运行的程序:ps
              ps -aux      ##可以看到所有运行的程序与grep连用筛选
              ps -a          ##显示现行终端机下的所有程序(包括其他用户的程序)
              ps -u          ##以用户为主的排序显示(username)
              ps -x          ##显示所有程序(包括所有终端机下的)
              ps aux  |  grep badpro     ##筛选出带有badpro关键字的进程
              ("-"可以省略)
     
              ps lax        ##可以提供进程ID(PPID父进程)和 谦让度(NI)不需要显示属主用户名,所以速度更快
         
                                                      ps  zux 命令产生进程信息的各种字段含义:
    字段
    含义
    USER
    进程创建者的用户名
    PID
    进程的ID号
    %CPU
    进程占用的CPU百分比
    %MEM
    进程占用的内存百分比
    VSZ
    进程占用的虚拟内存的大小
    RSS
    内存中页的数量(页是管理内存的单位,在PC上通常为4K
    TTY
    进程所在终端的ID号
    STAT
    进程状态,常用的字母代表含义如下:
    R 正在运行/可运行          D 睡眠中(不可被唤醒,通常是等待I/O设备)
    S 睡眠中(可以被唤醒)   T 停止(由于收到信号或被跟踪)
    Z 僵进程(已经结束而没有释放系统资源的进程)
    常用的附加标准:
    < 进程拥有比普通优先级高的优先级
    N 进程拥有比普通优先级低的优先级
    L 有些页面被锁在内存中
    s 会话的先导进程
    START
    进程启动的时间
    TIME
    进程已经占用的CPU时间
    COMMAND
    命令的参数
     
    2.即时跟踪进程信息:top
              top     ##命令显示的信息会占满一页,并且在默认情况下每10s更新一次。那些使用CPU最多的程序会排在最前面。
               q        ##退出    
     
    3.查看占用文件的进程:lsof
              lsof database.doc
     
    4.向进程发送信号:kill(只是用来向进程发送一个信号)
              kill [-signal]  pid   
              kill pid    等同于kill -TERM pidkill -SIGTERM pid 或kill -15 pid(SIG可以省略)
              kill -INT     等同于快捷键Ctrl+C
                                                                                          常用的信号
    信号编码
    信号名
    描述
    默认情况下执行的操作
    0
    (SIG)EXIT(SIG可以省略
    程序退出时收到该信号
    终止
    1
    (SIG)HUP
    挂起
    终止
    2
    (SIG)INT
    中断
    终止
    3
    (SIG)QUIT
    退出
    终止
    9
    (SIG)KILL
    杀死
    终止
    11
    (SIG)SEGV
    段错误
    终止
    15
    (SIG)TERM(默认,不写
    软件终止
    终止
    取决于硬件体系
    USR1
    用户定义
    终止
    取决于硬件体系
    USR1
    用户定义
    终止
     
         注意:在程序的开头加入命令“trap "" TERM”用于忽略TERM信号,如下:
                        #!  /bin/bash
                        trap "" TERM
                        while echo ... ...
                    但是KILL信号是永远不会被程序捕获的,可以用该信号结束进程
     
    5.调整进程的谦让度:nice 和 renice
              谦让度 IN 的范围:-20~+19
              nice命令可以在启动程序时设置其谦让度,设置 相对值
              renice命令可以在进程运行时调整其谦让度,设置 绝对值
                   nice -n 2 bc               ##设置bc以谦让度 增量2 启动
                   nice bc                       ##不带-n时,会将程序的谦让度增量设置为10
                   renice +12 -p [PID]    ##将bc的 -p 选项指定进程的PID
     
    6./PROC文件系统
              /PROC目录下存放着内核有关系统状态的各种有意义的信息。在系统运行时,内核会随时向这个目录写入数据。ps和top命令就是从这个地方读取数据的。事实上,这是操作系统向用户提供的一条通往内核的通道,用户甚至可以通过向/proc目录下的文件写入数据来修改操作系统参数
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    友盟消息推送api、python sdk问题、测试demo代码
    Django的时区设置问题
    优酷视频上传api及demo代码
    git回滚线上代码
    charles的使用
    django+ajax用FileResponse文件下载到浏览器过程中遇到的问题
    scrapy框架
    几个简单的算法
    SQLAlchemy
    redis
  • 原文地址:https://www.cnblogs.com/chinawjb/p/5240626.html
Copyright © 2020-2023  润新知