linux 系统⽇常管理--运维必备

【监控系统的状态】

1. w 查看当前系统的负载

 相信所有的linux管理员最常⽤的命令就是这个’w’ 了,该命令显⽰的信息还是蛮丰富 的。第⼀⾏从左⾯开始显⽰的信息依次为:时间,系统运⾏时间,登录⽤户数,平均 负载。第⼆⾏开始以及下⾯所有的⾏,告诉我们的信息是,当前登录的都有哪些⽤ 户,以及他们是从哪⾥登录的等等。其实,在这些信息当中,笔者认为我们最应该关 注的应该是第⼀⾏中的’load average:’后⾯的三个数值。

第⼀个数值表⽰1分钟内系统的平均负载值;

第⼆个数值表⽰5分钟内系统的平均负载 值;

第三个数值表⽰15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU 活动进程数。当然这个值越⼤就说明你的服务器压⼒越⼤。⼀般情况下这个值只要不 超过你服务器的cpu数量就没有关系,如果你的服务器cpu数量为8,那么这个值若小于8,就说明你的服务器没有压⼒,否则就要关注⼀下了。到这⾥你肯定会问,如何 查看服务器有几个cpu?

 就是⽤这个命令了。/proc/cpuinfo这个⽂件记录了cpu的详细信息。⽬前市⾯上的服 务器通常都是2颗4核cpu,在linux看来,它就是8个cpu。查看这个⽂件时则会显⽰8段 类似的信息,⽽最后⼀段信息中processor : 后⾯跟的是’7’。所以查看当前系统有⼏个 cpu,你可以使⽤这个命令:grep -c "processor" /proc/cpuinfo 。

 2. vmstat 监控系统的状态

上⾯讲的w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压 ⼒,但是具体是哪⾥(CPU, 内存,磁盘等)有压⼒就⽆法判断了。

通过vmstat就可以 知道具体是哪⾥有压⼒。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu.请重点关注⼀下红⾊标出的项。 

1)procs 显⽰进程相关信息

r:表⽰运⾏和等待cpu时间⽚的进程数,如果长期⼤于服务器cpu的个数,则说明cpu 不够⽤了;

b:表⽰等待资源的进程数,⽐如等待I/O, 内存等,这列的值如果长时间⼤于1,则需 要你关注⼀下了;

2)memory 内存相关信息

swpd :表⽰切换到交换分区中的内存数量;

free :当前空闲的内存数量;

buff :缓冲⼤⼩,(即将写⼊磁盘的);

cache :缓存⼤⼩,(从磁盘中读取的);

3)swap 内存交换情况 si :由内存进⼊交换区的数量;

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

4)io 磁盘使⽤情况

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

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

5)system 显⽰采集间隔内发⽣的中断次数

in :表⽰在某⼀时间间隔中观测到的每秒设备中断数;

cs :表⽰每秒产⽣的上下⽂切换次数;

6)CPU 显⽰cpu的使⽤状态

us :显⽰了⽤户下所花费

cpu 时间的百分⽐;

sy :显⽰系统花费

cpu时间百分⽐;

id :表⽰cpu处于空闲状态的时间百分⽐;

wa:表⽰I/O等待所占⽤cpu时间百分⽐;

st :表⽰被偷⾛的cpu所占百分⽐(⼀般都为0,不⽤关注); 

以上所介绍的各个参数中,笔者经常会关注r列,b列,和wa列,三列代表的含义在上 边说得已经很清楚。IO部分的bi以及bo也是我要经常参考的对象。如果磁盘io压⼒很 ⼤时,这两列的数值会⽐较⾼。

另外当si, so两列的数值⽐较⾼,并且在不断变化时, 说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

 笔者⽤vmstat时,经常⽤这样的形式,’vmstat 1 5’ 表⽰每隔1秒钟打印⼀次系统状态, 连续打印5次。当然你也可以 "vmstat 1"表⽰每隔1秒钟打印⼀次系统状态,⼀直打 印,除⾮你按ctrl + c强制结束。 

 3. top 显⽰进程所占系统资源

 这个命令⽤于动态监控进程所占系统资源,每隔3秒变⼀次。这个命令的特点是把占 ⽤系统资源(CPU,内存,磁盘IO等)最⾼的进程放到最前⾯。

top命令打印出了很多 信息,包括系统负载(load average)、进程数(Tasks)、cpu使⽤情况、内存使⽤情 况以及交换分区使⽤情况。

其实上⾯这些内容可以通过其他命令来查看,所以⽤top重 点查看的还是下⾯的进程使⽤系统资源详细状况。

这部分东西反映的东西还是⽐较多 的,不过需要你关注的也就是⼏项:%CPU, %MEM, COMMAND 这些项⽬所代表的 意义,不⽤笔者介绍相信你也能看懂吧。

 另外笔者使⽤top命令时还常常使⽤-bn1 这个组合选项,它表⽰⾮动态打印系统资源 使⽤情况,可以⽤在脚本中,你不妨记⼀下,以后也许你会⽤得到。 

4. sar 监控系统状态 

sar 命令很强⼤,它可以监控系统所有资源状态,⽐如平均负载、⽹卡流量、磁盘状 态、内存使⽤等等。

它不同于其他系统状态监控⼯具的地⽅在于,它可以打印历史信
息,可以显⽰当天从零点开始到当前时刻的系统状态信息。如果你系统没有安装这个 命令,请使⽤”yum install -y sysstat”命令安装。初次使⽤sar命令会报错,那是因为sar ⼯具还没有⽣成相应的数据库⽂件(时时监控就不会了,因为不⽤去查询那个库⽂ 件)。它的数据库⽂件在” /var/log/sa/”⽬录下,默认保存9天。因为这个命令太过复 杂,所以笔者只介绍几个。

1)查看⽹卡流量 sar -n DEV 

 IFACE这列表⽰设备名称,rxpck/s 表⽰每秒进⼊收取的包的数量,txpck/s 表⽰每秒发 送出去的包的数量,rxbyt/s 表⽰每秒收取的数据量(单位Byte),txbyt/s表⽰每秒发 送的数据量。后⾯⼏列不需要关注。如果有⼀天你所管理的服务器丢包⾮常严重,那 么你就应该看⼀看这个⽹卡流量是否异常了,如果rxpck/s 那⼀列的数值⼤于4000,或 者rxbyt/s那列⼤于5,000,000则很有可能是被攻击了,正常的服务器⽹卡流量不会⾼于 这么多,除⾮是你⾃⼰在拷贝数据。上⾯的命令是查看⽹卡流量历史的,如何时时查 看⽹卡流量呢?

 另外也可以查看某⼀天的⽹卡流量历史,使⽤-f选项,后⾯跟⽂件名,如果你的系统 格式Redhat或者CentOS那么sar的库⽂件⼀定是在/var/log/sa/⽬录下的。

 

2)查看历史负载 sar -q

 这个命令有助于我们查看服务器在过去的某个时间的负载状况。

5. free查看内存使⽤状况

 

只要你敲⼀个free然后回车就可以当前系统的总内存⼤⼩以及使⽤内存的情况。从上 图中可看到当前系统内存总⼤⼩为235128(单位是k)已经使⽤120368,剩余94760。 其实真正剩余并不是这个94760,⽽是第⼆⾏的213388,真正使⽤的也是第⼆⾏的 21740。这是因为系统初始化时,就已经分配出很⼤⼀部分内存给缓存,这部分缓存 ⽤来随时提供给程序使⽤,如果程序不⽤,那这部分内存就空闲。所以,查看内存使
用多少,剩余多少请看第⼆⾏的数据。另外你还可以加-m 或者-g选项分别以M或G为 单位打印内存使⽤状况。

 6. ps 查看系统进程 

作为系统管理员,⼀定要知道你所管理的系统都有那些进程在运⾏,在windows下只 要打开任务管理器即可查看。

在linux下呢?其实在上⾯介绍的top命令就可以,但是不 够专业,当然还有专门显⽰系统进程的命令。

 对了,就是这个’ps aux’。笔者也经常看到有的⼈喜欢⽤’ps -elf’ ⼤同⼩异,显⽰的信 息基本上是⼀样的。

ps命令还有更多的⽤法,笔者不再做介绍,因为你只要会⽤这个 命令就⾜够了,请man⼀下。下⾯介绍上图上出现的⼏个参数的意义。

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

STAT :表⽰进程的状态,进程状态分为以下⼏种(不要求记住,但要了解)

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

R 正在运⾏中的进程

S 已经中断的进程,通常情况下,系统中⼤部分进程都是这个状态

T 已经停⽌或者暂停的进程,如果我们正在运⾏⼀个命令,⽐如说sleep 10,如果我 们按⼀下ctrl -z 让他暂停,那么我们⽤ps查看就会显⽰T这个状态

W 这个好像是说,从内核2.6xx 以后,表⽰为没有⾜够的内存页分配

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

Z 僵⼫进程,杀不掉,打不死的垃圾进程,占系统⼀⼩点资源,不过没有关系。如果 太多,就有问题了。⼀般不会出现。

N 低优先级进程

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

s 主进程

l 多线程进程

+ 代表在前台运⾏的进程

这个ps命令是笔者在⼯作中⽤的⾮常多的命令之⼀,所以请记住它吧。关于ps命令的 使⽤,笔者经常会连同管道符⼀起使⽤,⽤来查看某个进程或者它的数量。

上⾯的6不对,需要减掉1,因为使⽤grep命令时,grep命令本⾝也算作了⼀个。

7. netstat 查看⽹络状况

 netstat命令⽤来打印⽹络连接状况、系统所开放端口、路由表等信息。

笔者最常⽤的 关于netstat的命令就是这个netstat -lnp(打印当前系统启动哪些端⼜)以及netstat an (打印⽹络连接状况)这两个命令⾮常有⽤,请⼀定要记住。

 如果你所管理的服务器是⼀台提供web服务(80端口)的服务器,那么你就可以使⽤ netstat -an |grep 80开查看当前连接web服务的有哪些IP了。 

8. 抓包⼯具tcpdump 

有时候,也许你会有这样的需求,想看⼀下某个⽹卡上都有哪些数据包,尤其是当你 初步判定你的服务器上有流量攻击。

这时,使⽤抓包⼯具来抓⼀下数据包,就可以知 道有哪些IP在攻击你了。

如果你没有tcpdump 这个命令,需要⽤’yum install -y tcpdump ’命令去安装⼀下。

上图 中第三列和第四列显⽰的信息为哪⼀个IP+port在连接哪⼀个IP+port,后⾯的信息是该 数据包的相关信息,如果不懂也没有关系,毕竟你不是专门搞⽹络的,⽽这⾥需要你 关注的只是第三列以及第四列。

-i 选项后⾯跟设备名称,如果你想抓eth1⽹卡的包, 后⾯则要跟eth1.⾄于-nn选项的作⽤是让第三列和第四列显⽰成IP+端⼜号的形式,如 果不加-nn则显⽰的是主机名+服务名称。 

【linux⽹络相关】

1. ifconfig 查看⽹卡IP 

ifconfig类似与windows的ipconfig,不加任何选项和参数只打印当前⽹卡的IP相关信息 (子网掩码、网关等)

 当然ifconfig后⾯可以跟设备名,只打印指定设备的IP信息。

 在windows下设置IP⾮常简单,然⽽在命令窗⼜下如何设置?

这就需要去修改配置⽂ 件/etc/sysconfig/network-scripts/ifcfg-eth0了,如果是eth1那么配置⽂件 是/etc/sysconfig/network-scripts/ifcfg-eth1.

如果想修改IP的话,则只需要修改IPADDR , NETMASK以及GATEWAY即可。如果你 的linux是通过dhcp服务器⾃动获得的IP,那么配置⽂件肯定和上图中的不⼀样, BOOTPROTO那⾥会是’dhcp’,如果你要配置成静态IP的话,这⾥就需要写成’none’。
关于如何设置IP以及⼦⽹掩码的这些知识属于⽹络相关的基础知识了,如果你对这⽅ ⾯⽐较陌⽣的话,建议你去看看⽹络相关的资料。

当修改完IP后需要重启⽹络服务新 IP才能⽣效,重启命令为’ service network restart’

 另外如果你有多个⽹卡的情况时,只想重启某⼀个⽹卡的话,还可以使⽤这个命令。

 ifdown 即停掉⽹卡,ifup即启动⽹卡。有⼀点要提醒你的是,如果你远程登录你的服 务器,当你使⽤ifdown eth0这个命令的时候,很有可能后⾯的命令ifup eth0不会被运 ⾏,这样导致你断⽹⽽⽆法连接服务器,所以请尽量使用service network restart 这个命 令来重启网卡。 

2. 给⼀个网卡设定多个IP

在linux系统中,⽹卡是可以设定多重IP的,笔者曾经管理的⼀台服务器的eth1就设定 了5个IP,实在是够变态的。

 把ifcfg-eth0复制成ifcfg-eth0:1 然后编辑ifcfg-eth0:1修改DEVICE以及IPADDR保存后重 启⽹卡。

 再次查看eth0上就有两个IP了。这⾥你要注意⼀下,⽂件名(ifcft-eth0:1)写成什么都 ⽆所谓,但是⽂件内的DEVICE=eth0:1⼀定要按照这样的格式写,否则你启动不起来 ⽹卡。 

3. 查看⽹卡连接状态

 mii-tool这个命令⽤来查看⽹卡是否连接,如图显⽰link ok等字样说明连接正常,否则 会显⽰’no link’字样,下图是笔者所管理的⼀台服务器,eth1⽹卡没有连接。

 

 如果你的机器是虚拟机,那么你使⽤该命令时应该显⽰成如下:

 这是因为使⽤的是虚拟⽹卡,不⽀持这个⼯具查看。不⽤多关注此,你记住这个miitool命令即可,它可是会经常⽤到的。 

4. 更改主机名 

当装完系统后,默认主机名为localhost,使⽤hostname就可以知道你的linux的主机名 是什么。

 同样使⽤hostname可以更改你的主机名。

 下次登录时就会把命令提⽰符 中的’localhost’更改成’Aming’。不 过这样修改只是保存在内存中,下次重启还会变成未改之前的主机名,所以需要你还 要去更改相关的配置⽂件’/etc/sysconfig/network’。

 把HOSTNAME=localhost.localdomain 修改成你想要的主机名,这样再重启就会读取这 个配置⽂件中的HOSTNAME. 

5. 设置DNS 

DNS是⽤来解析域名⽤的,平时我们访问⽹站都是直接输⼊⼀个⽹址,⽽dns把这个 ⽹址解析到⼀个IP。关于dns的概念,如果你很陌⽣的话,那就去⽹上查⼀下吧。

在 linux下⾯设置dns⾮常简单,只要把dns地址写到⼀个配置⽂件中即可。这个配置⽂件 就是/etc/resolv.conf

resolv.conf有它固有的格式,⼀定要写成’nameserver IP’的格式,上⾯那⾏以’;’为开头 的⾏是⼀⾏注释,没有实际意义,建议写两个或多个namserver ,默认会⽤第⼀个 namserver去解析域名,当第⼀个解析不到时会使⽤第⼆个。

在linux下⾯有⼀个特殊的 ⽂件/etc/hosts也能解析域名,不过是需要我们⼿动在⾥⾯添加IP+域名这些内容,它的 作⽤是临时解析某个域名,⾮常有⽤。

它的格式如上图,每⼀⾏作为⼀条记录,分成两部分,第⼀部分是IP,第⼆部分是域 名。关于hosts⽂件,有⼏点需要你注意:

1)⼀个IP后⾯可以跟多个域名,可以是⼏⼗个甚⾄上百个;

2)每⾏只能有⼀个IP,也就是说⼀个域名不能对应多个IP; 3)如果有多⾏中出现相同的域名(前⾯IP不⼀样),会按最前⾯出现的记录来解析。

【linux的防⽕墙】

1. selinux 

Selinux是Redhat/CentOS系统特有的安全机制。不过因为这个东西限制太多,配置也特 别繁琐所以⼏乎没有⼈去真正应⽤它。所以装完系统,我们⼀般都要把selinux关闭, 以免引起不必要的⿇烦。

关闭selinux的⽅法为:

把’SELINUX=enforcing’改成’SELINUX=disabled’,然后重启机器。临时关闭selinux的 命令为

getenforce命令可以得到selinux的状态,其中有两种(Enforcing|Permissive),前者表 ⽰开放,后者表⽰关闭,但是会发出警告。

setenforce⽤来设置selinux的状态,后⾯跟 0则设置成Permissive后⾯跟1设置成Enforcing。关闭selinux的命令为setenforce 0,但是 这只是临时关闭,重启后恢复,想要永久⽣效,请更改配置⽂件/etc/selinux/config。 

2. iptables 

Iptables是linux上特有的防⽕墙机制,其功能⾮常强⼤,然⽽笔者在⽇常的管理⼯作中 仅仅⽤到了⼀两个应⽤,这并不代表iptables不重要。

作为⼀个⽹络管理员,iptables是 必要要熟练掌握的。但是作为系统管理员,我们也应该会最基本的iptables操作,认识 iptables的基本规则。 

1)iptalbes的三个表 

filter :这个表主要⽤于过滤包的,是系统预设的表,这个表也是笔者⽤的最多的。内 建三个链INPUT、OUTPUT以及FORWARD。INPUT作⽤于进⼊本机的包;OUTPUT 作⽤于本机送出的包;FORWARD作⽤于那些跟本机⽆关的包。

nat :主要⽤处是⽹络地址转换,也有三个链。PREROUTING 链的作⽤是在包刚刚到 达防⽕墙时改变它的⽬的地址,如果需要的话。OUTPUT链改变本地产⽣的包的⽬的 地址。POSTROUTING链在包就要离开防⽕墙之前改变其源地址。该表笔者⽤的不 多,但有时候会⽤到。

mangle :这个表主要是⽤于给数据包打标记,然后根据标记去操作哪些包。这个表⼏ 乎不怎么⽤。除⾮你想成为⼀个⾼级⽹络⼯程师,否则你就没有必要花费很多⼼思在 它上⾯。

2)iptables 基本语法 

A. 查看规则以及清除规则

 如上图,-t 后⾯跟表名,-nvL 即查看该表的规则,其中-n表⽰不针对IP反解析主机 名;-L表⽰列出的意思;⽽-v表⽰列出的信息更加详细。如果不加-t ,则打印filter表 的相关信息。

 这个和-t filter 打印的信息是⼀样的。 关于清除规则的命令中,笔者⽤的最多就是

 不加-t默认是针对表filter来操作的,-F 表⽰把所有规则全部删除;-Z表⽰把包以及流 量计数器置零(这个笔者认为很有⽤)。 

B. 增加/删除⼀条规则

 这就是增加了⼀条规则,省略-t所以针对的是filter表。-A 表⽰增加⼀条规则,另外还 有-I 表⽰插⼊⼀条规则,-D删除⼀条规则;后⾯的INPUT即链名称,还可以是 OUTPUT或者FORWORD;-s 后跟源地址;-p 协议(tcp, udp, icmp); --sport/-dport 后跟源端⼜/⽬标端⼜;-d 后跟⽬的IP(主要针对内⽹或者外⽹);-j 后跟动作(DROP即把包丢掉,REJECT即包拒绝;ACCEPT即允许包)。这样讲可能很乱,那笔者多举⼏个例⼦来帮你理解:

 上例表⽰:插⼊⼀条规则,把来⾃10.0.2.36的所有数据包丢掉。

 删除刚刚插⼊的规则。注意要删除⼀条规则时,必须和插⼊的规则⼀致,也就是说, 两条iptables命令,除了-I 和-D不⼀样外,其他地⽅都⼀样。

上例表⽰把来⾃10.0.2.36 并且是tcp协议到本机的80端⼜的数据包丢掉。这⾥要说的 是,--dport/--sport 必须要和-p选项⼀起使⽤,否则会出错。

 把发送到10.0.2.34的22端⼜的数据包丢掉。下⾯做⼀个⼩试验:

 ⼀开始⽤本机ping 10.0.2.34是通的,然后使⽤iptables增加⼀条规则,使到10.0.2.34的 icmp包丢掉,再ping 10.0.2.34则不通了。此时⽤’iptables –nvL’查看iptalbes规则。

 会有⼀条这样的记录,看pkts那列显⽰4个数据包,因为我们ping 的时候给10.0.2.34发 送了4个数据包,第⼆列表⽰这4个数据包⼀共有多⼤(336bytes)。此时使⽤’iptables -Z' 清零。

 现在你明⽩’iptables -Z’的意义了吧。⾄于FORWORD链的应⽤笔者⼏乎没有⽤到过, 所以不再举例。再总结⼀下各个选项的作⽤: 

-A/-D :增加删除⼀条规则;

-I :插⼊⼀条规则,其实跟-A的效果⼀样;

-p :指定协议,可以是tcp,udp或者icmp;

--dport :跟-p⼀起使⽤,指定⽬标端⼜;

--sport :跟-p⼀起使⽤,指定源端⼜;

-s :指定源IP(可以是⼀个ip段);

-d :指定⽬的IP(可以是⼀个ip段);

-j :后跟动作,其中ACCEPT表⽰允许包,DROP表⽰丢掉包,REJECT表⽰拒绝包;

-i :指定⽹卡(不常⽤,但有时候能⽤到);

上例中表⽰,把来⾃10.0.2.0/24这个⽹段的并且作⽤在eth0上的包放⾏。有时候你的服 务器上iptables过多了,想删除某⼀条规则时,又不容易掌握当时创建时的规则。其实 有⼀种⽐较简单的⽅法:

查看结果如下:

 删除某⼀个规则的⽅法是:

 -D 后跟链名,然后是规则num,这个num就是查看iptables规则时第⼀列的值。

iptables还有⼀个选项经常⽤到,-P(⼤写)选项,表⽰预设策略。⽤法如下:

 -P后⾯跟链名,策略内容或者为DROP或者为ACCEPT,默认是ACCEPT。

注意:如果 你在连接远程服务器,千万不要随便敲这个命令,因为⼀旦你敲完回车你就会断掉。

 看到上图中红框标出的部分了吧,现在所有进来的数据包全部DROP了。这个策略⼀ 旦设定后,只能使⽤iptables -P ACCEPT才能恢复成原始状态,⽽不能使⽤-F参数。

下 ⾯笔者针对⼀个⼩需求讲述⼀下这个iptables规则如何设定。 需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对 10.0.2.0/24开通22端⼜,对所有⽹段开放80端⼜,对所有⽹段开放21端⼜。 这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式。

 完成脚本的编写后,直接运⾏ ‘sh /usr/local/sbin/iptables.sh ’ 即可。如果想开机启动时 初始化防⽕墙规则,则需要在/etc/rc.d/rc.local中添加⼀⾏ ‘sh /usr/local/sbin/iptables.sh’ 。

关于icmp的包有⼀个⽐较常见的应⽤。

 --icmp-type 这个选项是要跟-p icmp ⼀起使⽤的,后⾯指定类型编号。这个8指的是能 在本机ping通其他机器,⽽其他机器不能ping通本机。这个有必要记⼀下。 

C. nat表的应⽤

其实,linux的iptables功能是⼗分强⼤的,笔者曾经的⼀个⽼师这样形容linux的⽹络功 能:只有想不到没有做不到!也就是说只要你能够想到的关于⽹络的应⽤,linux都能 帮你实现。在⽇常⽣活中相信你接触过路由器吧,它的功能就是分享上⽹。本来⼀根 ⽹线过来(其实只有⼀个公⽹IP),通过路由器后,路由器分配了⼀个⽹段(私⽹ IP),这样连接路由器的多台pc都能连接intnet⽽远端的设备认为你的IP就是那个连接 路由器的公⽹IP。这个路由器的功能其实就是由linux的iptables实现的,⽽iptables又是 通过nat表作⽤⽽实现的这个功能。

⾄于具体的原理以及过程,笔者不想阐述,请查看相关资料。笔者在这⾥只举⼀个例 ⼦来说明iptables如何实现的这个功能。假设你的机器上有两块⽹卡eth0和eth1,其中 eth0的IP为10.0.2.68 ,eth1的IP为192.168.1.1 。eth0连接了intnet 但eth1没有连接,现在 有另⼀台机器(192.168.1.2)和eth1是互通的,那么如何设置也能够让连接eth1的这台 机器能够连接intnet(即能和10.0.2.68互通)?

 其实就是这样简单的两个命令就能实现上⾯的需求。第⼀个命令涉及到了内核参数相关的配置⽂件,它的⽬的是为了打开路由转发功能,否则⽆法实现我们的应⽤。第⼆ 个命令则是iptables对nat表做了⼀个IP转发的操作,-o 选项后跟设备名,表⽰出⼜的⽹ 卡,MASQUERADE表⽰伪装的意思。

关于nat表,笔者不想讲太多内容,你只要学会这个路由转发即可。其他的东西交给⽹ 络⼯程师去学习吧,毕竟你将来可是要做linux系统⼯程师的。

D. 保存以及备份iptalbes规则 

也许你不知道,咱们设定的防⽕墙规则只是保存在内存中,并没有保存到某⼀个⽂件 中,也就说当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存⼀ 下。

 它会提⽰你把规则保存在了/etc/sysconfig/iptables⽂件内。其实,这个⽂件就是iptables 的配置⽂件了,你不妨查看⼀下它。

 红线部分就是咱们刚才设定那条规则!有时可能因为我们设置防⽕墙规则有误导致服 务器出问题,这时候不妨先备份⼀下这个配置⽂件,然后停⽌防⽕墙服务。

 这样防⽕墙就失效了,但是⼀旦你重新设定规则后(哪怕只有⼀条),防⽕墙又开始 ⼯作了。

 我还可以使⽤iptables-save >filename 这条命令来保存⼀个防⽕墙规则,这样就可以起 到备份的作⽤了。要想恢复这个规则使⽤下⾯这个命令即可。

 【linux系统的任务计划】 

这部分内容太重要了,其实⼤部分系统管理⼯作都是通过定期⾃动执⾏某⼀个脚本来 完成的,那么如何定期执⾏某⼀个脚本呢?这就要借助linux的cron功能了。

 关于cron任务计划功能的操作都是通过crontab这个命令来完成的。其中常⽤的选项 有:

-u :指定某个⽤户,不加-u选项则为当前⽤户;

-e :制定计划任务;

-l :列出计划任务;

-r :删除计划任务。

 使⽤crontab -e 来制定计划任务,上⾯的例⼦表⽰在05⽉26⽇(这天必须是周四)的10 点01分执⾏’ echo "ok" >/root/cron.log’这样的任务。 Cron的格式是这样的,每⼀⾏代表⼀个任务计划,总共分成两部分,前⾯部分为时 间,后⾯部分要执⾏的命令。后⾯的命令不⽤多讲,⾄于前⾯的时间是有讲究的,这个时间共分为5段,⽤空格隔开(可以是多个空格),第⼀段表⽰分钟(0-59),第⼆段 表⽰⼩时(0-23),第三段表⽰⽇(1-31),第四段表⽰⽉(1-12),第五段表⽰周(0-7,0或者 7都可以表⽰为周⽇)。从左⾄右依次是:分,时,⽇,⽉,周(⼀定要牢记)! crontab -e 实际上是打开了/var/spool/cron/username (如果是root则打开的 是/var/spool/cron/root)这个⽂件。使⽤的是vim编辑器,所以要保存的话则在命令模 式下输⼊:wq即可。但是,你千万不要直接去编辑那个⽂件,因为可能会出错,所以 ⼀定要使⽤crontab -e来编辑。查看已经设定的任务计划使⽤crontab -l

 删除计划任务要⽤crontab -r

 下⾯笔者给你出⼀些练习题,帮助你熟悉这个cron的应⽤。

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

2. 每周⽇3点执⾏’/bin/sh /usr/local/sbin/backup.sh’;

3. 每⽉14号4点10分执⾏’/bin/sh /usr/local/sbin/backup_month.sh’;

4. 每隔8⼩时执⾏’ntpdate time.windows.com’;

5. 每天的1点,12点,18点执⾏’/bin/sh /usr/local/sbin/test.sh’;

6. 每天的9点到18点执⾏’/bin/sh /usr/local/sbin/test2.sh’;

答案: 1. 20 1 * echo “”>/var/log/slow.log

2. 0 30 0 /bin/sh /usr/local/sbin/backup.sh

3. 10 04 14 /bin/sh /usr/local/sbin/backup_month.sh

4. 0 /8 ntpdate time.windows.com

5. 0 1,12,18 /bin/sh /usr/local/sbin/test.sh

6. 0 9-18 * /bin/sh /usr/local/sbin/test2.sh 

Cron的这部分内容并不难,你只要会了这6道练习题,你就算掌握它了。这⾥要简单 说⼀下,每隔8⼩时,就是⽤全部⼩时(0-23)去除以8,你仔细想⼀下结果,其实算 出来应该是0,8,16三个数。当遇到多个数(分钟、⼩时、⽉、周)例如第5题,则需要 ⽤逗号隔开。⽽时间段是可以⽤’-‘的⽅式表⽰的。等设置好了所有的计划任务后需要 查看⼀下crond服务是否启动,如果没有启动,需要启动它。

 如何启动稍后会做介绍。除了⽤户⾃定义的计划任务外,其实系统本⾝也有计划任务 的。

 系统会安装这个配置⽂件中的计划去执⾏内定的任务。 

【linux的系统服务管理】

如果你对windows⾮常熟悉的话,相信你肯定配置过开机启动的服务,有些服务我们 ⽇常⽤不到则要把它停掉,⼀来可以节省资源,⼆来可以减少安全隐患。在linux上同 样也有相关的⼯具来管理系统的服务。 1. ntsysv

⽤来配置哪些服务开启或者关闭,有点想图形界⾯,不过是使⽤键盘来控制的。如果 没有这个命令请使⽤ yum install -y ntsysv 安装它。

 敲完这个命令后则显⽰出如上图中的画⾯。在屏幕的最上⾯有’Red Hat’等字样,这是 在告诉我们这个⼯具是由Red Hat公司开发的。按键盘的上下⽅向键可以调节红⾊光 标,按空格可以选择开启或者不开启,如果前⾯的中括号内显⽰有’*’ 则表⽰开启否 则不开启。通过这个⼯具也可以看到⽬前系统中所有的服务。建议除’crond, iptables, network, sshd, syslog, irqbalance, sendmail, microcode_ctl’ 外其他服务全部停掉。选择好 后,按’tab’键选择ok然后回车。需要重启机器才能⽣效。 

2. chkconfig 

Linux系统所有的预设服务可以查看/etc/init.d/⽬录得到

 其实这就是系统所有的预设服务了。为什么这样讲,因为系统预设服务都是可以通过 这样的命令实现 ‘service 服务名 start|stop|restart’ ,这⾥的服务名就是/etc/init.d/⽬录下 的这些⽂件了。除了可以使⽤’service crond start ‘启动crond外,还可以使 ⽤/etc/init.d/crond start 来启动。

 如上图,这两个命令出来的结果是⼀样的。

 再看看这个chkconfig命令,它不仅可以列出来所有的服务,还可以详细到每个级别。 这⾥的级别(0,1,2,3,4,5,6)就是inittab⾥⾯介绍的那⼏个启动级别了。

这样还可以查看某⼀个服务的启动情况。

⽤--level 指定级别,后⾯是服务名,然后是off或者on,--level后还可以跟多个级别。

另外还可以省略级别,默认是针对2,3,4,5级别操作。

另外这个chkconfig 还有⼀个功能就是可以把某个服务加⼊到系统服务,即可以使⽤ service 服务名 start 这样的形式,并且可以在chkconfig --list 中查找到。当然也能删除掉。

 这个功能常⽤在把⾃定义的启动脚本加⼊到系统服务当中。关于系统服务就讲这些内 容,其实还有很多内容笔者没有介绍,道理很简单,⼀来讲多了你不能消化⼆来讲多 了你也⽤不上。 

【linux中的数据备份】 

数据备份,不⽤说太多吧,毫⽆疑问很重要。笔者就曾经有过⼀次⾮常痛苦的经历, 备份策略没有做好,结果磁盘坏掉数据丢失,简直是撕⼼裂肺的痛呀。还好数据重要 性不是特别⾼,即使是不⾼也是丢失了数据,这是作为系统管理员最不应该出现的事 故。所以,在你以后的系统维护⼯作中,⼀定要把数据备份当回事,认真对待。在 linux上作为数据备份的⼯具很多,但笔者就只⽤⼀种那就是rsync 从字⾯上的意思你 可以理解为remote sync (远程同步)这样可以让你理解的更深刻⼀些。Rsync不仅可 以远程同步数据(类似于scp),当然还可以本地同步数据(类似于cp),但不同于cp 或scp的⼀点是,rsync不像cp/scp⼀样会覆盖以前的数据(如果数据已经存在),它会 先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。 如果你的linux上下⾯看例⼦吧。(如果没有rsync命令请使⽤yum install -y rsync安装)

上⾯例⼦表⽰把当前⽬录下的123同步到/tmp/⽬录下,并且同样也命名为123。如果是 远程拷贝的话就是这样的形式了 IP:path(如:10.0.2.34:/root/)

 当建⽴连接后,是需要输⼊密码的。如果⼿动去执⾏这些操作还好,但是如果是写在 脚本中怎么办?这就涉及到添加信任关系了,该部分内容稍后会详细介绍。 

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

猜你喜欢

转载自www.cnblogs.com/datacenter/p/13393058.html