当前位置: IT大杂烩 > Ubuntu  > Linux系统日常管理

Linux系统日常管理

www.someabcd.com  网友分享于:Jun 8, 2018 5:51:06 PM

标签:linux   yum   rpm   iptables   cron   vmstat   

一、监控系统状态

1.w 查看系统当前负载

[root@localhost sbin]# w
 15:23:46 up  3:34,  2 users,  load average: 0.03, 0.05, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                12:26    2:55m  0.11s  0.11s -bash
root     pts/0    10.72.137.53     12:28    1:17m  1:32   1:32  -bash

    查看登录用户的信息,以及通过什么方式登录

    关注数据:load average(单位时间段内cpu活动进程数)

        1分钟内平均负载;5分钟内平均负载;15分钟内平均负载

            值越大服务器压力愈大,值 <= cpu数量即可

  1.1 查看cpu数量

    cat /proc/cpuinfo

        processor id表示了cpu的数量

    仅查看系统上的整体负载,通过查看load average判断系统是否有压力。但不能判断具体哪里在承压(cpu,内存,磁盘)

2.vmstat 监控系统状态

    能够查看到系统每个设备运行状况(进程procs,内存memory,swap内存交换,io磁盘读写,system系统中断次数,cpu是cpu使用状态)

     重点关注r、b、wa列
         r运行等待cpu时间片的进程数,大于cpu个数,则cpu不够用
         b等待资源的进程数,比如等待I/O,内存等,长时间大于1,则需关注
         wa I/O等待所占用cpu时间百分比
     次关注si、so、bi、bo
         si 交换区写入到内存数据量
         so 内存写入到交换区数量       
              si、so值高时,内存不够用,数据频繁出入交换区,对系统性能影响极大
         bi 磁盘写入到内存数据量
         bo 内存写入到磁盘的数据量
    vmstat 1 5 每秒收集一次,共收集5次

    动态监控进程占用的系统资源,每隔3秒变一次
    loadaverage、进程数Tasks、cpu使用情况、内存和交换分区使用情况。

   重点关注项:%CPU, %MEM, COMMAND
   shift+m按照内存大小对进程列表进行排序
   ##top -bnl    一次性把当前系统信息显示,而非动态显示

    可以监控系统所有资源状态,比如负载均衡、网卡流量、磁盘状态,内存使用
    可以查看历史监控信息,保存数据库文件 /var/log/sa/,默认保存一个月
    安装sar工具:yum -y install sysstat
    sar -n DEV查看网卡流量状态

        txpck/s每秒发出去数据包数量,rxpck/s每秒收到数据包数量;
        txkB/s每秒发出去数据量,rxkB/s每秒收到数据量
    sar -n DEV 1 5 每秒监控一次网卡流量,共5次
    sar -n DEV -f /var/log/sa/sa24查看历史某一天的网卡流量
    sar -q查看历史负载,可以查看过去某个时间点的负载情况

5. free查看内存使用状况

[root@localhost ~]# free
            total       used       free     shared    buffers     cached
Mem:        326616     137332     189284          0      34480      73336
-/+ buffers/cache:      29516     297100
Swap:      2097144       1144    2096000

    29516才是真正使用的内存,297100才是真正剩余的内存

      因为系统初始化时,分配一部分内存给换成buffer,提供给程序使用,没用时则也属于空闲内存

    free -h 人能看懂,M为单位;free -m以M为单位,但不显示M;free -g以G为单位

6. ps 查看系统进程

    相比较top显示的结果,更容易看懂

[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   2900   852 ?        Ss   11:49   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    11:49   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11:49   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    11:49   0:11 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    11:49   0:00 [migration/0]
root         6  0.0  0.0      0     0 ?        S    11:49   0:00 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S    11:49   0:04 [events/0]
root         8  0.0  0.0      0     0 ?        S    11:49   0:00 [cgroup]
root         9  0.0  0.0      0     0 ?        S    11:49   0:00 [khelper]

    STAT:表示进程状态

        D 不能中断的进程(通常I/O);

        R 正在运行的进程;

        S 已经中断的进程,通常系统大部分进程的状态;

        s 主进程

        T 已经停止或暂停的进程,例如运行进程sleep 10 然后ctrl+z暂停后,状态即为T;

        W 内核2.6以后,表示没有足够内存页分配;

        X 已经死掉的进程(好像重来没有出现);

        Z 僵尸进程,杀不掉打不死的垃圾进程,占用一小部分资源,没太大关系,但是太多就有问题,一般不会出现;

        < 高优先级进程

        N 低优先级进程

        L 在内存中被锁定了内存分页的进程

        l 多线程进程

        + 代表在前台运行的进程

    通常ps会连同 | 一起使用 ps aux |grep -c mingetty  (-c 统计)。常用命令

7.netstat 查看网络状况

    查看看网络连接状况,系统开放端口,路由表等信息

    最常用两个命令:netstat -lnp(打印系统启用哪些端口)、netstat -an(打印网络连接状况)

[root@localhost ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address    State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*          LISTEN      929/sshd
tcp        0      0 :::80                       :::*               LISTEN      25005/httpd
tcp        0      0 :::22                       :::*               LISTEN      929/sshd
udp        0      0 0.0.0.0:68                  0.0.0.0:*                      1597/dhclient
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name      Path
unix  2      [ ACC ]     STREAM     LISTENING     6783   1/init                @/com/ubuntu/upstart


[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address    State
tcp        0      0 0.0.0.0:22                  0.0.0.0:*          LISTEN
tcp        0      0 10.72.137.159:22            10.72.137.53:50507 ESTABLISHED
tcp        0     52 10.72.137.159:22            10.72.137.53:50827 ESTABLISHED
tcp        0      0 :::80                       :::*               LISTEN
tcp        0      0 :::22                       :::*               LISTEN
udp        0      0 0.0.0.0:68                  0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     6783   @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    6953   @/org/kernel/udev/udevd
unix  3      [ ]         DGRAM                    6973
unix  3      [ ]         DGRAM                    6972

8.tcpdump 抓包工具

    安装tcpdump:yum -y install tcpdump

[root@localhost ~]# tcpdump -nn -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:13:56.689147 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 2793829986:2793830182, ack 1384443306, win 1067, length 196
19:13:56.691389 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 196:376, ack 1, win 1067, length 180
19:13:56.691541 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 376, win 16266, length 0
19:13:56.694499 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 376:636, ack 1, win 1067, length 260
19:13:56.695659 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 636:800, ack 1, win 1067, length 164
19:13:56.695793 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 800, win 16160, length 0
19:13:56.698429 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 800:1060, ack 1, win 1067, length 260
19:13:56.700332 IP 10.72.137.159.22 > 10.72.137.53.50827: Flags [P.], seq 1060:1224, ack 1, win 1067, length 164
19:13:56.700419 IP 10.72.137.53.50827 > 10.72.137.159.22: Flags [.], ack 1224, win 16425, length 0

    第三、第四列显示信息为:源IP+PORT 目的IP+PORT,重点关注这两列即可

    -i 指定抓取那个设备上的包

    -nn 使显示结果为IP+PORT,若不加则显示结果为:主机名+服务名


二、Linux网络相关

1.ifconfig 查看网卡信息

    修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

    重启网卡 service network restart

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

    #cd /etc/sysconfig/network-scripts/

    #cp ifcfg-eth0 ifcfg-eth0\:1 将eth0的配置文件拷贝到eth0:1

    #vi ifcfg-eth0\:1     

DEVICE=eth0:1
HWADDR=00:0C:29:D9:F0:52
TYPE=Ethernet
UUID=a5442526-0329-421d-86cf-8d7f16d01374
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.80.5
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
NM_CONTROLLED=yes

    再重启网卡service network restart,即可

3.查看网卡连接状态

    #mii-tool eth0

        显示link ok则状态正常;no link则网卡坏掉或者没有连接网线(即为直接判断网卡状态)

4.更改主机名 hostnamectl

    #hostnamectl 查看static,transient,pretty三种状态的主机名

    #hostnamectl set-hostname jasonhost  同时修改三个状态的主机名

        修改后立即生效,重启后也有效。

127.0.0.1      jasonhost  hunk_zhu
#127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain
::1        localhost localhost.localdomain localhost6 localhost6.localdomai

       修改/etc/hosts下的相应主机名,很多时候开机启动慢时,考虑此原因。

5.设置 DNS

    查看配置的DNS服务器的ip,同时也可以修改配置,指定DNS

[root@localhost ~]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 202.106.46.151

    修改域名解析映射表。修改后,pingwww.baidu.com域名则目的IP为192.168.1.111

[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.111 www.baidu.com

 一个IP可以对应多个域名;但是一个域名只能解析一个IP;相同的域名出现在多行时,最先匹配原则。


三、Linxu防火墙

  1. selinux

redhat/centos特有的安全机制,但因为配置复杂,限制太多,很少有人真正使用。

一般关闭selinux,避免不必要的麻烦。

#vi /etc/selinux/config

    SELINUX=disabled(关闭,没有运行)/enforcing(默认,强制模式,开始限制)/permissive(宽容模式,仅会有警告信息)

#getenforce 查看selinux的状态

    #setenforce enforcing/permissive/1/0,临时设置

2.Iptables ,Linux上特有的防火墙

    系统管理中,日常常用到一两个应用,但是功能非常强大

    Centos上默认没有iptables规则

    /etc/init.d/iptables save 保存防火墙文件到/etc/sysconfig/iptables;

    iptables -nvL查看规则;

    iptables -F 清空当期规则,但是只是临时的,没有修改配置文件中的内容;

 2.1 iptables的三个表

    filter:保存过滤规则,系统预设表,最常用。内建三个链INPUT/OUTPUT/FORWARD

        INPUT: 作用于进入本机的包

        OUTPUT:作用 于送出的包

        FORWARD:作用于那些跟本机无关的包

    nat:保存网络地址转换规则,也有三个链PREROUTING/OUTPUT/POSTROUTING

        PREROUTING:作用于其他主机发出的包刚到防火墙时改变目的地址的包

        OUTPUT:改变本地产生包的目的地址

        POSTROUTING:作用于离开防火墙的包改变其源地址

    mangle:主要给包打标记,然后根据标记做相应操作。几乎不用,高级网络工程师使用。

 2.2 iptables基本语法

    #iptables -t nat -nvL

        -t 指定表名,若不加,则默认显示filter表的信息;-nvL 查看该表的规则,-n不针对IP反解析主机名,-L列出信息,-v详细信息;

    #iptables -F 删除所有规则

    #iptables -Z 把包和流量计算器归零(很有用)

   #iptables -A INPUT -s 10.10.86.90 -p tcp --sport 1234 -d 10.10.86.100 --dport 80 -j DROP

        省略-t,则针对默认表filter;-A,表示增加一条规则(-I,插入;-D,删除一条规则);INPUT,作用链(还以OUTPUT/FORWORD);-s/-d,源地址/目的地址;给源地址反馈;ACCEPT允-p,协议(tcp,udp,icmp);--sport/--dport 源端口/目标端口;-j,后跟动作;DROP把包丢掉,不会反馈(REJECT拒绝,会许)

    #iptables -I INPUT -s 1.1.1.1 -j DROP 在filter表中插入一条规则,丢掉源地址1.1.1.1的包

    #iptables -D INPUT -s 1.1.1.1 -j DROP 删除刚插入的规则,删除规则必须与原有规则一致

    #iptables -I INPUT -s 2.2.2.2 -p tcp --sport 80 -j DROP 丢掉2.2.2.2的80端口发出的数据包

    #iptables -I OUTPUT -p tcp --dport 22 -d 2.2.2.2 -j DROP 丢掉发往2.2.2.2的80端口的包

    #iptables -I INPUT -s 2.2.2.0/24 -i eth0 -j ACCEPT 将来自2.2.2.0/24网段并且作用在eth0的包放行

    作用于FORWARD链几乎没用到。-i,指定网卡,很少用到。

    #iptables -nvL --line-numbers显示每天规则相应的编号

    #iptables -D INPUT 1 删除INPUT链上第一条规则,必须要指定链名,因为每条链上规则独立。

  2.2.1 -P 表示预设策略,默认策略,策略内容为DROP或者ACCEPT,默认ACCEPT

    #iptables -P INPUT DROP  设置默认策略为DROP,远程连接时,该命令后断开ssh

    #iptables -F无法情况该规则

    #iptables -P INPUT ACCEPT 只有通过该命令才能恢复远程连接,

[root@localhost ~]# cat /usr/local/sbin/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.137.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

    该shell脚本实现:针对filter表,预设INPUT链DROP,其他两个链ACCEPT;针对源地址192.168.167.0/24网段主机开放22断开;针对所有网段开放21和80端口。

    若想该规则shell开机启动,则在开机初始化时启动该防火墙规则

  2.2.2 丢掉icmp包,使其他主机不能ping本机,但本机能ping外网

    #iptables -I INPUT -p icmp --icmp-type 8 -j DROP

        --icmp-type 8指的就是使本机能ping外网,外网不能ping本机。切记,常用

2.3 NAT表的应用

    #echo "1" >/proc/sys/net/ipv4/ip_forward

    #iptables -t  nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASOUERADE

    将1292.168.1.0/24网段的主机通过eth0访问外网,即eth0实现路由转发的功能。

        MASOUERADE伪装的意思:伪装

2.4 iptables 服务启动暂停和保存备份

    #service iptables status 查看iptables服务的状态

      = #systemctl status iptables


    #systemctl enable iptables  在系统开机服务中添加iptables服务

        #systemctl disable iptables 开机服务中禁用iptables服务 ,则开机时不会自动检测/etc/sysconfig/iptables文件

    #systemctl start iptables    启动iptables服务   

        #systemctl stop iptables 暂停iptables服务

    

    #service iptables save 将防火墙规则保存到/etc/sysconfig/iptables文件中

        该命令有效执行的前提,yum -y install iptables        两个文件都已安装

                              yum -y install iptables.service

    

    #iptables-save > myipt.rule    将iptables规则备份到本地指定文件中

    #iptables-restore < myipt.rule 将指定文件中的规则恢复到/etc/sysconfig/iptables中


四、系统任务计划 cron

    cron计划任务都是通过crontab命令完成

    /etc/crontab 全局配置文件

    crontab -u/-e/-l/-r

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

        -e:制定计划任务(enact制定)

        -l:列出计划任务

        -r:删除计划任务

    

    #crontab -e 

        01 10 05 06 3 echo "ok" > /root/cron.log

        从左到右:分 时 日 月 周。 表示:6月5号(这一天必须是星期3),10:01,执行命令echo "ok" >/root/cron.lo

       该命令实际打开/var/spool/cron/username文件,并使用vim编辑器编写计划任务,wq 保存退出

    #crontab -l

        查看/var/spool/cron/username文件中的计划任务

    #crontab -r

        删除计划任务

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

每周日3点执行 “/bin/sh /usr/local/sbin/backup.sh”

每月14号4点10分执行 “/bin/sh /usr/local/sbin/backup_month.sh”

每隔8小时执行 “ntpdate time.windows.com”

每天的1点,12点,18点执行 “/bin/sh /usr/local/sbin/test.sh”

每天的9点到18点执行 “/bin/sh /usr/local/sbin/test2.sh”

1.  20 1 * * *  echo "" >/var/log/slow.log
2.  0 3 * * 0  /bin/sh /usr/local/sbin/backup.sh
3.  10 4 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


    保存路径/var/spool/cron/username

    # service crond status 查看crond服务的状态

    # systemctl crond disable/enable 修改crond服务是否开机启动,只能用systemctl修改

    # service crond stop/start

        = # systemctl crond stop/start 都可以修改crond服务的状态


五、Linux系统服务管理

  1.开机启动的服务,日常用不到服务停掉,节省资源;减少安全隐患。

    建议只开启“crond,iptables,network,sshd,syslog,irqbalance,sendmail,microcode_ctl”服务

    #vtsysv 直接打开服务配置界面

    #yum -y instll vtsysv 安装命令

  2. chkconfig 服务管理工具

    系统预设服务,可以在 /etc/init.d/目录下看到有哪些服务

    这些系统服务都可以通过这条命令实现:

        #service 服务名 start/stop/restart

        #/etc/init.d/crond start/stop/restart

    

    # chkconfig --list 查看每个服务针对不同运行级别的状态

    # chkconfig --list |gerp cron

    

    运行级别:0 shutdown;1 重启至单用户模式;6 reboot;--被系统保留

              2 无NFS(网络)支持多用户模式;3 完全多用户、命令行模式;

              4 保留给用户自定义;5 图形登录模式。


    #chkconfig --level 3 crond off 关闭level 3的crond服务

    #chkconfig --level 345 crond off 同时关闭level3 4 5 的crond服务

    #chkconfig crond on 省略级别,默认针对2,3,4,5


    #chkconfig --add crond 将crond服务添加到服务项

    #chkconfig --del crond 删除  

        (在centos 7中chkconfig无效,systemctl status 查看相应启动项服务状态)







Linux系统日常管理

标签:linux   yum   rpm   iptables   cron   vmstat   

发布此文章仅为传递网友分享,不代表本站观点,若侵权请联系我们删除,本站将不对此承担任何责任。
Copyright ©2018  IT大杂烩  版权所有  京ICP备11030978号-1 网站地图