linux-ps top

368 阅读3分钟

ps命令

查看进程状态

1.默认查看带命令行的进程 例子1 ps //只显示命令行进程

例子2 ps -a //还是只显示命令行,只不过是所有命令行。不过-A是显示所有进程,包括用户进程。

bogon:~ gongzhihao$ ps -a
  PID TTY TIME CMD
 1114 ttys000 0:00.02 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp gongzhihao
 1115 ttys000 0:00.03 login -fp gongzhihao
 1117 ttys000 0:00.01 -bash
 1120 ttys000 3:03.54 top
 1127 ttys001 0:00.03 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp gongzhihao
 1128 ttys001 0:00.02 login -fp gongzhihao
 1129 ttys001 0:00.02 -bash
 1279 ttys001 0:00.00 ps -a
 1254 ttys002 0:00.03 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp gongzhihao
 1255 ttys002 0:00.02 login -fp gongzhihao
 1256 ttys002 0:00.01 -bash
 1259 ttys002 0:00.01 man ps
 1260 ttys002 0:00.00 sh -c (cd '/usr/share/man' && (echo ".ll 21.4i"; echo ".nr LL 21.4i"; /bin/cat '/usr/share/man/man1/ps.1') | /usr/bin/tbl | /usr/bin/groff -Wall -mtty-char -Tascii -mandoc -c | (/usr/bin/less -is || true))
 1261 ttys002 0:00.00 sh -c (cd '/usr/share/man' && (echo ".ll 21.4i"; echo ".nr LL 21.4i"; /bin/cat '/usr/share/man/man1/ps.1') | /usr/bin/tbl | /usr/bin/groff -Wall -mtty-char -Tascii -mandoc -c | (/usr/bin/less -is || true))
 1266 ttys002 0:00.00 sh -c (cd '/usr/share/man' && (echo ".ll 21.4i"; echo ".nr LL 21.4i"; /bin/cat '/usr/share/man/man1/ps.1') | /usr/bin/tbl | /usr/bin/groff -Wall -mtty-char -Tascii -mandoc -c | (/usr/bin/less -is || true))
 1267 ttys002 0:00.02 /usr/bin/less -is
bogon:~ gongzhihao$
实例1:显示所有进程信息

命令:

ps -A

输出:

[root@localhost test6]# ps -A

  PID TTY          TIME CMD

    1 ?        00:00:00 init

    2 ?        00:00:01 migration/0

    3 ?        00:00:00 ksoftirqd/0

    4 ?        00:00:01 migration/1

    5 ?        00:00:00 ksoftirqd/1

    6 ?        00:29:57 events/0

    7 ?        00:00:00 events/1

    8 ?        00:00:00 khelper

   49 ?        00:00:00 kthread

   54 ?        00:00:00 kblockd/0

   55 ?        00:00:00 kblockd/1

   56 ?        00:00:00 kacpid

  217 ?        00:00:00 cqueue/0

  ……省略部分结果



2.查看所有进程,即包括用户进程 ps aux //x选项,是显示所有进程(包括用户进程)

主要字段包括: 1.进程id 2.cpu使用百分比 //就是该进程占总资源的百分比 3.内存使用百分比

bogon:~ gongzhihao$ ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1120 5.8 0.0 4353664 7700 s000 S+ 7:17下午 2:36.94 top
gongzhihao 1111 5.6 1.2 5059540 197864 ?? S 7:17下午 1:12.57 /Applications/iT
_windowserver 165 5.3 1.4 7396504 242472 ?? Ss 8:40上午 14:33.51 /System/Library/
gongzhihao 469 1.9 1.1 123334864 191384 ?? Ss 8:40上午 2:49.78 /System/Library/
gongzhihao 600 0.7 0.4 4721488 70524 ?? S 8:41上午 3:14.00 /Applications/Cl
gongzhihao 508 0.7 1.2 4871900 204720 ?? S 8:40上午 2:09.59 /Library/Input M
gongzhihao 347 0.7 2.4 5480164 407576 ?? S 8:40上午 3:37.76 /Applications/Wi
gongzhihao 582 0.6 0.4 4598568 60268 ?? S 8:41上午 2:52.92 /Library/Applica
_mysql 90 0.2 2.2 4956036 376500 ?? Ss 8:39上午 1:35.51 /usr/local/mysql
root 58 0.1 0.2 4483200 32940 ?? Ss 8:39上午 0:07.94 /usr/libexec/log
gongzhihao 1249 0.1 0.8 5104484 131312 ?? S 8:22下午 0:01.77 /Applications/Go

查找进程

ps -ef | grep nginx //1.grep命令,本身是查找的作用 2.|是管道的作用,就是把前面一个命令的输出作为后面一个命令的输入 ps | grep nginx //必须要加选项ef,否则查找不出来 //为什么一定要加选项ef?e是和-A作用一样,就是显示所有进程;f是显示更多字段,包括进程id等,如果不加f也会查找到,但是不会显示进程id,因为基于名字搜索进程的目的就是为了得到进程id,然后很可能接下来就是要kill -9 进程id——经过测试,发现-A本身就显示进程id,所以只需要一个选项-A即可,不需要选项f也可以

bogon:~ gongzhihao$ ps -ef | grep mysql
   74 90 1 0 8:39上午 ?? 1:40.84 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so
  501 1298 1256 0 8:41下午 ttys002 0:00.00 grep mysql
bogon:~ gongzhihao$ ps | grep mysql
 1300 ttys002 0:00.00 grep mysql
bogon:~ gongzhihao$
bogon:~ gongzhihao$ ps -A | grep mysql //其实,这个才是最简单的命令,因为一般情况下只需要得到进程id
   90 ?? 1:42.65 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so
 1342 ttys002 0:00.00 grep mysql

bogon:~ gongzhihao$ ps -e | grep mysql
   90 ?? 1:43.93 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so
 1347 ttys002 0:00.00 grep mysql
bogon:~ gongzhihao$

参考 www.cnblogs.com/peida/archi…

grep命令

根据名字搜索进程id


Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

www.cnblogs.com/peida/archi…

top命令

动态监控计算机的系统资源,主要包括 1.cpu使用百分比 //cpu永远都是显示使用百分比 2.内存使用多少和使用百分比


与ps的区别?
一个是静态显示,就是快照;一个是动态显示,值不断改变。

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。


几个cop? 1.一个cpu

硬件概览:



  型号名称:	MacBook Pro

  型号标识符:	MacBookPro15,1

  处理器名称:	Intel Core i7

  处理器速度:	2.6 GHz

  处理器数目:	1 //一个cpu

  核总数:	6 //6个核

  L2 缓存(每个核):	256 KB

  L3 缓存:	9 MB

  内存:	16 GB

  Boot ROM 版本:	15.16.6613.0.0,0

  序列号(系统):	C02X333QJG5J

  硬件 UUID:	0815DE75-39CE-561C-8285-A12C65A737ED



2.多个cpu


默认按进程id排序,如果需要按其他字段排序,比如 1.cpu使用百分比 2.内存使用百分比

linux和mac不一样。 1.linux shift + P(表示cpu)/M(表示内存) 2.mac 以前只是在 linux 机器上使用 top 命令。常用的快键键是:

p 键 - 按 cpu 使用率排序 m 键 - 按内存使用量排序 这 2 个快捷键在 mac 上都不一样。对应的是,先输入 o,然后输入 cpu 则按 cpu 使用量排序,输入 rsize 则按内存使用量排序。

如果记不清了,可以在 top 的界面上按 ?,在弹出的帮助界面中即可看到。

blog.devtang.com/2011/12/27/…

按?查看帮助

按cpu

按内存


参考 www.jellythink.com/archives/42…