day5
文章目录
top 命令 动态显示进程信息
free -m free -h 查看内存情况
echo 3 > /proc/sys/vm/drop_caches 释放缓存
- >往下翻页
- < 往上翻页
- M 按内存排序
- P 按cpu排序
- q 退出
第1行:系统信息- 系统时间
- 系统运行时间:系统启动到现在的运行时间
- 负载平均值:系统1分钟、5分钟和15分钟的负载平均值,用于判断系统CPU利用率和性能。
第2行:进程信息
- 总进程数:当前系统中的所有进程数量之和
- 正在运行进程数:当前分配了CPU时间并正在运行的进程数
- 睡眠进程数:等待某事件发生而暂停运行的进程数
- 停止进程数:已停止运行并准备退出的进程数
- 僵死进程数:已终止但父进程还未回收的进程数
第三行:显示不同模式下所占cpu时间百分比,top后按数字1这一行转换为按照内核显示,几核就显示几行,从0开始
us, user: 运行(未调整优先级的) 用户进程的CPU时间,用户态
sy,system: 运行内核进程的CPU时间,内核态
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
id,cpu空闲的百分比
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
可以使用’t’命令切换显示。
第4行:内存使用信息
- 内存总量:系统内存总大小
- 空闲内存:当前空闲且未使用的内存大小
- 使用内存:已被进程使用的内存大小
- 缓存内存:用于文件系统缓存的内存大小
- 交换空间:可用的交换分区空间大小
操作系统需要的两种cpu的状:
- 用户态(user mode) 运行用户程序
- 内核态 (kernel mode) 运行操作系统程序,操作硬件
查看端口的2个命令:
- yum -y install net-tools
- netstat -tnlp 查看本机监听tcp连接的端口
- t:显示TCP连接
- u:显示UDP连接
- n:显示网络地址而不是主机名
- l:显示监听连接
- p:显示连接对应的程序名
- ss -tnlp 查看本机tcp或者udp或者开放端口
- t:显示TCP连接
- u:显示UDP连接
- n:显示网络地址而不是主机名
- l:显示监听连接
- p:显示连接对应的进程(进程名或进程ID)
- lsof -i:22 这条命令的意思是:列出当前系统中打开着端口 22 的进程信息。
- 查看端口的命令ss 和netstat -tnlp有什么区别? 谁快原理对比,ss快。因为 netstat遍历/proc下面每个pid的目录ss直接读取/proc/net统计信息,ss 直接读取/proc/net统计信息,所以ss执行消耗资源时间比netstat少很多
进程信息
平均负载
平均负载是指单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。
简单来说, 平均负载即单位时间的活跃进程数
平均负载和CPU使用率区分:
平均负载是指单位时间内,系统中处于可运行状态和不可中断状态的平均进程数,它不仅包
含正在使用cpu的进程,还包含等待cpu的进程及等待io的进程; 而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计
僵尸进程
僵尸进程的危害?
将导致系统没有可用的进程号而导致系统不能创建进程。所以我们应该避免僵尸进程。
僵尸进程产生的根本原因?
即子进程结束后,父进程还在继续运行,子进程就会成为僵尸进程。
僵尸进程通过ps命令显示为状态码Z(zombie)。我们可以使用ps aux | grep zombie查看系统中的僵尸进程。
孤儿进程
孤儿进程(orphan process)是指其父进程结束,但它自身还在运行的进程。
在Linux中,当一个进程启动后,其父进程的PID会被记录在其数据结构中。如果父进程结束,其子进程将成为孤儿进
程。孤儿进程会被init进程(PID为1)回收,成为init进程的子进程,不会占用机器资源。
查看本机某个端口有没有开启,例如端口是22
netstat -tunlp | grep 22
这个命令会检查本机所有的TCP和UDP端口,并过滤出22端口的连接
ss -tunlp | grep 22
这个命令的作用类似于netstat,也是查看网络连接和过滤22端口,可以用来判断22端口是否开启。
lsof -i:22
这个命令会直接列出打开22端口的相关进程,如果有输出则表示22端口开启,没有输出则表示22端口没有被打开。
需要安装的命令lsof,net-tools
lsof命令
yum -y install lsof
lsof -i:xx
lsof命令可以列出系统中打开的文件、目录、网络连接等信息,输出详细的文件相关信息,如文件描述符、进程ID、用户ID、打开的文件路径等。
lsof 的常用参数有
-i <条件>:列出符合条件的进程打开的文件,比如lsof -i:22列出打开端口22的进程
-p <进程号>:列出指定进程号进程打开的文件
net-tools命令
yum -y install net-tools
net-tools 是一组基本的网络管理工具软件包,包含常用的网络管理命令。
执行这个命令后,系统会自动安装 net-tools 软件包,这会带来:
- /sbin/ifconfig 命令:查看和配置网络接口
- /sbin/route 命令:查看和修改路由表
- /sbin/netstat 命令:打印网络连接,路由表,接口统计等网络信息
- /usr/bin/nameif 命令:为网络接口命名
补充内容
sort -t":" -k3 -n /etc/passwd -r 这个命令的功能是:
对 /etc/passwd 文件中的记录进行排序,根据第 3 个字段(用户 ID)进行数字排序,并以相反顺序排序。
-t":" 参数指定分隔符为冒号 : 。因为 /etc/passwd 文件中使用冒号分隔不同字段。
-k3 参数表示根据第 3 个字段进行排序。
-n 参数表示以数字排序。
/etc/passwd 表示要排序的文件路径。
-r 参数表示以相反顺序排序,也就是从大到小排序。
sort -t":" -k3 -n /etc/passwd -r 的功能是:
可以将系统用户按照用户 ID 的大小进行排序,输出结果将是用户 ID 最大的用户排在最前面。
ps -ef 命令多一个ppid
PID和PPID之间代表着进程间的父子关系。
当一个进程产生子进程时:
- 子进程会继承父进程的PPID,作为其自己的PPID。
- 子进程会获得一个新的PID,用于唯一标识该子进程。
- 父进程的PID保持不变。
last命令
用于显示用户登录历史记录。它可以显示所有的用户登录信息,包括登录用户名、终端名称、登录时间、上次登录时间、登录ip地址等信息。
window向Linux传文件方式
yum -y install lrzsz-0.12.20-36.el7.x86_64
rz
killall 和pkill功能是一样的
课堂练习
服务器被攻击会产生什么现象?
- cpu和内存的使用率特别的高。 100%
- 服务器登录卡顿,执行命令有延迟
- 服务器带宽会出现被占满的情况
- 如果是跑着应用服务,用户使用起来会感觉非常卡顿。
- 并且容易出现页面访问不到的问题。
- 如果服务器有大量不同ip地址登录,莫名的账号添加,可疑的进程出现
被黑客登陆到机器了,你怎么做?
last 查看谁曾经登陆过服务器
回顾下历史命令,看看坏蛋执行了什么?(history)
vim ~/.bash_history ls -a(显示隐藏文件)
如果被删了,遇到高手了,仔细检查机器
检查哪些进程在消耗CPU mem(找出高的),--sort\
检查网络连接
此时不要去打草惊蛇,T掉坏蛋。
马上进行安全加固
例如修改SSH 端口及禁止root远程登录。禁止坏蛋的代理ip登录,
pkill -u kill -9
禁止root远程登录: 添加一个普通用户并且提权
中了挖矿门罗币病毒或者其他挖矿病毒?
top/ps aux --sort -%cpu##抓出占用cpu使用率最高的进程
lsof -p PID这个进程都打开了哪些文件? /定位病毒目录
rm -rf病毒文件路径
kil -9 PID/pkil 病毒名称
课后作业
1 请将/etc/passwd 文件第三列数字按从小到大,然后从大到小排列
- sort -t":" k3 -n /etc/passwd -r
2 显示出占用机器cpu使用率和内存最高的命令。 两条
- top后然后P
- ps aux --sort -%cpu(mem) | head -2 | grep -v USER
3 查看端口和进程的几个命令
- ss
- netstat
- lsof
4 找出进程占用打开的文件命令
- lsof -p pid
5 修改ssh的默认端口为2000. 并且登录成功后,还原成22端口登录
vi /etc/ssh/sshd-config找到#Port 22,修改为Port 2000,然后systemctl restart sshd
防火墙打开2000端口,本地远程工具设置成2000.
6 vmstat 是干嘛的?
vmstat命令用于监控系统虚拟内存的使用情况。它可以显示有关进程、内存、ENO、CPU活动及I/O的信息。
7 说一说服务器被入侵后会有什么症状
- cpu和内存的使用率特别的高。 100%
- 服务器登录卡顿,执行命令有延迟
- 服务器带宽会出现被占满的情况
- 如果是跑着应用服务,用户使用起来会感觉非常卡顿,并且容易出现页面访问不到的问题。
8 服务器被入侵后怎么做?
使用last命令查看历史登陆记录,禁用可疑的IP
history命令查看入侵者进行的操作
使用ps -aux | grep sshd检查是否同时还有可以用户在线,如果有使用pkill -u 用户名,踢掉入侵者
检查消耗CPU和内存高的进程进行关闭
修改远程登陆端口号
禁用root用户远程登陆,设置普通用户并提权
9 服务器遭受过什么攻击? 怎么处理?
门罗币病毒,把它干掉了。
10 拒绝代理登录你的服务器
在云服务后台设置黑名单,禁用可疑ip
11中了门罗币病毒怎么处理?
使用ps aux --sort -%cpu | head -5找到占用cpu最高的程序
使用lsof -p cpu使用最高的pid,找到这个进程的地址,删除掉。
然后kill -9 pid关闭这个进程。
12 说一说top吧
13 什么命令可以杀掉服务的全部进程,说出两个
pkill,killall
14 ss 和netstat -tnlp有什么区别
ss运行速度更为快一些,ss是直接查看/porc/net文件,而netstat会遍历/porc/目录。