PS
这个命令用于查询当前运行进程的信息,如果是非root用户最好加上sudo来执行~
查询所有正在运行的进程
ps -ef
或者精确一点,查询运行着nginx的进程
ps -ef | grep nginx
以完整的格式显示进程
ps -ajx
top
top命令显示各进程的信息,包括占内存和占CPU的情况
这个命令直接执行就行了
top
lsof
lsof(list open files)是一个列出当前系统打开文件的工具
在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口
因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的
lsof命令使用介绍:
命令格式:lsof [options] filename
命令功能:列出当前系统打开文件的工具
命令的常用参数选项说明
<filename> 显示开启文件<filename>的进程
-c <name> 显示<name>进程现在打开的文件
-c -p PID 列出进程号为PID的进程所打开的文件
lsof -g GID 显示归属GID的进程情况
+d PATH 显示目录下被进程开启的文件
+D PATH 同上,但是会搜索目录下的目录,时间较长
-d NUM 显示使用fd为NUM的进程
-i 用以显示符合条件的进程情况
-i [4/6] [protocol][@hostname|hostaddr][:service|port]
4/6 IPv4 or IPv6
protocol TCP or UDP
hostname Internet host name
hostaddr IP地址
service /etc/service中的service name (可以不止一个)
port 端口号 (可以不止一个)
常用的情景如下
1、恢复删除的文件,当你的计算机被黑客攻击之后,黑客离开之前清除了所有的日志,怎么办
例如文件/var/log/messages
我们可以这样做
首先使用lsof来查看当前是否有进程打开/var/logmessages文件
# lsof | grep /var/log/messages
syslogd 1283 root 2 REG 3,3 5381017 1773647 /var/log/messages (deleted)
从上面的信息可以看到PID 1283(syslogd)打开了文件,而且文件描述符为2
同时还可以看到/var/log/messages已经标记被删除了
因此我们可以在/proc/1283/fd/2(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下
# head -n 10 /proc/1283/fd/2
Aug 4 13:50:15 holmes86 syslogd 1.4.1: restart.
Aug 4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started.
Aug 4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 (root@everestbuilder.linux-ren.org) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007 Aug 4 13:50:15 holmes86 kernel: BIOS-provided physical RAM map: Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000000000 - 000000000009f000 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)
可以看出文件还在
然后我们可以这样恢复
cat /proc/1283/fd/2 > /var/log/messages
2、显示当前进程打开了哪些文件,比如我们服务器被黑客植入了一个挖矿的木马,假设这个木马的进程号是30297我们怎么去找到这个木马的源文件在哪里,可以这样
lsof -p 30297
3、之后,我们分析这个文件发现了一个恶意域名,为了确定系统中是否还有隐藏木马,我们可以这样查看有哪些进程链接到了这个域名
lsof -i UDP@213162837.yyt.com:1230
或者是TCP
lsof -i TCP@213162837.yyt.com:1230 -r
-r
表示不断的查看