Linux运维笔记-Linux系统平常管理

1. 监控系统状态 – 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: 从块设备写入数据的量(写磁盘);
wa :表示I/O等待所占用cpu时间百分比.

2. 监控系统状态 – top
用于动态监控进程所占系统资源,每隔3秒变一次。 
RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top状态下,按 “shift + m”, 能够按照内存使用大小排序。按数字 ‘1’ 能够列出各颗cpu的使用状态。  
top -bn1 它表示非动态打印系统资源使用状况,能够用在shell脚本中 

3. 监控系统状态 – 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

4. 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是被从磁盘中读出来的 

5. 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 多线程进程
+ 在前台的进程

6. netstat 查看网络情况 
netstat -lnp  查看当前系统开启的端口以及socket
netstat -an  查看当前系统全部的链接

7. 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"

8. Selinux
配置文件 /etc/selinux/config 三种形式:enforcing, permissive, disabled SELINUX=disabled   
setenforce 0/1  getenforce  yum install -y libselinux-utils 

9. 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 这个表主要是用于给数据包打标记,而后根据标记去操做哪些包。这个表几乎不怎么用。 

10. 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 

iptables规则备份与恢复:
service iptables save 这样会保存到/etc/sysconfig/iptables 
iptables-save > myipt.rule 能够把防火墙规则保存到指定文件中
iptables-restore < myipt.rule  这样能够恢复指定的规则

11. 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 

12. Linux系统服务管理
工具ntsysv 相似图形界面管理工具,若是没有该命令使用 yum install -y ntsysv 安装
经常使用服务:crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl 
chkconfig --list  
chkconfig --add/del servicename 
chkconfig --level [345] servicename on/off

13. Linux系统日志
/var/log/messages核心系统日志文件 
每周归档一个日志 messages-20130901
/etc/logrotate.conf
messages由syslogd这个守护进程产生的,若是停掉这个服务则系统不会产生/var/log/messages
/var/log/wtmp  查看用户登陆历史 last
/var/log/btmp  lastb 查看无效登陆历史
/var/log/maillog
/var/log/secure
dmesg 
/var/log/dmesg

14. exec与xargs 
exec 和find同时使用
查找当前目录建立时间大于10天的文件并删除 :find . -mtime +10 -exec rm -rf {} \;
批量更改文件名: find ./* -exec mv {} {}_bak \;
xargs 用在管道符号后面
find . -mtime +10 |xargs rm -rf
ls -d ./* |xargs -n1 -i{} mv {} {}_bak
xargs 能够把多行变成一行  cat 1.txt|xargs

15. screen 工具介绍
screen至关于一个虚拟终端,它不会由于网络中断而退出,每次登陆均可以进入那个screen
使用方法:直接输入screen命令
screen -ls  查看已经开启的screen
Ctrl +a 再按d退出该screen会话,只是退出,并无结束。结束的话输入Ctrl +d 或者输入exit 
退出后还想再次登陆某个screen会话,使用sreen -r screenid 若只有一个screen 直接screen -r
screen -S aming ; 登陆的话 screen -r aming

16. 学会使用curl命令
curl是Linux系统命令行下用来简单测试web访问的工具,几个经常使用的选项你要掌握
curl -xip:port www.baidu.com  # -x能够指定ip和端口,省略写hosts,方便实用
curl -Iv http://www.qq.com # -I 能够把访问的内容略掉,只显示状态码,-v能够显示详细过程
curl  -u user:password  http://123.com # -u能够指定用户名和密码
curl  http://study.lishiming.net/index.html -O #能够下载,还可使用 -o 自定义名字 curl -o index2.htmlhttp://study.lishiming.net/index.html

17. 几个和网络相关的命令
ping
telnet  www.lishiming.net  80
traceroute www.baidu.com
dig @8.8.8.8  study.lishiming.net
nc -z -w2 www.baidu.com 1-1024  # -w2 表示 2s超时  port 这里能够只写一个端口,也能够写一个范围。 使用nc扫描端口时,必需要加 -z 不然不显示结果。另外,若是想把不开放的端口也显示出来,能够加一个 -v 

18. rsync工具使用
rsync 命令格式
rsync [OPTION]... SRC  DEST
rsync [OPTION]... SRC  [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC  DEST
rsync [OPTION]... [USER@]HOST::SRC  DEST
rsync [OPTION]... SRC  [USER@]HOST::DEST

rsync经常使用选项
-a 归档模式,表示以递归方式传输文件,并保持全部属性,等同于-rlptgoD, -a选项后面能够跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如-a--no-l 等同于-rptgoD
-r 对子目录以递归模式处理,主要是针对目录来讲的,若是单独传一个文件不须要加-r,可是传输的是目录必须加-r选项
-v 打印一些信息出来,好比速率,文件数量等
-l 保留软链结
-L 向对待常规文件同样处理软连接,若是是SRC中有软连接文件,则加上该选项后将会把软连接指向的目标文件拷贝到DST
-p 保持文件权限 
-o 保持文件属主信息
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
--delete 删除那些DST中SRC没有的文件
--exclude=PATTERN 指定排除不须要传输的文件,等号后面跟文件名,能够是万用字符模式(如*.txt)
--progress 在同步的过程当中能够看到同步的过程状态,好比统计要同步的文件数量、同步的文件传输速度等等
-u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖
最经常使用的 -a -v --delete --exclude 

rsync选项讲解
rsync -av   dir1/ dir2/    # 其中dir2/目录能够不存在,记得同步目录时必定要在末尾加上/
-a 会把软链接原本来本的拷贝过去,那有时候咱们想拷贝源文件怎么办?就时候就用到一个 -L  
rsync -avL test1/ test2/ 
-u 选项的做用是,若是目标文件比源文件新,那么会忽略掉该文件 
touch test2/1.txt; rsync -avu test1/ test2/
rsync -av --delete test1/ test2/   #这样会把test2/目录比test1/目录多出来的文件删除掉
rsync -a --exclude=“2.txt” test1/ test2/  #在同步的过程当中,会忽略掉2.txt这个文件
rsync -a --progress --exclude=“*.txt” test1/ test2/  #--progress 显示同步过程的详细信息,--exclude后面也可使用通配符*

rsync应用实例 - ssh方式
rsync -avL test1/ www@192.168.0.101:/tmp/test2/ 
rsync -avL 192.168.0.101:/tmp/test2/ ./test3/ 
因为须要输入密码因此不适合写到脚本中,但能够经过建立秘钥对,让两台机器产生信任关系从而不用输入密码
若是ssh端口不是22,那么须要写成这样的形式:rsync -av "--rsh=ssh -p port”  /dir1/ 192.168.0.101:/tmp/dir2/ 

rsync应用实例 - 后台服务方式
配置文件 /etc/rsyncd.conf ,内容以下:
#port=873        #监听端口默认为873,也能够是别的端口
log file=/var/log/rsync.log  #指定日志
pid file=/var/run/rsyncd.pid  #指定pid
#address=192.168.0.10  #能够定义绑定的ip
以上部分为全局配置部分,如下为模块内的设置
[test]    #为模块名,自定义
path=/root/rsync  # 指定该模块对应在哪一个目录下
use chroot=true #是否限定在该目录下,默认为true,当有软链接时,须要改成fasle
max connections=4  # 指定最大能够链接的客户端数
read only=no  #是否为只读
list=true  #是否能够列出模块名
uid=root #以哪一个用户的身份来传输
gid=root  #以哪一个组的身份来传输
auth users=test #指定验证用户名,能够不设置
secrets file=/etc/rsyncd.passwd #指定密码文件,若是设定验证用户,这一项必须设置
hosts allow=192.168.0.101 #设置能够容许访问的主机,能够是网段
密码文件/etc/rsyncd.passwd的内容格式为:username:password
启动服务的命令是:rsync --daemon 
默认去使用/etc/rsyncd.conf这个配置文件,也能够指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf
可以使用的选项有: rsync --daemon --helphtml

 

来源:Linux系统平常管理linux

相关文章
相关标签/搜索