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