1、 监控系统的负载 w 查看当前系统的负载,详细显示主机运行时间,登录用户数,系统平均负载信息; uptime 查看当前系统的负载和主机运行时间,简单显示;
显示说明: 17:30:02 //系统当前时间; up 8:06 //主机已运行时间,时间越大,说明机器越稳定。 3 users //用户连接数(是总的连接数,不是用户数) load average: 0.05, 0.08,0.02 //系统平均负载,统计最近1,5,15分钟内系统的平均负载; 第二行开始以及下面所有的行,记录当前登录的用户,从哪里登录,登录的时间等等; 重点需要关注load average:指在特定时间间隔内运行队列中的平均进程数。 第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。 cat /proc/cpuinfo 查看cpu的个数和核数 processor 线程数,从0开始(比如8线程为0-7) core id 核心数 [root@yonglinux ~]# cat/proc/cpuinfo |grep -c 'processor' 1 [root@yonglinux ~]# cat /proc/cpuinfo |grep -c 'core id'
1
2、 监控系统进程状态 – top 用于动态监控进程所占系统资源,每隔3秒变一次。
Tasks 任务,类似于windows的进程; running 正在运行的进程; sleeping 休眠的进程; stopped 暂停或停止的进程; zombie 僵尸进程; RES 这一项为进程所占内存大小; %MEM 为使用内存百分比。 在 top状态下,默认按cpu的使用率大小排列,按 “shift + m”, 可以按照内存使用大小排序。按数字‘1’ 可以列出各颗cpu的使用状态。 top -bn1 表示非动态打印系统资源使用情况,可以用在shell脚本中。 top -c 动态显示,最右侧的命令可以显示更详细的信息。 3、实时监控系统状态 vmstat vmstat 监控一次 vmstat 1 实时监控,1秒刷新一次,按ctrl+c退出; vmstat 1 10 每隔1秒采集一次,只监控10次;
vmstat各指标含义: r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了; b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了 si :由交换区进入内存的数量; so :由内存进入交换区的数量; bi :从块设备读取数据的量(读磁盘); bo: 从块设备写入数据的量(写磁盘); in : 每秒的中断次数,包含时钟中断; cs : 每秒的上下文切换次数; wa :表示I/O等待所占用cpu时间百分比.
4、查看系统内存使用情况 free
free默认以k为单位显示; free -m 以M为单位显示; free -g 以G为单位显示; mem(total):内存总数; mem(used):已经分配的内存; mem(free):未分配的内存; mem(buffers):系统分配但未被使用的buffers; mem(cached)系统分配但未被使用的cache; buffers/cache(used):实际使用的buffers与cache 总量,也是实际使用的内存; buffers/cache(free):未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存;(如图所示,free+buffers+cached的总和为当前可用的实际内存) 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 多线程进程 + 在前台的进程
pstree 树形显示所有进程
6、监控网卡流量、历史负载 sar 安装sar的命令:yuminstall -y sysstat sar -n DEV 查看网卡流量 sar -n DEV 1 实时监控网卡的流量,1秒刷新一次,按ctrl+c退出; sar -n DEV 1 10 查看网卡的流量,1秒刷新一次,查看10次; sar -n DEV -f /var/log/sa/sa16 查看系统日志里面保存的网卡流量信息,按照每天的日期命名; 查看历史负载 sar-q 查看磁盘读写 sar-b 7、查看网络状况 netstat netstat -lnp 查看当前系统开启的端口以及socket
netstat -an 查看当前系统所有的连接
Linux下关于网卡配置的使用方法 1、查看网卡IP地址 ifconfig 网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0 如果有多个网卡的话为eth1、eth2 。。。 如果linux有多个网卡,只想重启某一个网卡使用命令# ifdown eth0; ifup eth0
ifdown 停掉网卡,ifup 启动网卡;
如果我们远程登录服务器,使用ifdown eth0 停掉网卡后,后面的命令不会被运行,会导致断网无法连接服务器。所以请尽量使用service network restart 重启网卡; 2、给一个网卡设定多个IP [root@yonglinux ~]# cd/etc/sysconfig/network-scripts/ [root@yonglinux network-scripts]# cp ifcfg-eth0 ifcfg-eth0\:1 编辑ifcfg-eth0:1 这个配置文件,更改里面的DEVICE=eth0:1 设置新的IP地址192.168.20.30 ; [root@yonglinux network-scripts]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:43:3D:32 inetaddr:192.168.20.20 Bcast:192.168.20.255 Mask:255.255.255.0 inet6 addr:fe80::20c:29ff:fe43:3d32/64 Scope:Link UP BROADCAST RUNNINGMULTICAST MTU:1500 Metric:1 RX packets:62506 errors:0dropped:0 overruns:0 frame:0 TX packets:82867 errors:0dropped:0 overruns:0 carrier:0 collisions:0txqueuelen:1000 RX bytes:38679452 (36.8MiB) TX bytes:47133078 (44.9 MiB) Interrupt:18 Baseaddress:0x2000 eth0:1 Link encap:Ethernet HWaddr 00:0C:29:43:3D:32 inet addr:192.168.20.30 Bcast:192.168.20.255 Mask:255.255.255.0 UP BROADCAST RUNNINGMULTICAST MTU:1500 Metric:1 Interrupt:18 Baseaddress:0x2000 可以看到多了一个IP,可以用远程ssh访问这个192.168.20.30; 3、查看网卡连接状态 mii-tool eth0 [root@yonglinux ~]# mii-tool eth0 SIOCGMIIPHY on 'eth0' failed: Operation not supported 由于是虚拟机所以显示"operation notsupported",真实机器会显示 eth0: negotiated 100baseTx-FD, link ok ;”link ok“说明网卡为连接状态,如果显示“no link“说明网卡坏掉了或没有连接网线。 4、更改主机名 hostname 查看系统的主机名; hostname 主机名 可以更改主机名,下次登录时会更改登录提示符;这样更改只是暂时保存在内存中,重启后不会生效; [root@yonglinux ~]# hostname yonglinux.com [root@yonglinux ~]# hostname Angel [root@yonglinux ~]# hostname Angel [root@Angel ~]# hostname Angel 永久更改主机名,需要编辑配置文件 /etc/sysconfig/network,更改HOSTNAME,保存退出后重启生效; NETWORKING=yes HOSTNAME=yonglinux.com 5、设置DNS DNS为域名解析,把域名解析为ip地址; 配置文件为/etc/resolv.conf [root@yong ~]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 192.168.20.2 可以添加多个DNS地址,格式为:nameserver ip地址 linux下还有一个特殊的文件 /etc/hosts 也可以解析域名 手动在里面添加ip地址 域名地址;主要作用是临时解析某个域名。 几点要注意的: 1)一个ip后面可以跟多个域名,空格分隔开,可以是几十个甚至几百个; 2)每行只能有一个IP,也就是说一个域名不能对应多个IP; 3)如果有多行中出现相同的域名(ip不一样)会按最前面出现的记录来解析; Linux下iptables详解 iptables(netfilter网络过滤器) iptables是linux上特有的防火墙机制,功能非常强大。CentOS默认是没有iptables规则。 iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。 常用选项: iptables -nvL 查看规则(-n为数字显示输出的ip地址和端口-v 为可视化显示 -L为列出所有的规则) iptables -F 清除规则(flush清除);清除只是临时的,重启系统或者重启iptables服务后还会加载已经保存的规则。清除之后要保存规则。 /etc/init.d/iptables save 或 service iptables save 保存规则 防火墙规则保存在配置文件 /etc/sysconfig/iptables iptables -Z 计数器清零(zero) service iptables stop 暂停防火墙服务,并清除防火墙规则,但是重启后会读取/etc/sysconfig/iptables从而启动防火墙。即使我们停止防火墙,但是一旦添加任何一条规则,它也会开启。 iptables -t 指定表名(table),默认不加-t 则是filter表; 直观图便于理解,4个表,5个链;
filter 这个表主要用于过滤包的,是系统预设的表,内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。 nat 主要用处是网络地址转换、端口映射,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。 mangle 主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(TimeToLive,生存周期)值以及为数据包设置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 -jDROP 插入规则 iptables -IINPUT -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参数; 把ip为192.168.20.0网段所有数据包都丢掉 [root@yong ~]# iptables -I INPUT -s 192.168.20.0 -j DROP 删除规则的话,要与添加规则的后缀一样才可以; [root@yong ~]# iptables -D INPUT -s 192.168.20.0 -j DROP 把1.1.1.1 访问本地tcp协议80端口的所有数据包都丢掉; [root@yong ~]# iptables -I INPUT -s 1.1.1.1 -p tcp --dport 80 -j DROP 把发送到10.0.1.14的22端口的所有数据包丢掉; [root@yong ~]# iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP 使用这个命令查看规则带有id号显示; [root@yong ~]# iptables -nvL --line-number Chain INPUT (policy ACCEPT 84 packets, 5944 bytes) num pkts bytes target prot opt in out source destination 1 0 0 DROP tcp -- * * 1.1.1.1 0.0.0.0/0 tcp dpt:80 2 0 0 DROP all -- * * 192.168.20.0 0.0.0.0/0 然后删除的时候使用iptables -D INPUT 1 删除上面的1规则,不用写很长的后缀。 禁止别人ping你的主机,你可以ping别人;只需要添加一条规则;icmp-type 8 可以实现; [root@yong ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP 示例,编一个脚本,针对filter表,所有的INPUT链DROP,其他两个链ACCEPT,然后针对192.168.20.0/24网段开通22端口可以连接主机;对所有网段开放80端口;对所有网段开通21端口; [root@yong ~]# vim iptables.sh #! /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.20.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 [root@yong ~]# sh iptables.sh 运行脚本即可,如果想开机运行防火墙规则的话,在/etc/rc.d/rc.local 添加一行“/bin/sh/root/iptables.sh” spacer.gif nat表应用:(现实生活中用处还是比较大) 路由器就是使用iptables的nat原理实现. 假设您的机器上有两块网卡eth0和eth1,其中eth0的IP为192.168.4.11。eth0连接了internet但eth1没有连接,现在有另一台机器(192.168.20.10)和eth1是互通的,那么如何设置也能够让连接eth1的这台机器能够连接internet? [root@yong ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@yong ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@yong ~]# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0-j MASQUERADE /proc/sys/net/ipv4/ip_forward 为内核参数相关的文件,默认为0,1为打开路由转发功能。 第2条命令为iptables对nat表做了一个IP转发的操作,-o 后面跟设备名,表示出口的网卡。MASQUERADE表示伪装的意思;让192.168.20.0网段通过eth0伪装出去连接上网。 iptables规则备份与恢复: service iptables save 这样会保存到/etc/sysconfig/iptables ,如果以后遇到备份防火墙规则的任务,就是拷贝一份这个文件的副本。 iptables-save > myipt.rule 可以把防火墙规则保存到指定文件中; iptables-restore < myipt.rule 这样可以恢复指定的规则; [root@yong ~]# iptables-save > myipt.rule [root@yong ~]# service iptables stop iptables: Setting chains to policy ACCEPT: nat filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@yong ~]# iptables-restore < myipt.rule Linux下的系统服务管理及日志管理 1、 ntsysv服务配置工具 用来配置哪些服务开启或关闭,图形界面,使用键盘来操作。 安装ntsysv服务的命令:yum install-y ntsysv 直接运行命令ntsysv 弹出配置界面;
按键盘的上下方向键进行移动,按空格键选择,中括号内显示有 * 表示开启,否则不开启。通过这个工具可以看到目前系统中的所有服务。建议除“crond,iptables,network,sshd,syslog,irqbalance,sedmail,microcode_ctl”外其他服务全部停掉。按tab键切换到OK,保存,重启机器才能生效; 1、 chkconfig服务管理工具
linux系统所有的预设服务可以查看/etc/init.d/目录得到; 系统预设的服务可以通过命令:service 服务名start|stop|restart|status 进行服务的停止或启动及查看状态; 这里的服务名就是/etc/init.d/目录下的系统预设服务,所以也可以使用/etc/init.d/服务名start|stop|restart 启动或停止服务; 可以使用chkconfig 或 chkconfig--list 列出所有的服务以及每个级别是否开启:
这里的级别(0-6)就是/etc/inittab 对应的级别,0,1,6运行级别被系统保留,0为shutdown关机,1为重启到单用户模式,6为重启;在一般的linux系统实现中,都是用2,3,4,5几个级别;2级别为不带NFS的多用户模式;3为完全多用户模式(最常用),4保留给用户自定义,5为图形界面登录。 chkconfig --level 指定级别 服务名 on或者off 更改哪个级别下的服务是否开启; --level 可以省略,默认针对2,3,4,5级别操作; 示例:关闭crond服务;开启3级别下的crond服务;开启345级别的crond服务; [root@yong ~]# chkconfig --list |grep crond crond 0:off1:off2:on3:on4:on5:on6:off [root@yong ~]# chkconfig crond off [root@yong ~]# chkconfig --list |grep crond crond 0:off1:off2:off3:off4:off5:off6:off [root@yong ~]# chkconfig --level 3 crond on [root@yong ~]# chkconfig --list |grep crond crond 0:off1:off2:off3:on4:off5:off6:off [root@yong ~]# chkconfig --level 345 crond on [root@yong ~]# chkconfig --list |grep crond crond 0:off1:off2:off3:on4:on5:on6:off chkconfig还有一个功能可以把某个服务加入到系统服务,自定义的服务如果想要加到系统服务里面,拷贝可执行的服务到/etc/init.d/目录里面;加入系统服务之后可以使用:service 服务名 start 操作,并且也可以在chkconfig --list列表中查找到,当然也可以删除掉; chkconfig --del 服务名 删除服务 chkconfig --add 服务名 添加服务 这个功能常用在把自定义的启动脚本加入到系统服务中。 [root@yong ~]# chkconfig --del crond [root@yong ~]# chkconfig --list |grep crond [root@yong ~]# chkconfig --add crond [root@yong ~]# chkconfig --list |grep crond crond 0:off1:off2:on3:on4:on5:on6:off 1、 linux系统日志 2、 日志主要的功能有:审计和检测,还可以实时的监测系统状态,监测和追踪侵入者等等; 常用日志文件有/var/log/message 核心系统日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO错误、网络错误和系统系统错误都会记录到这个文件中。另外其他信息,比如某个人的身份切换为root以及用户定义安装的软件日志也会在这里列出。 [root@yong ~]# ls /var/log/messages messages messages-20150407 messages-20150420 messages-20150330 messages-20150413 连同messages一共有5个日志文件,系统有一个日志轮询机制,每星期切换一个日志,按照日期格式生成。 系统轮询是通过logrotate工具的控制来实现的,配置文件为/etc/logrotate.conf 没有特殊需求请不要修改。 /var/log/messages 是由rsyslogd这个守护进程产生的,如果停掉这个服务则系统不会产生/var/log/messages,所以这个服务不要停。 rsyslogd服务的配置文件为/etc/rsyslogd.conf 定义了日志的级别;如果没有特殊需求也不要修改此配置文件。 dmesg 显示系统的启动信息,如果某个硬件有问题,也可以用这个命令查看。 last 用来查看登录linux的历史信息
last命令输出信息实际上是读取/var/log/wtmp 二进制文件,不用用cat vimhead tail查看;
从左到右依次为:账户名称、登录终端、登录客户端ip、登录日期及时长。
lastb 查看无效的登录历史,有人恶意登录会记录; 实际上是读取/var/log/btmp文件
/var/log/maillog 同样有5个maillog日志文件; [root@yong ~]# head /var/log/maillog Apr 20 13:55:41 yong postfix/postfix-script[1980]: stopping the Postfixmail system Apr 20 13:55:41 yong postfix/master[1143]: terminating on signal 15 /var/log/secure 系统登录的信息日志文件,记录验证和授权等方面的信息,比如ssh登录系统成功或失败。 [root@yong ~]# tail /var/log/secure Apr 20 18:29:05 yong login: pam_unix(login:session): session closed foruser root Apr 20 18:29:06 yong sshd[954]: Received signal 15; terminating. Apr 20 18:29:06 yong sshd[1863]: Exiting on signal 15 Apr 20 18:29:06 yong sshd[1863]: pam_unix(sshd:session): session closedfor user root Apr 20 18:29:06 yong sshd[2040]: pam_unix(sshd:session): session closedfor user user1 Apr 20 18:29:06 yong sshd[1863]: syslogin_perform_logout: logout()returned an error Apr 21 10:33:50 yong sshd[951]: Server listening on 0.0.0.0 port 22. Apr 21 10:33:50 yong sshd[951]: Server listening on :: port 22. Apr 21 10:39:11 yong sshd[986]: Accepted password for root from192.168.20.1 port 61567 ssh2
Apr 21 10:39:11 yong sshd[986]: pam_unix(sshd:session): session opened foruser root by (uid=0)
|