Linux的系统管理技巧
一、监控系统状态
1.使用w命令查看当前系统负载
直接输入w
回车就可以
显示三行信息:
第1行:时间、系统运行时间、登录用户数、平均负载
第2行与第3行:当前登录的用户名、登录地址、登录时间等
最需要关注的是第一行的平均负载三个数字,分别为1分钟、5分钟、15分钟的平均负载值,值越大,压力越大。值不超过cpu的数量就没有关系
查看服务器又几个cpu:
cat /proc/cpuinfo
grep -c 'processor' /proc/cpuinfo
查看几个cpu物理cpu则是physical id关键字
2.vmstat 查看系统状态
w
只能查看当当前系统总体状态,而vmstat
可以查看具体是系统哪里有压力。
如图所示,vmstat
查看的信息包括6个部分,分别是:procs、memory、swap、io、system、cpu。
重点关注的是r、b、si、so、bi、bo。
简单介绍:
procs:显示进程相关信息
r(run):
表示运行或等待CPU时间片的进程数。(一个CPU某一时间只能一个进程使用,等待的进程也是运行的。如果r长期大于CPU数,说明CPU不够用了)
b(block):
等待资源的进程数,资源指的是磁盘或者内存。比如处理完数据需要把他写入到磁盘中,如果写入缓慢,要一段时间才能写入,这段时间就是b状态,长期大于1,则需要关注。
memory:显示内存相关的信息
swpd:表示切换到交换分区的内存数量,单位为KB
free:表示当前空闲的内存数量,单位为KB
buff:即将写入磁盘的缓冲大小,单位为KB
cache: 从磁盘中读取的缓存大小,单位为KB
swap:显示内存的交换情况
si:
表示由交换区写入内存的数据量,单位为KB
so:
内存写入交换区的数据量,KB
io:显示磁盘的使用情况
bi:
表示从块设备读取数据的量(读磁盘),KB
bo:
表示从块设备写入数据的量(写磁盘),KB
system:采集时间内发生的中断次数。
in:某一时间内观测到美妙设备的中断次数
cs:每秒产生的上下文切换次数
cpu:显示CPU的使用状态
us:用户所花费CPU时间百分比
sy:系统花费CPU所占时间比
id:空闲时间所占CPU百分比
wa:I/O等待所占用时间百分比
st:被偷走的百分比,一般为0
常关注的是r,b,wa,io的bi、bo如果数值高,则是磁盘压力比较大,si、so比较大并且经常变化,则是内存不够使用。
查看系统状态时候,经常这样使用命令:
vmstart 1 5 #每一秒输出一次,输出五次
vmstart 1 #每一秒输出一次,一直到ctrl+c才停止
3.top命令显示进程所占资源
top
命令用于动态监控所占的系统资源,每隔3秒变动一次。特点是将占用系统资源最高的放到最前面。
top下,shift+m安装内存大小排序,1列出所有cpu的使用状态,q退出。
top -bn1,表示非动态的打印系统资源情况,可以在shell脚本使用。
4. sar命令监控系统状态
安装:yum install -y sysstat
sar命令几乎可以监控所有资源的状态,比如负载均衡、网卡流量、磁盘状态、内存使用等。
4.1 查看网卡流量 sar -n DEV
该命令会将当天的网卡信息打印出来,每隔十分钟记录一次。
IFACE:设备名称
rxpck/s :每秒进入收取的包的数量;
txpcl/s :每秒发送出去包的数量
rxKB/S :每秒收取的包的流量,单位是KB
txKB/s :每秒发送出去的包的流量,单位是KB
如果rxpck/s大于4000,rxKB/s大于5000000,可能是被攻击了
sar -n DEV 1 5
实时查看情况
sar -n DEV -f /var/log/sa/sa23
查看某一天,这是查看23号
4.2 查看历史负载 sar -q
5. nload命令查看网卡流量
安装:yum install -y epel-release;yum install -y nload
直接运行nload
命令即可。
6.free命令查看内存状态
直接输入free
来查看,另外free -m
以MB为单位,free -g
以GB为单位
如图,
total:表示总的内存大小
used:表示使用实际内存大小
free:剩余物理内存大小
shared:共享内存大小,不关注
buff/cache:分配给buffer和cache的总共大小。buffer是指的要写入时候用的内存是buffer,读取时候用的是cache。
available:可用内存大小,包含了free。
7.用ps命令查看进程
ps aux
ps -ef
ps -elf
经常配合grep来使用,比如ps -ef|grep java
PID:进程的id
STAT:进程状态,常用值:
D:不能中断的进程(通常为IO)
R:正在运行
S(sleep):已经中断,大部分是怎个状态
T:已经停止或暂停
Z:僵尸进程,杀不死的
<:高优先级进程
N:低优先级
L:被做了内存分页
s:主进程
l:多线程进程
+:在前台运行的进程
8. 用netstat查看网络情况
netstat -lnp
:系统启动了哪些端口
netstat -an
:打印网络连接情况
netstat -tnl
:查看端口
如:netstat -lnp|grep 80
9. 抓包工具
9.1 tcpdump工具
安装:yum install -y tcpdump
使用:tcpdump -nn -i ens33
第3列第4列显示“IP+端口号”,不加-nn,在显示“主机名+服务名”形式
在shell中抓包,tcpdump -nn -i ens33 -c 100
,-c的作用是抓够一定量的包,够了就自动退出。
tcpdump -nn -i ens33 port 22 #只抓22端口的
tcpdump -nn -i ens33 tcp and not port 22 #只抓tcp,但不抓22端口的
9.2 wireshark工具
安装:yum install -y wireshark
10. Linux网络相关
10.1 ifconfig 查看网卡IP
重启网卡: ifdown ens33;ifup ens33
10.2 DNS
DNS的地址配置在/etc/resolv.conf中
11 Linux系统的任务计划
11.1 crontab命令
参考:https://www.cnblogs.com/kerrycode/p/3238346.html
。个人感觉写的很好
-u:指定某个用户
-e:指定任务计划
-l:列出计划任务
-r:删除计划任务
12 Linux系统服务管理
12.1 chkconfig 服务管理工具
centos6上的服务管理工具是chkconfig,所有的预设服务可以查看/etc/init.d/目录得到。
chkconfig --list :列出所有服务以及每个级别的开启状态
13.systemd服务管理
systemctl list-units --all --type=service #列出所有的服务
systemctl enable crond.service #让某个服务开机启动(service可省略)
systemctl disable crond.service #不让开机启动
systemctl status crond.service #查看服务状态
systemctl start crond.service
systemctl stop crond.service
systemctl restart crond.service
systemctl is-enabled crond #查看某个服务是否开机启动
14. Linux下的数据备份工具rsync
安装:yum install -y rsync
15. 常用的MySQL基本操作的命令
mysql -u用户名 -p密码
mysql -u用户名 -p密码 -h192.168.1.1 -P3306 连接远程数据库
show databse; 查询当前库
use databasename; 切换数据库名
show tables; 查看数据表
desc tablename; 查看数据表的名字
show create table tablename\G; 查看表名
select user(); 查看当前用户
select database(); 查看当前所使用的数据库
create databse dbname set charset-utf8; 创建数据库
create table name(
); 创建数据表
select version(); 查看当前版本
show status(); 查看mysql当前状态
show variables; 查看各参数
或:show variables like '%time%';
set global 参数名=参数值; 设置参数
show processlist; 查看Mysql的服务器队列
grant all on *.* to user1 identified by '123456'; 创建一个用户并授权
truncate table 库名.表名; 清空数据表
drop table 库名.表名;
drop database db; 清除库名
mysqldump -uroot -p'123456' mysql > /tmp/mysql.sql 备份
mysql -uroot -p'123456' mysql < /tmp/mysql.sql 恢复
16 Linux防火墙
16.1 SELinux
Linux系统特有的安全机制。一般要把它关闭,临时关闭:setenforce 0
永久关闭:将/etc/selinux/config的SELINUX改为disabled
查看状态:getenforce
16.2 netfilter
5和6的防火墙叫netfilter,centos7叫firewalld,但是命令是向下兼容的。