linux基础命令2
linux基础(2)
Linux 系统管理命令 - 后续信息安全渗透与防御的重要基础
top 命令
top
可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过 top 命令所提供的互动式界面,用热键可以管理。
第一行
- top -
时间
up系统运行时间
,当前登录的用户数
,系统载荷
- 系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。
第二行、第三行
- 第 2 行:Tasks: 109 total, 1 running, 108 sleeping, 0 stopped, 0 zombie
- 第 3 行:%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
- 第 2、3 行为进程和 CPU 的信息 当有多个 CPU 时,这些内容可能会超过两行,其参数如下:
第四行、第五行
- 第 4 行:MiB Mem : 1775.3 total, 1369.3 free, 162.4 used, 243.6 buff/cache
- 第 5 行:MiB Swap: 1640.0 total, 1640.0 free, 0.0 used. 1466.1 avail Mem
第六行
- 第 6 行: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME + COMMAND
w
- w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。 执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行 w 命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。 案例:
last
- last 命令用于显示用户最近登录信息。单独执行 last 命令,它会读取/var/log/wtmp 的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
- 用法:last [选项] - 数字 显示多少行
wtmp
文件是二进制文件,该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last 命令就通过访问这个文件获得这些信息,并以反序从后向前。
ps
ps
命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束。- 用法:ps [选项]
参数:
- -A 显示所有进程(同-e)
- -a 显示当前终端的所有进程
- -u 显示进程的用户信息
- -o 以用户自定义形式显示进程信息
- -f 显示程序间的关系
- -x 显示所有程序,不以终端机来区分
- -aux 显示所有包含其他使用者的行程
User | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
行程拥有者 | 进程 ID | CPU 使用率 | 内存使用率 | 进程的虚拟内存 | 驻留空间的大小。 | 终端的号码 | 进程状态 | 进程开始时间 | 执行的时间 | 所执行的指令 |
- 进程使用的虚拟内存大小,以 K 为单位
- 驻留空间的STAT 进程状态包括下面的状态:
STAT包含以下状态 : - D 不可中断 Uninterruptible sleep (usually IO)
- R 正在运行,或在队列中的进程
- S 处于休眠状态 T 停止或被追踪
- Z 僵尸进程
- W 进入内存交换(从内核 2.6 开始无效)
- X 死掉的进程
- < 高优先级
- N 低优先级 L 有些页被锁进内存
- s 包含子进程
- o 位于后台的进程组
- l 多线程,克隆线程大小。显示当前常驻内存的程序的 K 字节数。
netstat
netstat
命令用来打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。
用法:netstat [选项]
Proto | Recv-Q | Send-Q | Local Address | Foreign Address | State | PID/Program name |
---|---|---|---|---|---|---|
协议 | 网络接收队列 | 网路发送队列 | 本地地址 | 外部地址 | 端口状态 | 进程ID/程序名 |
-
协议:主要有 tcp 协议与 udp 协议, 网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。具体的内容,我们将会在之后的章节中介绍。
-
recv-Q 表示网络接收队列 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走。 如果接收队列 Recv-Q 一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
-
send-Q 表示网路发送队列
-
对方没有收到的数据或者说没有 Ack 的,还是本地缓冲区。 如果发送队列 Send-Q 不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
-
本地地址与外部地址,分别以本地 IP+ 端口,外部 IP+ 端口的形式表达。
-
IP 地址是 IP 协议提供的一种统一的地址格式,目前,你只需知道它是由 4 组从 0 到 255 的数字组成,以 0.0.0.0 至 255.255.255.255 的形式表达的,可以表示计算机的网络位置(地址)的地址格式。更详细的内容我们将会在后续章节中介绍。
-
端口(port),可以认为是设备与外界通讯交流的出口。目前您只需理解,如果把 IP 地址比作一间房子,端口就是出入这间房子的门,计算机上的各类服务借由此“门”与外界通信。一个 IP 可以有 65535(2^16^)个端口。在一个计算机上,每个服务都会启用一个端口。
-
state(当前端口状态)有以下几种状态:
lsof
如果输入 lsof 命令提示:未找到命令。那么我们需要进行安装。安装命令为 yum -y install lsof
-
lsof 命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为 lsof 命令需要访问核心内存和各种文件,所以需要 root 用户执行。
-
在 linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过 lsof 工具能够查看这个列表对系统监测以及排错将是很有帮助的。
COMMAND | PID TID TASKCMD | USER | FD | TYPE | DEVICE | SIZE/OFF | NODE | NAME |
---|---|---|---|---|---|---|---|---|
进程的名称 | 进程 ID | 进程所有用户 | 文件描述符 | 文件类型 | 指定磁盘的名称 | 文件的大小 | 索引节点 | 打开文件的确切名称 |
- 文件描述符,应用程序通过文件描述符识别该文件
- 索引节点(文件在磁盘上的标识)
lsof 1.txt #查看哪些进程打开了1.txt文件
lsof -c sshd #查看sshd服务所打开的文件
lsof -i :22 #查看22端口有哪些进程在访问
lsof -p 1168 #查看1168进程号所打开的文件
lsof -u 0 #查看uid为0的用户打开的文件
lsof|grep /var/log/ #查看/var/log/下的文件被哪些进程打开
利用 lsof 命令恢复已删除的文件
- 需要恢复已删除的文件前提条件是还有进程打开这个文件,比如遭到黑客入侵往往总是会删除一些日志、木马文件等,假设我们 ssh 的登录日志被删除了,我们使用 lsof 查看,可以看到最后面有(deleted)这个状态。
lsof |grep /var/log/messages
这里 pid 对应的是 699,所以我们需要查看 699 进程打开的文件描述。
cd /proc/699/fd
再使用 ll 查看就可以看到被删除对应的文件了,文件 7 对应的就是被删除的文件,将 7 里面的内容输入到被删除的目录文件就恢复了
cp 7 /var/log
拷贝这个文件。
更改文件名。
kill
- kill 命令用于结束进程。
- 用法:kill [选项] pid 案例:
kill -9 123456
#彻底杀死进程号为123456的进程
which
- which 用于查找并显示给定命令的绝对路径,可以看到某个系统命令是否存在
- 用法:which [命令]
which cd
rpm -Va 检查文件完整性
rpm -V 的输出格式如下:
xargs
- xargs 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。