linux系统日常管理
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 核心数 # cat/proc/cpuinfo |grep -c 'processor'1# 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、实时监控系统状态 vmstatvmstat 监控一次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 sysstatsar -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# cd/etc/sysconfig/network-scripts/# cp ifcfg-eth0 ifcfg-eth0\:1编辑ifcfg-eth0:1 这个配置文件,更改里面的DEVICE=eth0:1 设置新的IP地址192.168.20.30 ;# ifconfig eth0 Link encap:EthernetHWaddr 00:0C:29:43:3D:32 inetaddr:192.168.20.20Bcast:192.168.20.255Mask:255.255.255.0 inet6 addr:fe80::20c:29ff:fe43:3d32/64 Scope:Link UP BROADCAST RUNNINGMULTICASTMTU:1500Metric: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:EthernetHWaddr 00:0C:29:43:3D:32 inet addr:192.168.20.30Bcast:192.168.20.255Mask:255.255.255.0 UP BROADCAST RUNNINGMULTICASTMTU:1500Metric:1 Interrupt:18 Baseaddress:0x2000可以看到多了一个IP,可以用远程ssh访问这个192.168.20.30; 3、查看网卡连接状态 mii-tool eth0 # mii-tool eth0SIOCGMIIPHY on 'eth0' failed: Operation not supported由于是虚拟机所以显示"operation notsupported",真实机器会显示 eth0: negotiated 100baseTx-FD, link ok ;”link ok“说明网卡为连接状态,如果显示“no link“说明网卡坏掉了或没有连接网线。 4、更改主机名hostname 查看系统的主机名;hostname 主机名 可以更改主机名,下次登录时会更改登录提示符;这样更改只是暂时保存在内存中,重启后不会生效;# hostname yonglinux.com# hostnameAngel# hostnameAngel# hostname Angel 永久更改主机名,需要编辑配置文件 /etc/sysconfig/network,更改HOSTNAME,保存退出后重启生效;NETWORKING=yesHOSTNAME=yonglinux.com 5、设置DNSDNS为域名解析,把域名解析为ip地址;配置文件为/etc/resolv.conf# cat /etc/resolv.conf ; generated by /sbin/dhclient-scriptnameserver 192.168.20.2可以添加多个DNS地址,格式为:nameserver ip地址linux下还有一个特殊的文件 /etc/hosts 也可以解析域名手动在里面添加ip地址 域名地址;主要作用是临时解析某个域名。格式为:ip地址 域名 192.168.1.111 www.baidu.com# ping www.baidu.comPING www.baidu.com (192.168.1.111) 56(84) bytes ofdata.几点要注意的: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/iptablesiptables -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网段所有数据包都丢掉# iptables -I INPUT -s 192.168.20.0 -j DROP删除规则的话,要与添加规则的后缀一样才可以;# iptables -D INPUT -s 192.168.20.0 -j DROP 把1.1.1.1 访问本地tcp协议80端口的所有数据包都丢掉; # iptables -I INPUT -s 1.1.1.1 -p tcp --dport 80 -j DROP把发送到10.0.1.14的22端口的所有数据包丢掉; # iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP使用这个命令查看规则带有id号显示;# iptables -nvL --line-numberChain 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 可以实现;# iptables -I INPUT -p icmp --icmp-type 8 -j DROP 示例,编一个脚本,针对filter表,所有的INPUT链DROP,其他两个链ACCEPT,然后针对192.168.20.0/24网段开通22端口可以连接主机;对所有网段开放80端口;对所有网段开通21端口;# 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 # 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? # cat /proc/sys/net/ipv4/ip_forward0# echo "1" > /proc/sys/net/ipv4/ip_forward # 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 这样可以恢复指定的规则; # iptables-save > myipt.rule# service iptables stopiptables: Setting chains to policy ACCEPT: nat filter [ OK]iptables: Flushing firewall rules: iptables: Unloading modules: # 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服务;# chkconfig --list |grep crondcrond 0:off1:off2:on3:on4:on5:on6:off# chkconfig crond off# chkconfig --list |grep crondcrond 0:off1:off2:off3:off4:off5:off6:off# chkconfig --level 3 crond on# chkconfig --list |grep crondcrond 0:off1:off2:off3:on4:off5:off6:off# chkconfig --level 345 crond on# chkconfig --list |grep crondcrond 0:off1:off2:off3:on4:on5:on6:off chkconfig还有一个功能可以把某个服务加入到系统服务,自定义的服务如果想要加到系统服务里面,拷贝可执行的服务到/etc/init.d/目录里面;加入系统服务之后可以使用:service 服务名 start 操作,并且也可以在chkconfig --list列表中查找到,当然也可以删除掉;chkconfig --del服务名 删除服务chkconfig --add服务名 添加服务 这个功能常用在把自定义的启动脚本加入到系统服务中。# chkconfig --del crond# chkconfig --list |grep crond# chkconfig --add crond# chkconfig --list |grep crondcrond 0:off1:off2:on3:on4:on5:on6:off 1、 linux系统日志2、 日志主要的功能有:审计和检测,还可以实时的监测系统状态,监测和追踪侵入者等等;常用日志文件有/var/log/message 核心系统日志文件,包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO错误、网络错误和系统系统错误都会记录到这个文件中。另外其他信息,比如某个人的身份切换为root以及用户定义安装的软件日志也会在这里列出。# ls /var/log/messagesmessages messages-20150407 messages-20150420messages-20150330messages-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日志文件;# head /var/log/maillogApr 20 13:55:41 yong postfix/postfix-script: stopping the Postfixmail systemApr 20 13:55:41 yong postfix/master: terminating on signal 15 /var/log/secure 系统登录的信息日志文件,记录验证和授权等方面的信息,比如ssh登录系统成功或失败。# tail /var/log/secureApr 20 18:29:05 yong login: pam_unix(login:session): session closed foruser rootApr 20 18:29:06 yong sshd: Received signal 15; terminating.Apr 20 18:29:06 yong sshd: Exiting on signal 15Apr 20 18:29:06 yong sshd: pam_unix(sshd:session): session closedfor user rootApr 20 18:29:06 yong sshd: pam_unix(sshd:session): session closedfor user user1Apr 20 18:29:06 yong sshd: syslogin_perform_logout: logout()returned an errorApr 21 10:33:50 yong sshd: Server listening on 0.0.0.0 port 22.Apr 21 10:33:50 yong sshd: Server listening on :: port 22.Apr 21 10:39:11 yong sshd: Accepted password for root from192.168.20.1 port 61567 ssh2
Apr 21 10:39:11 yong sshd: pam_unix(sshd:session): session opened foruser root by (uid=0)
页:
[1]