一、监控系统状态

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.    可以监控系统所有资源状态,比如负载均衡、网卡流量、磁盘状态,内存使用
    可以查看历史监控信息,保存数据库文件 /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 查看历史负载,可以查看过去某个时间点的负载情况    sar  查看历史状态信息,负载,流量,磁盘I/O,内存。。    4.   重点关注项:%CPU, %MEM, COMMAND   shift+m按照内存大小对进程列表进行排序   top -bnl    一次性把当前系统信息显示,而非动态显示        动态监控进程占用的系统资源,每隔3秒变一次    loadaverage、进程数Tasks、cpu使用情况、内存和交换分区使用情况。

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下的数据备份工具rsync

    系统管理员最不应该出现的事故:数据丢失。数据提前做好备份

    rsync = remote sync 远程同步

    既有远程数据同步(类似scp)

    又有本地数据同步(类似cp和scp),但是cp和scp将数据覆盖,而rsync会坚持两份数据的不同,并将不同的部分同步过去。

    安装rsync:

        yum -y install rsync

    # rsync -av 123.txt /tmp/ 把当前目录下的123.txt同步到/tmp/目录下

    # rsync -av 123.txt /tmp/234.txt 同步到指定目录下,并且该名字

    # rsync -av 123.txt 192.1468.0.101:/data/ 远程拷贝,

        拷贝192.168.0.101主机/data/目录下的内容

        IP:path,例如10.10.2.34:/root/

        连接远程主机时,会要求输入密码。但在脚本中,则要先添加信任关系。

 5.1 rsync的命令格式

    rsync [OPTION]...SRC DST将本机的源文件同步到本地其他目录下

    rsync [OPTION]...SRC [USER@]HOST:DST将本地源文件同步到指定主机、用户、目录下

    rsync [OPTION]...[USER@]HOST:SRC DST将远程指定主机、用户、源文件同步到本地目录下

    rsync [OPTION]...[USER@]HOST::SRC DST

    rsync [OPTION]...SRC [USER@]HOST::DST第四五种,两个 :: 和第二三个区别在于验证方式不同

 5.2 rsync常用选项

    -a 归档模式,以递归方式传输文件,保持所有属性,等同-rlptgoD,若-a--no-l,则等同于-rptgoD

    -v 打印一些信息

    -r 对子目录以递归模式,主要针对目录,单独穿文件则不需要加-r,但是传输的是目录,则必加-r

    -l 保留软连接

    -L 像对待常规文件一样处理软连接,如果SRC中有软连接文件,则加上该选项后,会将软连接指向的目标文件拷贝到DST

    -p 保持文件权限

    -o 保持文件属主信息

    -g 保持文件属组信息

    -D 保持设备文件信息

    -t 保持文件时间信息

    --delete 删除那些DST中SRC没有的的文件,即DST中比SRC多出的文件则会被删除

    --exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以用万用字符模式 *.txt

    --progress 在同步过程总可以看到同步的过程状态,同步的文件数量、同步文件传输速度...

    -u 将DST中比SRC还新的文件排除掉,不会覆盖

    常用选项(-a -v --delete --exclude),熟记。

    # rsync -a test1 test2 新建test2目录,然后将test1目录放到test2下

    # rsync -a test1/ test2/ 备份目录时,要加上 / ,直接将test1目录拷贝成test2,重命名。

    # rsync -av --no-l test1/  test2/

        -v 显示过程。-a = -rlptgoD,而没有-L,即不对软连接指向的目标文件做同步备份

        -l,则是把软连接文件拷贝过去;-L,则是把软连接指向的目标文件拷贝过去   

    # rsync -avL test1/ test2/ 将会把test1中的软连接文件指向的目标文件也一起同步备份到test2

    # rsync -avu  test1/ test2/ 比较test2目录是否比test1目录更新,若是,则选择不覆盖;若不是,test1/目录更新,则将test1/ 拷贝覆盖test2/

        -u 将更新SRC覆盖到DST;若DST更新,则不覆盖。

    # rsync -av --delete test1/ test2/ 将test1目录备份给test2/的过程中,将test2/中多出的文件删除   

    # rsync -av --exclude="*.ex" test1/ test2/ 将test1/同步给test2/的过程中,排除*.ex文件,不同步。

    (主要用的rsync选项,-av / -u / --no-OPTION / -L / --delete / --exclude )

  5.3 rsync应用实例

    # rsync -avL test1/ www@192.168.0.101:/tmp/test2/

        将本地test1/目录同步到远程192.168.0.101www用户下的/tmp/test2/目录下。类似上传

    # rsync -avL www@192.168.0.101:/tmp/test2/ ./test3/

        将远程主机/tmp/test2/目录下载同步到本地/test3/路径下,类似下载。

    

     这两个同步方式都需要输入用户登录密码,脚本则不能自动完成。                                 脚本完成同步,则通过密钥验证,密钥不设立密码  

   5.3.2 后台服务的方式

     即在远程主机上建立rsync服务器,并配置好各种应用,然后本机作为rsync的一个客户端连接远程rsync服务器。

    5.3.2.1 配置rsync服务

      #vim /etc/rsyncd.conf

        port=873  指定开启rsyncd服务的端口,默认873

        log file=/var/log/rsync.log     指定日子文件

        pid file=/var/run/rsync.pid    指定pid文件,涉及到服务的启动以及停止等进程操作

        #address=192.168.0.10    指定启动rsyncd服务的IP。加入机器上有多个IP,可以指定一个IP

                                      启动rsyncd服务。默认所有IP都启动

        [test]              指定模块名

        path=/root/rsync    指定数据存放的路径

        use chroot=true     指定是否chroot到path指定的路径下,true|false,默认true

                             但需要roots权限,不能备份指向外部链接(软链接)文件(选false)

        max connections=4    指定最大连接数,默认是0,没有限制

        read only=no    是否为只读,true|fales,若为true,则不能上传

        list=true    在查询该服务器上的可用模块是,是否列出该模块,true|false

        uid=root    指定传输文件时,以哪个用户/ 组的身份传输

        gid=root

        auth users=test    指定传输时要使用的用户名

        secrets file=/etc/rsyncd.passwd    指定密码文件,该参数不指定则不使用密码验证,注意

                                             该密码文件权限一定600

        hosts allow=192.168.0.101  指定被允许连接该模块的主机,是IP或者网段,多个用空格隔开

      5.3.2.2 编辑secret file文件

        #vi /etc/rsyncd.passwd

            test:test123

        #chmod 600 /etc/rsyncd.passwd    保存后一定要修改权限600,不对则不能同步

      5.3.2.3 启动rsyncd服务

        # rsync --daemon --config=/etc/rsyncd.conf

        # cat /var/log/rsync.log    查看日志,是否正常启动

        # netstat -lnp |grep 873    检查端口是否启动

        如果想开机启动

        rsync --daemon --config=/etc/rsyncd.conf 写到/etc/rc.d/rc.local中。

      5.3.2.4 测试--另一台主机

        rsync -avL test@192.168.0.10::test/test1/ /tmp/test6/

            因为user chroot=true,则在同步软连接时候会报错。修改成false    

        # sed -i 's/use chroot=true/use chroot=false/' /etc/rsyncd.conf

        # grep 'use chroot' /etc/rsyncd.conf

        修改完rsyncd.conf配置文件后,即时生效,不需重启服务。

     在输入密码时,指定密码文件,在脚本中可以自动执行

        第一种:

         # vi /etc/pass 定义密码文件

         # chmod 600 /etc/pass 被指定的密码文件,权限必须600

         # rsync -avL test@10.10.86.100::test/test1/ tmp/test8/ --passwword-file=/etc/pass

        第二种:

         # sed -i 's/auth users/#auth users/;s/#secrets file/secrets file/' /etc/rsyncd.con

           用 ; 把两个sed语句总的替换子命令分开。

         # rsyncd -avL 10.10.86.100::test/test1/ /tmp/test9/

            没有指定需要使用哪个用户登录传输,默认使用root用户身份。

六、Linux系统日志

    日志记录系统每天发生的各种事情,检查错误发生的原因,***后留下的痕迹。

    日志的主要功能:审计、监测系统状态,监测和追踪***者。

    最常用的日志文件/var/log/message, 核心日志文件,包括系统启动时的引导消息,以及其他运行状态:I/O错误,网络错误和其他系统错误。以及某个用户身份切换为root,及用户自定义软件apache的日志也会出现在这里。

    /var/log/message故障诊断时,首先要看的文件。

    每星期切换一次,通过logrotate工具控制,配置文件/etc/logrotate.conf

    

    /var/log/message是由syslogd守护进程产生的,若停掉该服务,则不会产生/var/log/message

    syslogd服务的配置文件/etc/syslog.conf,没有特殊需求不要修改这个配置文件。

    # dmesg 可以查看硬件问题(比如网卡信息)

    

  6.1 安全方面日志 

    # last

    查看登录Linux历史信息,账号、登录终端、登录ip、登录日期、时长。

    last输出信息,实质上是/var/log/wtmp日志文件,但是不能通过cat、vim、head、tail工具查看。

    # /var/log/secure 登录信息有关日志文件,记录验证和授权方面信息,例如ssh登录系统成功或失败都会记录。可以查看是否有人在爆破***。

    

    建议:经常查看日志文件,尤其软件日志,比如Apache、mysql、PHP等软件。

七、xargs和exec

    xargs工具,就是把管道符前面的输出作为xargs后面命令的输入。通常,和find一起使用

        将本来要多步才能完成的任务简单一步就能完成。

    # find . mtime +10 |xargs rm查找当前目录下创建时间超过10的文件,并且删除

    # ls *.txt |xargs -n1 -i{} mv {} {}_bak

        xargs -n1 -i{} 类似for循环,-n1意思一个一个去处理对象,-i{}把前面的对象用{}取代,mv {} {}_bak对对象重命名。

    exec应用工具。

    经常与find一起使用。# find . -mtime +10 -exec rm -rf {} \; 查找创建时间大于10天的文件并删除。

    # find ./*_txt -exec mv {} {}_bak \;  实现的功能和上面xargs一样

八、screen工具

    执行命令或者脚本时,可能需要运行几小时或者几天。中途断网或意外情况,那么在终端开启的任务就会中断,丢到后台运行也不保险。

  8.1 使用 nohup

    # vi /usr/local/sbin/sleep.sh

        #! /bin/bash

        sleep 1000

    # nohup sh /usr/local/sbin/sleep.sh & 若没有nohup,单纯 & ,则仍有可能退出终端时退出脚本。nohup的作用就是不挂断的运行命令。

  8.2 screen工具的使用

    用户在一个screen会话中创建多个screen窗口,每个screen窗口中就像操作一个真实的ssh连接。

    如果没有screen命令,则 # yum -y install screen

    # screen 直接打开一个会话

    # screen -ls 查看已经打开的screen会话,有编号

    Ctrl+a再按d退出该screen会话,只是退出,没有结束。结束的话Ctrl+d或者exit

    退出还想再次登录某个screen会话,使用screen -r [编号]