ps 命令详解

ps 命令: 

          命令其实非常庞大,古老,支持的选项非常多。而unix在分裂的过程中,这个命令也被独立维护

        一般来讲用户登录进去之后,系统就是给你一个终端。这都是跟终端相关的。而在登录之前那些都是跟无关的进程

        1.终端相关的进程:他们都附属于某一个进程,比如shell进程,所以shell进程都被称为leader进程。所以kill领导进程的时候,它会将里面的其他所有跟他有关的都kill。

        2.终端无关的进程:他们都独立。
           选项:BSD风格选项都没有“-”

            - e: 用于查看所有进程:无论是终端相关还是终端无关的所有进程

            a : 跟终端无关的所有进程。 

            x :表示跟终端相关的所有进程 

            u: 表示显示这个进程是由哪个用户发起的。

            axu : 正是一般查看进程时最重要的一项命令组合。

            -eF: 显示额外信息,小f显示完整信息。

            j : jobs format 作业的格式来显示进程状态信息。

            -ejH :H,可以显示进程见关系,直接树状显示出进程关系

            axjf : 真正树状图的形式显示进程关系

            -o : 自己定义只显示哪些字段。

                       比如: ps -eo pid,%CPU,comm  用逗号隔开,可以各种指定显示


            常用:


            ps axjf
            ps aux
            ps ef


                    PID(进程号) :CPU是靠着task_structure结构体来标示进程的,在这个结构体里,它会给进程分配PID
                                        task_structure:是个循环链表,会给每一个进程派发身份证。如果一个进程结束了,就会将这个进程身份证拿走。
                                         一个进程除了PID之外还有

                     PPID,父进程的进程号。对于Linux来讲,每一个进程都是又上帝带来的。所以所有
                                   进程的父进程都是init,所以这个进程的进程号是1.而上帝的本尊已经在父进程出来之后退居幕后了,他叫swap。进程号是0
                                   这个进程通过复制自身得来的。它复制自身得来子进程,而每一个子进程都可以生成子子进程
                                   tty: 是否跟终端相关。                ?表示不相关     tty1 表示相关

             STAT:进程状态:

                          1.running 运行态 : 从cpu 一旦获得时间,则变成了running。如果时间完了,进程还没运行完,则将进程切换回Ready。
                                            这种来回切换的过程叫: 上下文切换 (CS:Context Switch).把数据弄出去,再等有时间了弄回来。
                                            而系统调优,就是调这些每一个进程让其获得多少cpu的时间。 交互式进程越短越好。
                                            通过系统中断,可以实现,新来的进程如何抢先进入那些刚获得进程时间的还没有运行完得进程。
                          2. Ready 就绪态 :所有都具备了,只欠cpu的运行时间。轮到你了你就Running,轮不到你你就running
                          3. Stopped 停止态:指的是管理员通过触发某种事件,让这个进程永久的沉睡下去了。 只有当管理员唤醒它,它才能进入运行循环
                          4. Sleep 睡眠态,等待某个I/O事件完成的时候,就从running态转变成了睡眠态
                                               一般等待用户输入数据,或者等待读入数据时。不睡眠就进入就绪态
                                                可中断睡眠(interruptible Sleep),可以叫醒  这种进程因为无事可做而慢慢睡眠的进程。
                                                不可中断睡眠(uninterruptible sleep) 别人叫不醒,只能自己起来:
                                                这个进程本身正在完成一些其他操作,比如I/O,必须等待将其加载完成

                         D:表示不可中断的睡眠
                         R:Running 或者 Ready 正在运行或者等待运行
                         S : 可中断的睡眠
                         T :  停止态
                         Z:Zombie。僵尸态:一个进程执行结束了,应该将内存释放出来,但是这种态,没有释放!     发生有两种可能性
                                              1.将一个进程向操作系统发出结束进程的时候,他会自我清理。在发出结束消息之后已经没进程号了,但他还在内部结束着自己。
                                                 每一个进程在死亡的时候并实现自我清理的时候,由其父进程帮其回收资源。
                                              2.当一个进程正在准备清理的时候,父进程死了。则这个进程就会进入僵尸态
                                                但是linux不允许孤儿进程出现,则会在父进程死之前,会给他找一个新的父进程,而一般都是init,相当于社会福利院。
                                                一个好的程序员要随时关心它的父进程,而要在父进程死之前将进程找给Init。

                            对于BSD风格:


                            < : 表示这是一个高优先级进程
                            N:表示这是一个低优先级进程
                            + :表示跟某一个前台进程相关,属于某一个前台进程组的进程。(皇帝G了一般都会带有陪葬品)
                            s : 某一个进程组的 Leader进程,领导进程。
                            l : 则表示这是一个多线程进程

                TIME : 获得CPU时间的累计时间

                COMMAND: 由哪个命令发起的这个进程。对于init来讲,它是 init [数字]:表示init的级别,有0-6 7个级别   加了中括号的,表示是内核线程,

                %CPU: 占用CPU的比率

                %MEM : 占用内存比率

                VSZ : 虚拟内存级 大小是KB 虚拟地址空间的大小

                RSS : 物理内存级,真正占用物理内存空间多大。

                START:启动时间

       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值