ps 命令用法简介

    ps命令是Linux下用来查看当前进程的命令,今天简单用了几个,就在这里简单记录一下!

    -A 和 -e,这两个命令的效果是一样的!都是输出本机上所有的进程!

    aux,man文档中写的是打印出所有由用户x所有的进程。我用的时候,一般直接au,不加x,这样就能输出所有用户运行的进程,这里需要注意的是,这里打印出的程序都是在tty(包括GNOME上的pts)上运行的。相比-e参数而言,那些tty是?的进程并不会输出。

   -o format,感觉这个是个比较有意思的参数,就像date命令能够控制输出的日期的格式一样,这里这个-o选项的目的也是为了控制输出的格式。下面是一些格式对应参数:

%C:cpu的使用率

%G:当前进程所属的组

%P:PPID

%U:进程所属的用户

%a:args,命令的参数

%c:运行的命令

%g:运行这个进程的组

%p:进程id,pid

%u:运行这个进程的用户

%x:进程运行的时间

%y:tty,进程是在哪个tty上运行的,或者是在桌面的那个pts上运行的。

    当然,这个参数还有很多,由于我水平有限,目前只能列出这么多来了!

    这里有两个东西我感觉挺好玩的,想讲一下。

    第一就是那个tty,这是个在/dev目录下的字符特殊文件(character special),代表的是一个输入终端。当按下ctrl+alt+FN(N代表1-6的数字)的时候,就可以在不同的tty上面切换了,我用的是centos6.5,我的机器上面只有6个tty,而且第一个tty是被桌面给占用了的。那么那个pts又是什么呢,就是如果我运行了桌面系统(比如我的GNOME2.28.2),那么在桌面下打开的terminal,则用pts来代表。这里举个例子,比如我现在在桌面上打开了两个terminal,如下图:

michael用户的那个用pts/0来表示,root用户那个用pts/1来表示,那么如果我现在在michael上面输入一句命令:

    echo "Hello,root" > /det/pts/1,则会出现如下的效果:

当然,tty也可以这么做,但是由于tty不好截图,所以我就不举例了!

    第二个想说的就是那个所属用户,所属组和运行用户,运行组。一般情况下,谁运行的进程,这个进程就是属于这个用户的,但是有时候有特殊情况,比如SUID和SGID,如果一个可执行文件具有SUID权限,那么它运行了之后它创建的进程所属的用户就是这个文件本来属于的那个用户,这里就拿大名鼎鼎的passwd来举例子吧!如下图所示:

首先看那个passwd这个可执行文件的属性,它是属于root的,但是具有SUID的权限,然后我用michael这个普通用户来运行passwd这个命令。这时候注意看我在另一个terminal中用ps命令查看的属性,这个进程属于root用户,但是它的运行用户却是michael。同时注意所属组,这个进程的所属组和运行组都是michael。这里就说明的SUID的特性,只让进程所属用户变成这个可执行文件本身所属的那个用户,而所属组确不变!


    这样讲大家是不是对这个运行和所属的概念清楚一点了,简单地说,就是谁运行的,那么RUSER和RGROUP就是谁的,而USER和GROUP则看有没有SUID和SGID的权限了!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值