Linux 管理命令(二)

本贴最后更新于 2033 天前,其中的信息可能已经时异事殊

一、netstat

netstat -antp 所有的
netstat -lntp 正在监听的

二、lsof

lsof -u root 查看某个用户打开的文件
lsof -i:80 显示所有打开80端口的进程
lsof -p 30297 //显示哪些文件被pid为30297的进程打开
lsof -umysql //查看用户mysql的进程的文件使用情况

kill -9 `lsof -t -u ebon` 杀死某用户所有的运行程序

恢复删除的文件
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时,提供给它的文件描述符,进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与 lsof 相关的信息,都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 为 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序,简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息,来产生其输出。所以,lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符,可以找到该文件的相关信息。
当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
# lsof | grep /var/log/messages
syslogd 1283 root 2w 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)
从上面的信息可以看出,查看 /proc/1283/fd/2 就可以得到所要恢复的数据。如果可以通过文件描述符,查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
# cat /proc/1283/fd/2 > /var/log/messages

三、ps

ps -f -u nova,neutron 显示某个用户的进程
ps -aux
ps -ef
ps -f -p 3150 通过pid找出进程命
ps aux --sort=-pcpu,+pmem
# 首先以 cpu 使用量排序呢, 如果 cpu 使用量相同,则以内存使用量排序。
ps aux --sort=-pcpu,+pmem | head 5
ps -ef | grep rock-mon 显示进程的线程
ps -e -o pid,comm,etime 显示进程已运行的时间

四、watch

watch -d -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15' 用ps命令实时显示进程信息

watch命令以周期性的方式执行给定的指令
  -n:指定指令执行的间隔时间(秒);
  -d:高亮显示指令输出信息不同之处;

五、systemctl

systemctl list-units --type=service

六、df

df -hT 查看磁盘情况和文件系统
du -sh / 查看目录文件用量

七、常用命令:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' # 找出IP地址
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖 • 1 关注
  • 命令
    19 引用 • 17 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...