linux日常管理

监控系统状态 �C w, vmstat

命令w, uptime

system load averages  单位时间段内活动的进程数  

查看cpu的个数和核数

vmstat  1

vmstat 1 10

vmstat各指标含义:

r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了

si :由交换区进入内存的数量;

so :由内存进入交换区的数量;

bi :从块设备读取数据的量(读磁盘);

bo: 从块设备写入数据的量(写磁盘);

in :  每秒的中断次数,包含时钟中断;

cs :  每秒的上下文切换次数;

wa :表示I/O等待所占用cpu时间百分比.


监控系统状态 �C top

用于动态监控进程所占系统资源,每隔3秒变一次。 

RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。  

top -bn1 它表示非动态打印系统资源使用情况,可以用在shell脚本中 

top -c  最右侧的命令可以显示更详细的信息


监控系统状态 �C sar

没有这个命令,使用yum install -y sysstat

网卡流量 sar -n DEV, sar -n DEV 1 10

sar -n DEV -f /var/log/sa/sa24 

查看历史负载  sar -q

查看磁盘读写  sar -b


free查看系统内存使用情况

free以k为单位显示 -m以M为单位  -g以G为单位 

mem(total):内存总数; mem(used):已经分配的内存; mem(free):未分配的内存; mem(buffers):系统分配但未被使用的buffers;mem(cached)系统分配但未被使用的cache

buffers/cache(used):实际使用的buffers与cache 总量,也是实际使用的内存; buffers/cache(free):未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存 

buffers是即将要被写入磁盘的,cache是被从磁盘中读出来的 


ps 查看系统进程 

ps aux / ps -elf

PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill  进程的pid’ 有时并不能杀掉,则需要加一个-9选项了 kill  -9  进程pid

STAT :表示进程的状态,进程状态分为以下几种

D 不能中断的进程(通常为IO)

R 正在运行中的进程

S 已经中断的进程,系统中大部分进程都是这个状态

T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态

X 已经死掉的进程(这个从来不会出现)

Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。

< 高优先级进程

N 低优先级进程

L 在内存中被锁了内存分页

s 主进程

l 多线程进程

+ 在前台的进程


pstree 树形显示所有进程


netstat 查看网络状况 

netstat -lnp  查看当前系统开启的端口以及socket

netstat -an  查看当前系统所有的连接


1. Linux抓包工具


tcpdump 系统自带抓包工具

tcpdump -nn -i eth0 tcp and host 192.168.0.1 and port 80

tcpdump -nn -vs0 tcp and port not 22 -c 100 -w 1.cap 

wireshark 在linux下也可以安装 yum install -y wireshark

抓包分析http请求:tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"


2. Selinux

配置文件 /etc/selinux/config 三种形式:enforcing, permissive, disabled SELINUX=disabled   

setenforce 0/1  getenforce  yum install -y libselinux-utils 


3. netfilter --  iptables



两张图:







iptables -nvL 查看规则

iptables -F 清除当前的规则

iptables -Z 计数器清零

service iptables save 保存规则 保存的规则文件为:/etc/sysconfig/iptables 

service iptables stop  可以暂停防火墙,但是重启后它会读取/etc/sysconfig/iptables 从而启动防火墙,另外即使我们停止防火墙,但一旦我们添加任何一条规则,它也会开启。

iptables -t  指定表名,默认不加-t则是filter表 

filter 这个表主要用于过滤包的,是系统预设的表,内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。  


nat 主要用处是网络地址转换、端口映射,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。 


mangle 主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time ToLive,生存周期)值以及为数据包设置Mark标记,以实现Qos (Quality of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。 五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD


raw   对报文设置一个标志,决定数据包是否被状态跟踪机制处理   只有两个链:OUTPUT、PREROUTING 


iptables规则相关:


查看规则 iptables -t nat -nvL

清除规则 iptables -t nat -F

增加/删除规则  iptables -A/-D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP 

插入规则 iptables -I INPUT -s 1.1.1.1 -j DROP/ACCEPT/REJECT 

iptables -nvL --line-numbers  查看规则带有id号

iptables -D INPUT 1 根据规则的id号删除对应规则

iptables -P INPUT DROP  用来设定默认规则,默认是ACCEPT ,一旦设定为DROP后,只能使用 iptables -P ACCEPT 才能恢复成原始状态,而不能使用-F参数 


实例:

针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.0.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。 脚本如下:

#! /bin/bash 

ipt="/sbin/iptables" 

$ipt -F; $ipt -P INPUT DROP; 

$ipt -P OUTPUT ACCEPT; $ipt -P FORWARD ACCEPT; 

$ipt -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT 

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT 

icmp的包有常见的应用,本机ping通外网,外网ping不通本机 iptables -I INPUT -p icmp --icmp-type 8 -j DROP 


nat表应用:

路由器就是使用iptables的nat原理实现

假设您的机器上有两块网卡eth0和eth1,其中eth0的IP为192.168.10.11,eth1的IP为172.16.10.11 。eth0连接了intnet 但eth1没有连接,现在有另一台机器(172.16.10.12)和eth1是互通的,那么如何设置也能够让连接eth1的这台机器能够连接intnet? 

echo "1" > /proc/sys/net/ipv4/ip_forward 

iptables -t nat -A POSTROUTING -s 172.16.10.0/24 -o eth0 -j MASQUERADE 


规则备份与恢复:

service iptables save 这样会保存到/etc/sysconfig/iptables 

iptables-save > myipt.rule 可以把防火墙规则保存到指定文件中

iptables-restore < myipt.rule  这样可以恢复指定的规则


4. Linux系统任务计划

/etc/crontab  cron的主配置文件,可以定义PATH

cron格式如下:

# .----------------分钟 (0 - 59)

# |  .------------- 小时 (0 - 23)

# |  |  .----------  日 (1 - 31)

# |  |  |  .-------  月 (1 - 12)

# |  |  |  |  .----   周 (0 - 6) (周日=0 or 7) 

# |  |  |  |  |

# * *  * *  * user-name command to be executed

cron 也是一个服务,所以需要先启动服务才能生效:service crond start; service crond status 


任务计划练习题:

每天凌晨1点20分清除/var/log/slow.log这个文件

每周日3点执行 “/bin/sh /usr/local/sbin/backup.sh”

每月14号4点10分执行 “/bin/sh /usr/local/sbin/backup_month.sh”

每隔8小时执行 “ntpdate time.windows.com”

每天的1点,12点,18点执行 “/bin/sh /usr/local/sbin/test.sh”

每天的9点到18点执行 “/bin/sh /usr/local/sbin/test2.sh”  


你可能感兴趣的:(linux,服务器,上下文,监控系统,averages)