Linux系統平常管理

1、監控系統狀態mysql

1.w 查看系統當前負載linux

[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

    查看登陸用戶的信息,以及經過什麼方式登陸
sql

    關注數據:load average(單位時間段內cpu活動進程數)
shell

        1分鐘內平均負載;5分鐘內平均負載;15分鐘內平均負載
數據庫

            值越大服務器壓力愈大,值 <= cpu數量便可
apache

  1.1 查看cpu數量
ubuntu

    cat /proc/cpuinfo
vim

        processor id表示了cpu的數量
windows

    僅查看系統上的總體負載,經過查看load average判斷系統是否有壓力。但不能判斷具體哪裏在承壓(cpu,內存,磁盤)centos

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

    第3、第四列顯示信息爲:源IP+PORT 目的IP+PORT,重點關注這兩列便可

    -i 指定抓取那個設備上的包

    -nn 使顯示結果爲IP+PORT,若不加則顯示結果爲:主機名+服務名


2、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;相同的域名出如今多行時,最早匹配原則。


3、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中


4、系統任務計劃 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服務的狀態


5、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 查看相應啓動項服務狀態)


5、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用戶身份。


6、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等軟件。


7、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同樣


8、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 [編號] 

相關文章
相關標籤/搜索