linux常用命令--ps、netstat、find
一、ps
1.1ps命令简介
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。
kill 命令用于杀死进程。
1.2linux上进程有5种状态
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
1.3ps工具标识进程的5种状态码
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.4ps -ef
显示所有进程信息,连同命令行
(my_python_env)[root@hadoop26 ~]# ps -ef | head -5 UID PID PPID C STIME TTY TIME CMD root 1 0 1 19:19 ? 00:00:03 /sbin/init root 2 0 0 19:19 ? 00:00:00 [kthreadd] root 3 2 0 19:19 ? 00:00:00 [migration/0] root 4 2 0 19:19 ? 00:00:00 [ksoftirqd/0]
1.5ps -aux
列出目前所有的正在内存当中的程序
(my_python_env)[root@hadoop26 ~]# ps -aux | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 1.0 0.0 19340 1448 ? Ss 19:19 0:03 /sbin/init root 2 0.0 0.0 0 0 ? S 19:19 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 19:19 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 19:19 0:00 [ksoftirqd/0]
1.6对字段的解释
USER:该 process 属于那个使用者账号的 PID :该 process 的号码 %CPU:该 process 使用掉的 CPU 资源百分比 %MEM:该 process 所占用的物理内存百分比 VSZ :该 process 使用掉的虚拟内存量 (Kbytes) RSS :该 process 占用的固定的内存量 (Kbytes) TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 STAT:该程序目前的状态,主要的状态有 R :该程序目前正在运作,或者是可被运作 S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。 T :该程序目前正在侦测或者是停止了 Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 START:该 process 被触发启动的时间 TIME :该 process 实际使用 CPU 运作的时间 COMMAND:该程序的实际指令
二、netstat
2.1netstat功能介绍
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。
2.2使用netstat找出程序运行的端口
(my_python_env)[root@hadoop26 ~]# netstat -anp | grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1893/sshd tcp 0 0 :::22 :::* LISTEN 1893/sshd
参数介绍
a:显示所有连线中的socket
n:直接使用ip地址,而不通过域名服务器
p:显示正在使用socket的程序识别码和程序名称
三、find
3.1命令介绍
find命令用于在文件树中查找文件,并作出相应处理
3.2语法格式
find PATHNAME –OPTION [-print –exec -ok] 参数解释: PATHNAME:就是find命令作用的目录 -print:把查询的结果打印到标准输出 -exec:把查询的结果执行相应的命令 -ok:也是把查询到的结果执行相应的命令,但是在执行命令之前会询问是否执行
3.3-name选项
-name是根据文件名来做查找
(my_python_env)[root@hadoop26 ~]# find ~ -name test /root/miniconda2/lib/python2.7/site-packages/wheel/test /root/miniconda2/envs/my_python_env/lib/python2.7/site-packages/tornado/test /root/miniconda2/envs/my_python_env/lib/python2.7/site-packages/wheel/test /root/miniconda2/envs/my_python_env/lib/python2.7/site-packages/luigi/static/visualiser/js/test /root/miniconda2/pkgs/wheel-0.29.0-py27_0/lib/python2.7/site-packages/wheel/test /root/test
-name选项支持正则
查找大写字母开头的文件
(my_python_env)[root@hadoop26 ~]# find ~ -name '[A-Z]*' | head -5 /root/fcitx-3.4.2-bin/README /root/metastore_db/README_DO_NOT_TOUCH_FILES.txt /root/metastore_db/log/README_DO_NOT_TOUCH_FILES.txt /root/metastore_db/seg0/README_DO_NOT_TOUCH_FILES.txt /root/doc/org/wltea/analyzer/cfg/DefaultConfig.html
3.4-o选项
连接多个查询条件,或者的意思
(my_python_env)[root@hadoop26 ~]# find ~ -name 'a*' -o -name 'b*' | head -5 /root/fcitx-3.4.2-bin/usr/bin /root/testshell/a.sh /root/doc/org/wltea/analyzer /root/doc/allclasses-noframe.html /root/doc/allclasses-frame.html