Linux ps 命令

2018-02-15|Categories: External cmd, Linux|

三种选项风格

ps命令的选项有三种风格:

  • BSD风格:选项前面没有中横线-
  • UNIX风格:选项前面有一个中横线;
  • GNU风格:选项前面有两个中横线;

UNIX风格和BSD风格的选项都可以组合使用,也可以混合,但混合可能产生冲突(man ps: Options of different types may be freely mixed, but conflicts can appear),GNU风格的选项则不可以组合,必须用空格隔开。

注意,ps -auxps aux是不一样的:

  • ps -aux等同于ps -a -u x,意为打印用户x的所有进程。如果用户x不存在,ps命令将把命令重新解释为ps aux,而不是打印警告信息,这样做是为了兼容旧的脚本和使用习惯,但不推荐这样的用法
  • ps aux等同于ps a u x,意为打印系统的所有进程,a表示当前tty相关的进程,x表示和当前tty无关的其它所有进程,u表示输出更多的列。

查看特定PID的信息

$ ps up `lsof -ti :3306`
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql      1724  0.0  1.2 961916 12872 ?        Sl   14:37   0:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ...

命令解释:

  • lsof -ti :3306:仅输出监听3306端口的进程的PID
  • p <pid>:只查找指定PID的进程信息
    • 可以省略p,直接输入PID即可
    • 不能和ax选项同时使用
  • u:显示更丰富、更有用的进程信息,为了便于记忆,我把它当作Useful来理解

不使用u选项时,输出的列明显减少:

$ ps `lsof -ti :3306`
   PID TTY      STAT   TIME COMMAND
  1724 ?        Sl     0:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ...

Leave A Comment