接下来的命令都可以监控到系统的状态
命令 w 可以查看当前系统的负载
这个命令非常的简单,一个字母就能看到当前系统的负载。从左往右显示的信息以此为:时间、系统运行时间、登录用户数和平均负载。其中load average 后面3个数字应该最为注意!
第一个数值表示一分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。应该着重看第1个数值,数值越大说明服务器压力就越大。
查看服务器有几个CPU的方法:
cat /proc/cpuinfo
一个单词: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)
.
命令 top 显示进程所占的系统资源
命令 top 用于动态监控进程所占的系统资源,每隔3秒变一次。命令 top 特点是把占用系统资源(CPI、内存、I/O等)最高的进程放到最前面,同时top也打印出很多信息,如:系统负载(load averarge)、进程数(tasks)、CPU使用情况、内存使用情况以及交换分区使用情况。
命令sar用于监控系统状态
命令sar是十分强大的,它可以监控系统几乎所有的资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零开始到当前时刻的系统状态信息。如果没安装这个命令,请使用命令 yum install -y sysstat 安装。
sar -A 所有报告的总和
proc/s和cswch/s都是在internal时间段里,每秒上下文切换率
sar -u 输出CPU使用情况的统计信息
Sar -v :输出inode、文件和其他内核表的统计信息,包括:dentunusd file-nr inode-nr pty-nr。
Sar -r :输出内存和交换空间的统计信息
Sar -y :终端设备活动情况
查看网卡流量:sar -n DEV
这个命令会把当天记录的网卡 信息打印出来,每隔十分钟记录一次。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
查看历史负载 sar -q
命令nload可以查看网卡流量
sar虽然也可以查看网卡流量,但是不够直观,所以用nload更好。如果没有这个命令,可以用命令 yum install -y epel-release; yum install -y nload
命令free可以查看内存使用状况
total:内存总大小。
used:真正使用的实际内存大小。
free:剩余物理内存大小(没有被分配,纯剩余)。
shared:共享内存大小
buff/cache:分配给buffer和cache的内存总共多大。
available:系统可使用有多大,包含了free。
buffer和cache都是一部分内存,内存的作用就是环节CPU和IO的速度差距。数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer;COU要计算时,需要把数据从磁盘中读出来,临时放到内存中,这部分内存是cache。
另外free还可以与-m和-g搭配(分别是以MB或GB为单位)打印内存的使用情况。
**命令ps可以查看系统进程。**
PID:表示进程的ID。在linux中,内核管理进程就是靠pid来识别和管理某一个进程。
STAT:比进程的状态。
常用的命令:ps aux |grep -c sshd
命令netstat可以查看网络状态
具体用法如下:
netsatat - lnp (打印当前系统启动哪些端口)
netstat -an (打印网络连接状况)
想查看网卡上有哪些数据包就可以运用抓包工具。
具体方法如下:
tccpdump -nn -i +网卡
后面如果不Ctrl+c 停止,则会一直显示内容。
如果不想一直让内容显示出来,可以指定内容数量,加上-c + 内容数量 示例如下:
tcpdump -nn -i eno16777736 -c 100
wireshark是一个十分流行的网络分析工具,这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。
先用命令 yum install -y wireshark 下载wireshark工具。
设置IP、主机名和DNS等。
ifconfig可以打印当前网卡IP的相关信息(如子网掩码、网关等)。
其实和命令ip a来查看相关网络信息差不多,但是比ip a能查看到更多的命令
如果修改网卡的IP,可以使用如下命令:
vi /etc/sysconfig/network-scripts/ifcfg-xxx(你的网卡名字)。
如果想重启网卡,可以先关掉网卡,再启动。
ifdown xxx ; ifup xxx xxx为你的网卡名。
ifdown既停用网卡,ifup既启动网卡。
具体命令如下:
cd /etc/sysconfig/network-scripts
cp ifcfg-xxx ifcfg-xxx:1
这个反斜杠 \ 一定要加,这是转义的意思,不然linux命令行下无法识别。然后要编辑 ifcfg-xxx:1,DEVICE一定要写成xxx:1,之后就ok了。
具体命令如下: mii-tool xxx(我这里是eno16777736)
link ok 说明网卡已经连上了,ok的了。
还有一个查看网卡的方式:ethtool xxx
安装完系统后,主机名默认是localhos.localdomaint的,可以通过命令hostname来查看
可以通过命令:hostnamecatl set-hostname 主机名 来修改成你想要的名字,还要重启!这样才能变成你想要的主机名。
DNS的作用就是用来解析域名的。想要设置DNS可以把DNS地址写入配置文件/etc/resolv.conf里面就行。
我这里就是114.114.114.114。在这里只是临时修改DNS IP地址,想永久修改就可以进入/etc/hosts这里,不过要手动添加IP和域名。
这是Linux很重要的一个功能,我搭建openstack的时候就经常要把防火墙关闭。
SEXLinux是Linux系统特有的安全机制,因为这个家伙特别麻烦,所以一般都会临时关闭他,一般用如下命令:setenforce 0 。
如果要永久关闭,要进入 /etc/selinux/config找到 SELINUX=enforcing这里,把enforcing改成disabled就可以了。
想要查看SELinux的状态可以用命令:getenforce来查看。
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表示列出的信息更加详细。
iptables -F 清除预设表filter中的所有规则链的规则
iptables -X 清除预设表filter中使用者自定链中的规则
iptables -Z 把包以及流量计数器置零
一开始设定的防火墙规则只保存在内存内,没有保存在一个文件中,也就是说,当系统重启后规则就没了,所以设定好规则后要先保存。
service iptables save
系统会提示你防火墙规则保存在/etc/sysconfig/iptables文件内,这个就是iptables的配置文件。
systemctl stop firewalld //关闭firewalld服务
systemcl start firewalld //开启firewalld服务
systemctl disable firewalld //禁止firewalld服务开机启动
systemctl enable firewalld //禁止firewalld服务开机启动
打开firewalld之后可以执行 iptables -nvL查看firewalld的默认规则。
通过功能cron定期自动执行某个脚本
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 ,这个要小心,因为他会将所有命令删除掉。
(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
linux系统所有的预设的服务都可以通过查看/etc/init.d目录等到
系统的预设服务都可以通过这样的命令实现:service服务名 start|stop|restart ,这里服务名就是/etc/init.d/目录下的这些文件了。启动cron除了可以使用命令:service crond start外,还可以使用命令 /etc/init.d/crond start。
chkconfig --list列出所有服务以及每个几倍的开启状态。
这里的数字0~6为系统启动级别,其中0为shutdown动作,1为重启至单用户模式,6为重启,2表示无NFS支持的多用户模式,3示完全多用户模式(最常用级别),4保留用户自定义,5表示图形登录方式。
chkconfig还有可以把某个服务加入系统服务或者删除,如下:
chkconfig --del network //这个是删除服务
chkconfig --add network //这个是添加服务
列出系统所有的服务:
systemctl list-units --all --type=service
这些服务对应得启动脚本文件在着:
ls /usr/lib/systemd/system/
可以看到这个目录下有目录有文件,有的是.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
使用以下命令可以查看一个target包含的所有unit:
systemctl list-dependencies multi-user.target
以下是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
rsync不仅可以远程同步数据,而且可以本地同步数据,这两点都类似与scp,不同的是,它不会覆盖以前的数据,二十先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
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
-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:加上该选项,将会在传输过程中压缩*
日志记录了系统每天发生的各种各样的事情,比如监测系统状况、排查系统故障等。日志的主要功能时审计和监测,还可以实时地监测系统状态,监测和追踪侵入者。
这时核心系统的日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态信息。I/O错误、网络错误和求他系统错误都会记录到这个文件中。
通产情况下,/var/log/message时做故障诊断时首先查看的文件
命令last用来查看登录Linux的历史信息。
从左到右依次是账号名称、登陆终端、登录客户端IP、登陆日期及时长。
xargs和exec可以实现相同的功能,exec主要时和find一起配合使用。而xargs比exec的用处更多
xargs好处在于可以把原本两部或者多步才能完成的任务仅用一步来完成。比如当前目录下全是后缀名为.txt的文件,然后把这些文件变成txt_bak。正常来说要写脚本才行,但是xargs一步解决。
-i类似与for循环,-n表示逐个对象进行处理,-i { }表示用{}取代前面的对象,mv{ } { }——bak相当于mv 1.txt 1.txt_bak 。
使用find命令时,经常会与-exec选项一起用。他可以达到xargs同样的效果。