您的位置:首页 > 运维架构 > Linux

Linux运维-Linux系统日常管理

2017-04-26 17:52 681 查看
监控系统状态 – 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时间百分比.

监控系统状态 – top

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

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

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

监控系统状态 – 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 多线程进程

在前台的进程

netstat 查看网络状况

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

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

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”

Selinux

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

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

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

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−POUTPUTACCEPT;ipt -P FORWARD ACCEPT;

ipt−AINPUT−s192.168.0.0/24−ptcp–dport22−jACCEPTipt -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 这样可以恢复指定的规则

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

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

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

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

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

学会使用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

几个和网络相关的命令

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

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 –help
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息