【监控系统的状态】

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

linux 系统⽇常管理--运维必备的更多相关文章

  1. 未来Linux系统将是运维行业必备的技能之一

    关于linux,这个并不是每个人都能用或者需要用的,因为平时有很多人用电脑只是为了上上网,聊聊天,打打游戏,这个是完全不需要用linux的.关于linux,是不能用正常的大家所熟知的window来认知 ...

  2. linux系统中日常运维常用命令汇总一

    一.查看日志和机器相关信息常用命令 1.cat cat 命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往 ...

  3. centos7系统管理和运维实战——运维必备的网络管理技能(1)

    运维必备的网络管理技能 一.网络管理协议: 1.简单的两个概念:    DHCP(动态主机配置协议):如果网络结构要更改,需要从新初始化网络参数,手机用动态主机配置协议可以避免这个问题.客户端可以从D ...

  4. Linux实战型企业运维工程师试题测评

    Linux实战型企业运维工程师试题答案 作者:尹正杰      最近在网上看到了一套有意思的面试题,我们一起来看一下这些题怎么破吧,哈哈~我先放在这里,有时间了一起来看看.多学点东西终究是没有坏处的! ...

  5. centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课

    centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...

  6. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  7. centos linux系统日常管理复习 CPU物理数逻辑核数,iftop ,iotop ,sar ,ps,netstat ,一网卡多IP,mii-tool 连接,ethtool速率,一个网卡配置多个IP,mii-tool 连接,ethtool速率 ,crontab备份, 第十八节课

    centos linux系统日常管理复习 物理CPU和每颗CPU的逻辑核数,uptime ,w,vmstat,iftop ,iotop ,sar ,ps,netstat ,一个网卡配置多个IP,mii ...

  8. centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课

    centos linux系统日常管理3  服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...

  9. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

  10. 第一阶段考试:实战Linux系统日常管理

    1. [项目名称] 实战Linux系统日常管理 [项目说明] 1.安装部署rhel系统,组建RAID磁盘阵列. 2.安装nginx 通过脚本编写 nginx服务服务启动脚本 [项目考核技能点] 1.安 ...

随机推荐

  1. 年羹尧奏摺专集(下).PDF

    书本详情 年羹尧奏摺专集(下)作者: 国立故宫博物院出版社: 国立故宫博物院出版年: 1971页数: 1180装帧: 精装ISBN: 9788017310909

  2. 成品直播源码推荐,java 实现邮件服务

    成品直播源码推荐,java 实现邮件服务 1. 引入maven 依赖  <!--邮件服务--><dependency>   <groupId>org.springf ...

  3. 国产电源芯片DP4054 软硬件兼容TP4054 规格书资料

    DP4054 是一款完整的采用恒定电流/恒定电压单 节锂离子电池充电管理芯片.其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054 可以适合USB 电源和适配器电源工作.跟进口 ...

  4. SED fitting

    Using the Robitaille (2017) YSO SED models https://notebook.community/hyperion-rt/paper-2017-sed-mod ...

  5. 蓝桥杯训练赛二-2021 问题 G: 坐标排序

    题目描述 请将坐标x,y,z依照以下规则排序: x为第一关键字,当x相同时,依照y(第二关键字)大小来排序,当y相同时,依照z大小来排序(第三关键字) 给出了若干坐标,和一个数k,请输出按关键字排序第 ...

  6. 后台运行python服务 起停脚本

    启动脚本 start.sh #!/bin/bash nohup <command> > /dev/null 2>&1 & echo $! > comman ...

  7. https原理(六)系统分析

    先解决此前的问题: 1 http原理(三)双向实践(curl) need时java 客户端可访问,但没客户端证书:want时有 后来发现,没有给truststore,猜测为,当springboot读到 ...

  8. CxImageJPG

    typedef struct tag_ExifInfo { char Version [5]; //EXIF 信息版本 char CameraMake [32]; //DC 制造商 char Came ...

  9. 华三防火墙主备ACL

    dis cur | in policy 查看 policy-based-route 有线网络 permit node 5 policy-based-route 有线网络 permit node 10 ...

  10. No.1.2

    列表标签 无序列表 标签名 说明 ul 表示无序列表的整体,用于包裹li标签 li 表示无序列表的每一项,用于包含每一行的内容 有序列表 标签名 说明 ol 表示有序列表的整体,用于包裹li标签 li ...