linux系统管理技巧

linux系统管理技巧

1.1监控系统的状态

接下来的命令都可以监控到系统的状态

1.1.1 命令 w

命令 w 可以查看当前系统的负载

在这里插入图片描述
这个命令非常的简单,一个字母就能看到当前系统的负载。从左往右显示的信息以此为:时间、系统运行时间、登录用户数和平均负载。其中load average 后面3个数字应该最为注意!
第一个数值表示一分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。应该着重看第1个数值,数值越大说明服务器压力就越大。
查看服务器有几个CPU的方法:
cat /proc/cpuinfo
linux系统管理技巧_第1张图片

1.1.2用vmstat命令监控系统的状态

一个单词:vmstat
在这里插入图片描述
命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有美玉压力。但他无法精准的判断压力在哪里(CPU、内存、磁盘等),所以就要用到vmstat。vmstat打印有着6部分:procs、memory、swap、io、system和cpu。还要重点关注一下r、b、si、so、bi、bo着几列信息。

proc显示进程的相关信息。
r(run):表示运行或等待CPU时间片的进程数。
b(block):表示等待资源的京成熟,这个资源指的是I/O、内存等。

memory显示内次年的相关信息:
spwd:表示切换到交换分区中的内存数量,单位为kb。
buff:表示(即将写入磁盘的)缓冲大小,单位为kb。
cache:表示(从磁盘中读取的)缓冲大小,单位为kb。

swap显示内存的交换情况。
si:表示由交换区写入内存的数据量,单位为kb。
so:表示由内存写入交换区的数据量,单位为kb。
system显示采集间隔内发生的中断次数。
in:表示在某一时间间隔呢观测到的每秒设备的中断次数
cs:表示每秒产生的切换次数。

cpu显示CPU的使用状态。
us:显示用户下所花费CPU的时间百分比
sy:显示系统花费CPU的时间百分比
id:表示CPU处于空闲状态的百分比。
wa:表示I/O等待所占用CPU的时间百分比。
st:表示被偷走的CPU所占百分比(一般都为0)
.

1.1.3 命令top

命令 top 显示进程所占的系统资源

linux系统管理技巧_第2张图片
命令 top 用于动态监控进程所占的系统资源,每隔3秒变一次。命令 top 特点是把占用系统资源(CPI、内存、I/O等)最高的进程放到最前面,同时top也打印出很多信息,如:系统负载(load averarge)、进程数(tasks)、CPU使用情况、内存使用情况以及交换分区使用情况。

1.1.4命令sar

命令sar用于监控系统状态
命令sar是十分强大的,它可以监控系统几乎所有的资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零开始到当前时刻的系统状态信息。如果没安装这个命令,请使用命令 yum install -y sysstat 安装。

sar -A 所有报告的总和
linux系统管理技巧_第3张图片
proc/s和cswch/s都是在internal时间段里,每秒上下文切换率

sar -u 输出CPU使用情况的统计信息
linux系统管理技巧_第4张图片
Sar -v :输出inode、文件和其他内核表的统计信息,包括:dentunusd file-nr inode-nr pty-nr。
linux系统管理技巧_第5张图片
Sar -r :输出内存和交换空间的统计信息
linux系统管理技巧_第6张图片
Sar -y :终端设备活动情况
linux系统管理技巧_第7张图片

查看网卡流量:sar -n DEV

linux系统管理技巧_第8张图片
这个命令会把当天记录的网卡 信息打印出来,每隔十分钟记录一次。IFACE这一列表示设备名称;rxpck/s这一列表示收取的包的数量;txpck/s这一列表示每秒钟发出去的包的数量;rxkB/s这一列表示每秒收取的数据量(单位为kb),txkB/s这一列表示每秒钟发送的数据量。
如过丢包严重,就需要查看网卡流量 是否异常,如果rxpck/s那一列的值大于4000,或者rxkB/s那一列大于5000000,就很有可能被攻击了。正常的服务器网卡流量不会这么高,除非在复制数据。
如果使用 -f 可以查看某一天的网卡流量历史,后面跟文件名。
sar -n DEV -f /var/;og/sa/sa27
linux系统管理技巧_第9张图片
查看历史负载 sar -q
linux系统管理技巧_第10张图片

1.1.5命令nload

命令nload可以查看网卡流量
sar虽然也可以查看网卡流量,但是不够直观,所以用nload更好。如果没有这个命令,可以用命令 yum install -y epel-release; yum install -y nload

1.1.5命令free

命令free可以查看内存使用状况

在这里插入图片描述
total:内存总大小。
used:真正使用的实际内存大小。
free:剩余物理内存大小(没有被分配,纯剩余)。
shared:共享内存大小
buff/cache:分配给buffer和cache的内存总共多大。
available:系统可使用有多大,包含了free。
buffer和cache都是一部分内存,内存的作用就是环节CPU和IO的速度差距。数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer;COU要计算时,需要把数据从磁盘中读出来,临时放到内存中,这部分内存是cache。

另外free还可以与-m和-g搭配(分别是以MB或GB为单位)打印内存的使用情况。

1.1.7命令ps

**命令ps可以查看系统进程。**

linux系统管理技巧_第11张图片
PID:表示进程的ID。在linux中,内核管理进程就是靠pid来识别和管理某一个进程。
STAT:比进程的状态。

常用的命令:ps aux |grep -c sshd

1.1.8 命令netstat

命令netstat可以查看网络状态
具体用法如下:
netsatat - lnp (打印当前系统启动哪些端口)
netstat -an (打印网络连接状况)
linux系统管理技巧_第12张图片

1.2 抓包工具

想查看网卡上有哪些数据包就可以运用抓包工具。

1.2.1tcpdump工具

具体方法如下:
tccpdump -nn -i +网卡
linux系统管理技巧_第13张图片
后面如果不Ctrl+c 停止,则会一直显示内容。
如果不想一直让内容显示出来,可以指定内容数量,加上-c + 内容数量 示例如下:
tcpdump -nn -i eno16777736 -c 100
linux系统管理技巧_第14张图片

1.2.2 wireshark工具

wireshark是一个十分流行的网络分析工具,这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。

先用命令 yum install -y wireshark 下载wireshark工具。

1.3 Linux网络相关

设置IP、主机名和DNS等。

1.3.1 网卡IP

ifconfig可以打印当前网卡IP的相关信息(如子网掩码、网关等)。
linux系统管理技巧_第15张图片
其实和命令ip a来查看相关网络信息差不多,但是比ip a能查看到更多的命令
linux系统管理技巧_第16张图片

如果修改网卡的IP,可以使用如下命令:
vi /etc/sysconfig/network-scripts/ifcfg-xxx(你的网卡名字)。

如果想重启网卡,可以先关掉网卡,再启动。
ifdown xxx ; ifup xxx xxx为你的网卡名。
ifdown既停用网卡,ifup既启动网卡。

1.3.2给网卡设定多一个ip

具体命令如下:
cd /etc/sysconfig/network-scripts
cp ifcfg-xxx ifcfg-xxx:1
这个反斜杠 \ 一定要加,这是转义的意思,不然linux命令行下无法识别。然后要编辑 ifcfg-xxx:1,DEVICE一定要写成xxx:1,之后就ok了。

1.3.3查看网卡连接状态

具体命令如下: mii-tool xxx(我这里是eno16777736)
在这里插入图片描述link ok 说明网卡已经连上了,ok的了。

还有一个查看网卡的方式:ethtool xxx

linux系统管理技巧_第17张图片
最后一行最后一个单词,yes就连上了,no就没连上。

1.3.4更改主机名

安装完系统后,主机名默认是localhos.localdomaint的,可以通过命令hostname来查看
在这里插入图片描述
可以通过命令:hostnamecatl set-hostname 主机名 来修改成你想要的名字,还要重启!这样才能变成你想要的主机名。
在这里插入图片描述

1.3.5 设置DNS

DNS的作用就是用来解析域名的。想要设置DNS可以把DNS地址写入配置文件/etc/resolv.conf里面就行。
在这里插入图片描述
我这里就是114.114.114.114。在这里只是临时修改DNS IP地址,想永久修改就可以进入/etc/hosts这里,不过要手动添加IP和域名。

1.4 Linux防火墙

这是Linux很重要的一个功能,我搭建openstack的时候就经常要把防火墙关闭。

1.4.1 SELinux

SEXLinux是Linux系统特有的安全机制,因为这个家伙特别麻烦,所以一般都会临时关闭他,一般用如下命令:setenforce 0 。
如果要永久关闭,要进入 /etc/selinux/config找到 SELINUX=enforcing这里,把enforcing改成disabled就可以了。
想要查看SELinux的状态可以用命令:getenforce来查看。

1.4.2 netfilter、iptables

netfilter是CentO7之前版本的防火墙叫法,也有人把iptables叫做防火墙,其实不太准确,ipttables只是个工具,CentOS7叫做firewalld。接下来是firewalld和iptables的一些相关命令。

systecmtl disable iptables //开机就关闭iptables服务	
systecmtl enable iptables //开机就开启iptables服务
systemctl start iptables //启动iptables服务
systemctl stop iptables //关闭iptables服务

iptables基本语法
1、查看规则以及清除规则。

iptables -t nat --nvL 
-t选项后面跟表名,-nvl表示查看该表的规则,其中-n表示不针对IP反解析主机名,-L表示列出,-v表示列出的信息更加详细。

linux系统管理技巧_第18张图片
清除规则命令:

iptables -F      清除预设表filter中的所有规则链的规则
iptables -X      清除预设表filter中使用者自定链中的规则
iptables -Z 	   把包以及流量计数器置零

一开始设定的防火墙规则只保存在内存内,没有保存在一个文件中,也就是说,当系统重启后规则就没了,所以设定好规则后要先保存。

service iptables save 

系统会提示你防火墙规则保存在/etc/sysconfig/iptables文件内,这个就是iptables的配置文件。

1.4.3 firewalld

systemctl stop firewalld //关闭firewalld服务
systemcl start firewalld //开启firewalld服务
systemctl disable firewalld //禁止firewalld服务开机启动
systemctl enable firewalld //禁止firewalld服务开机启动

打开firewalld之后可以执行 iptables -nvL查看firewalld的默认规则。

1.5 Linux 系统的任务计划

通过功能cron定期自动执行某个脚本

1.5.1命令crontab

crontab常跟以下选项一起用;
-u:表示指定某个用户,不加-u则选项为当前用户。
-e:表hi制定计划任务
-l:表示列出计划任务
-r:表示删除计划任务

可以使用命令 crontab -e来编辑任务计划,实际就是用vim打开了配置文件,写下内容:10 07 03 28 7 echo ”ganbadie“ 》 /root/cron.log
在这里插入图片描述
这段数字的意思是3月28日(这一天必须是星期六)的5点05分执行命令 echo ”ganbadie“ > /root/cron.log。
时间从左到右分别是分、时、日、月、星期几。
自己设定的任务可以通过命令crontab -l 来查看
在这里插入图片描述
我们想删除任务,可以通过命令 crontab -r ,这个要小心,因为他会将所有命令删除掉。

15.2cron练习题

(1)每天凌晨1点20分清除/var/log/slow.log这个文件
答:20 1* * * echo " " > /var/log/slow.log
(2)每周日3点执行/bin/sh /usr/local/sbin/backip.sh
答: 0 3 * * 0 /bin/sh /usr/local/sbin/backip.sh
(3)每月14日4点10分执行/bin/sh /usr/local/sbin/backup_month.sh
答:10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh
(4)每隔8小时执行ntpdate time.windows.com
答:0 */8 * * * ntpdate time.windows.com
(5)每天的1点、12点和18点执行/bin/sh /usr/local/sbin/test.sh
答:0 1,12,18 * * * /bin/sh /usr/local/sbin/test.sh
(6)每天的9点到18点执行/bin/sh /usr/local/sbin/test2.sh
答:0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh

1.6Linux系统服务管理

1.6.1 chkonfig 服务管理工具

linux系统所有的预设的服务都可以通过查看/etc/init.d目录等到
在这里插入图片描述
系统的预设服务都可以通过这样的命令实现:service服务名 start|stop|restart ,这里服务名就是/etc/init.d/目录下的这些文件了。启动cron除了可以使用命令:service crond start外,还可以使用命令 /etc/init.d/crond start。

chkconfig --list列出所有服务以及每个几倍的开启状态。
linux系统管理技巧_第19张图片
这里的数字0~6为系统启动级别,其中0为shutdown动作,1为重启至单用户模式,6为重启,2表示无NFS支持的多用户模式,3示完全多用户模式(最常用级别),4保留用户自定义,5表示图形登录方式。
chkconfig还有可以把某个服务加入系统服务或者删除,如下:

chkconfig --del network //这个是删除服务
chkconfig --add network //这个是添加服务

1.6.2 systemd服务管理

列出系统所有的服务:
systemctl list-units --all --type=service
linux系统管理技巧_第20张图片
这些服务对应得启动脚本文件在着:
ls /usr/lib/systemd/system/
linux系统管理技巧_第21张图片
可以看到这个目录下有目录有文件,有的是.service为后缀名,有的是.targer为后缀名,就各种各样的。现在先看两个概念,一个是–unit,其实刚刚那个文件中大部分是unit的组成部分,以下是unit的各个种类类型:
service:系统服务
target:多个unit组成的组
device:硬件设备:
mount:文件系统挂载点
automount:自动挂载点
path:文件或路径
scope:不是由systemd启动的外部进程
slce:进程组
snapshot:systemd快照
scocket:进程间通信的套接字
swap:swap文件
timer:定时器

以上每种类型的文件都为一个unit,正是这些unit才组成看系统的各个资源(各个服务、各个设备等)。

以下是unit的相关命令:

systemctl list-units //列出正在运行的unit
systemctl list-units --all //列出所有的unit(包括失败的、不活跃的)
systemctl list-units --all --stat=inactive //列出所有不活跃的unit
systemctl list-units --all --type=service//列出所有状态的servie
systemctl list-units --type=service //列出状态为活跃的service
systemctl is-active crond.service //查看某个unit是否活跃

第二个概念是–target,它是一个多unit的组合,系统启动简单来说就是启动多个unit,为了管理方便,就用target来管理这些unit,使用以下命令能查看所有target
systemctl list-unit-files --type target
linux系统管理技巧_第22张图片
使用以下命令可以查看一个target包含的所有unit:
systemctl list-dependencies multi-user.target
linux系统管理技巧_第23张图片
以下是target的相关命令

#systemctl get-default  //查看系统的默认target
multi-user.target
#systemctl set-dafault multi-user.target //设置值默认的target

service、unit和targer之间的联系
(1)一个service属于一种unit
(2)多个unit一起组成一个target
(3)一个target里面包含了多个service

1.7 Linux下的数据备份工具rsync(remote sync 远程同步)

rsync不仅可以远程同步数据,而且可以本地同步数据,这两点都类似与scp,不同的是,它不会覆盖以前的数据,二十先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。

1.7.1 rsync的命令格式

1:rsync [ OPTION ] … SRC DEST
2:rsync [ OPTION ] … SRC [USER@]HOST:DEST
3:rsync [ OPTION ] … [USER@]HOST:SRC DEST
4:rsync [ OPTION ] … [USER!]HOST:SRC DEST
5:rsync [ OPTION ] … HOST::DEST

1.7.2 rsync常用选项

-a:这时归档模式,表示以递归问世传输文件,并保持所有属性,它等同于-rlptgoD。-a选项后面可以跟一个–no-OPTION,表示关闭-rlptgoD中的某一个。
-r:表示以递归模式处理子目录。它主要时针对目录来说的,如果单独传一个文件不需要加-r选项,但是传输目录时必须加。
-v:表示打印一些信息,比如文件列表、文件数量
-L:表示保留软连接
-p:表示保持文件权限
-o:表示保持文件属主信息
-g:表示保持文件属组信息。
-D:表示保持设备文件信息
-t:表示保持文件的时间信息
–delete:表示删除DST中SRC没有的文件
–exclude=PATTERN:表示指定爆出不需要传输的文件,等号后面跟文件名,可以时万用字符模式(如
.txt)
–progress:表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等。
-u:表示把DST中比SRC还新的文件排除掉,不会覆盖。
-z:加上该选项,将会在传输过程中压缩
*

1.8 Linux日志

日志记录了系统每天发生的各种各样的事情,比如监测系统状况、排查系统故障等。日志的主要功能时审计和监测,还可以实时地监测系统状态,监测和追踪侵入者。

1.8.1/var/log/message

这时核心系统的日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态信息。I/O错误、网络错误和求他系统错误都会记录到这个文件中。
通产情况下,/var/log/message时做故障诊断时首先查看的文件

1.8.2 dmesg

dmesg可以显示系统的启动信息。
linux系统管理技巧_第24张图片

1.8.3 安全日志

命令last用来查看登录Linux的历史信息。

linux系统管理技巧_第25张图片
从左到右依次是账号名称、登陆终端、登录客户端IP、登陆日期及时长。

1.9xargs和exec

xargs和exec可以实现相同的功能,exec主要时和find一起配合使用。而xargs比exec的用处更多

1.9.1xargs应用

xargs好处在于可以把原本两部或者多步才能完成的任务仅用一步来完成。比如当前目录下全是后缀名为.txt的文件,然后把这些文件变成txt_bak。正常来说要写脚本才行,但是xargs一步解决。
linux系统管理技巧_第26张图片
-i类似与for循环,-n表示逐个对象进行处理,-i { }表示用{}取代前面的对象,mv{ } { }——bak相当于mv 1.txt 1.txt_bak 。

1.9.2exec应用

使用find命令时,经常会与-exec选项一起用。他可以达到xargs同样的效果。

linux系统管理技巧_第27张图片

你可能感兴趣的:(linux系统管理技巧)