目录
一:监视系统进程
程序:保存在硬盘、光盘等介质中的可执行代码和数据,静态保存的代码
进程:在cpu及内存中运行的程序代码,动态执行的代码,每个进程可以有多个子进程(线程)
PID : 标识进程的唯一标识
ps:静态查看系统进程
top:动态查看系统进程
pgrep:查看指定服务的PID
pstree:以树状结构显示进程的关联信息
Ctrl+z 前台进程调入后台
Ctrl+c 结束进程
jobs 查看后台进程
fg # 将后台第#个进程在前台运行(不加数字时,jobs程序上为‘+’的程序优先被调回)
bg # 将后台第#个进程在后台运行(不加数字时,jobs程序上为‘+’的程序优先被调回)
& 直接将进程放在后台运行
kill、killall 结束进程
kill后面直接写数字时,表示是ps过滤出来的进程信息
kill后面加%加数字时,表示结束jobs后台进程中的对应进程
如果默认进程结束不掉,可以使用kill -9 PID强制结束进程
killall表示同时结束多个相同程序发起的进程
killall -9 xeyes
top: 反应系统进程动态信息,默认每10秒更新一次,顶部始终显示系统当前最活跃的进程,此时还可以接受用户的键盘输入向进程发送信号等待
、
此时输入 u 键,然后输入 root 并按回车键,则此时输出信息显示root所占资源信息
如果输入的是 k,然后输入你要杀死的进程ID,回车,那个进程就被杀掉了,这里杀死进程还可以直接用 kill这个命令
kill -s 9 1207 这里是 -s 9 参数的作用的传递给进程的信号是9,即强制终止,结束进程。
ps : ps是Process Status的缩写,用来列出系统中当前运行的那些进程。ps命令列出的是当前进程的快照,就是执行ps命令这个时刻的进程,与top不同的是,ps是静态查看进程
- PID:运行着的进程的ID;
- TTY:命令所运行的位置
- TIME:运行着的该命令所占用的CPU处理时间
- CMD:该进程所运行的命令
ps -aux : 通过cpu和内存来来筛选
STAT:
S:当前状态为睡眠状态
s:当前进程有多个子进程
l:当前进程可能会开启多个子进程
R:当前进程正在运行中
+:表示这个进程在前台运行
Z:表示僵尸进程
<:表示当前进程优先级高
结果默认是未排好序的,如果想通过cpu使用情况来排序,可以加参数 --sort -pcpu
如果想通过内存来排序,可以加参数 --sort -pmem
根据用户来筛选进程 ps -u root
根据进程名筛选 ps -C gnome-shell
根据线程筛选 ps -L 613
显示安全信息,如果想要查看有谁登陆了你的服务器,可以使用 ps -eo pid,user,args 。 -e显示所有进程信息,-o参数控制输出, pid,user,args显示应用的PID,运行应用的用户和该应用
实时监控进程状态 watch -n 5 ' ps -aux --sort -pmem, -pcpu ' 。意思是每隔5秒按照内存和cpu排序查看进程信息
三:查看网络连接信息,端口状态
netstat : 该命令用于显示各种网络相关信息,如网络连接,路有白边,接口状态,masquerade连接,多播成员等
命令的输出有两部分,第一部分是Active Internet connections,称为有源TCP连接,
其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列,这些数字一般都应该是0,如果不是则表示软件包正在队列中堆积。
第二部分是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能比网络套接字高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
注:netstat命令默认是不显示LISTEN状态的网络连接和LISTEING状态的UNIX域连接,只有使用带-a或者-l参数的命令才能显示
命令参数
- -a (all)显示所有状态的连接
- -l 列出有在监听状态的连接
- -t (tcp) 显示tcp相关连接
- -u (udp) 显示udp相关连接
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -p 显示建立相关链接的程序名
- -r 显示路由信息,路由表
- -e 显示扩展信息,例如uid等
- -s 按各个协议进行统计
- -c 每隔一个固定时间,执行该netstat命令
常用命令
netstat -pantu : 查看计算机和网络中的哪些计算机产生了连接
netstat -pantu | grep 80 : 查看http服务(80端口)是否开启
四:文件进程、端口关联
lsof : (list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文
符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统检测以及排错将是很有帮助的
- COMMAND:进程的名称
- PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
- TYPE:文件类型,如DIR、REG等
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
常用参数
lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
相关文件:Linux下磁盘分区、卸载和磁盘配额