首先在寫腳本之前,你要知道關(guān)于rsync的理論知識與實操,才能寫好一個ok的腳本。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、邵東網(wǎng)站維護、網(wǎng)站推廣。我們先來捋一捋:
rsync的啟動命令:
rsync --daemon
停止命令:
kill rsync進程號
pkill rsync
killall rsync
話不多說,上腳本:
#!/bin/bash ##################################### #?File?Name:?rsyncd.sh #?Version:?V1.0 #?Author:?wuhan #?Created?Time?:?2018-10-14?13:19:53 #?Description:?rsync?service?script ##################################### .?/etc/init.d/functions #首先加載/etc/init.d/functions,待會我們需要用里面的基礎(chǔ)函數(shù) lockfile="/var/lock/subsys/rsyncd" #定義一個鎖文件的變量 rpfp="/var/run/rsyncd.pid" #寫一個rsync端口ID的變量,方便多次引用,可在此腳本中使用 #寫一個函數(shù),名為start start(){ ????#函數(shù)名 ????rsync?--daemon?&&?>/dev/null ????#rsync服務(wù)啟動命令,啟動成功后輸出到空 ????retval=$? ????#獲取返回值 ????if?[?$retval?-eq?0?] ????#如果返回值等于0 ????then ????#那么執(zhí)行如下操作 ????????action?"rsync?startup?ok"?/bin/true ????????#用action函數(shù)輸出啟動成功的內(nèi)容并顯示ok ????????touch?$lockfile ????????#在創(chuàng)建一個鎖文件 ????????return?$retval ????????#返回使用啟動命令后的返回值 ????else ????#否則 ????????action?"rsync?startup?fail"?/bin/false ????????#輸出服務(wù)啟動失敗的內(nèi)為,顯示false ????????return?$retval ????????#也返回啟動命令后的返回值,方便排錯 ????fi ????#退出 } #寫一個停止命令的函數(shù),名為stop stop(){ ????if?test?-s?"$rpfp" ????#如果端口ID文件長度不為0,那么為真,執(zhí)行如下操作 ????then ????????rsyncd_pid=`cat?$rpfp` ????????#定義一個端口ID號的變量 ????????if?(kill?-0?$rsyncd_pid?&>/dev/null) ????????#如果端口ID號存在,且輸出到空 ????????then ????????#執(zhí)行如下操作 ????????????kill?$rsyncd_pid ????????????#通過進程號殺掉rsync服務(wù) ????????????retval=$? ????????????#獲取返回值 ????????????if?[?$retval?-eq?0?] ????????????#如果返回值等于0,執(zhí)行如下指令 ????????????then ????????????????action?"rsync?stop?ok"?/bin/true ????????????????#輸出服務(wù)停止成功,顯示ok ????????????????rm?-fr?$lockfile ????????????????#如果殺掉rsync服務(wù),那就刪除鎖文件 ????????????????return?"$retval" ????????????????#獲取返回值 ????????????else ????????????#否則執(zhí)行如下操作 ????????????????action?"rsync?stop?fail"?/bin/false ????????????????#輸出rsync停止失敗,顯示false ????????????????return?$retval ????????????????#獲得返回值 ????????????fi ????????else ????????#否則 ????????????echo?"rsyncd?process?is?not?exist." ????????????#提示rsync進程不存在 ????????????return?2 ????????????#返回值2 ????????fi ????else ????#否則 ????????echo?"${rpfp}is?not?exist,or?rsync?does?not?startup" ????????#提示端口號不存在或rsync服務(wù)沒啟動 ????fi ????#結(jié)束 } case?"$1"?in #因為寫了函數(shù),所以我們這里用case結(jié)構(gòu)條件句更適合,定義$1為變量 ????start) ????#匹配到start?執(zhí)行start函數(shù)并獲取返回值 ????????start ????????retval=$? ????????;; ????stop) ????#匹配到stop?執(zhí)行stop函數(shù)并獲取返回值 ????????stop ????????retval=$? ????????;; ????restart) ????#匹配到restart?先執(zhí)行stop函數(shù)休眠1s在執(zhí)行start實現(xiàn)restart,并獲取返回值 ????????stop ????????sleep?1 ????????start ????????retval=$? ????????;; ????*) ????#都沒有匹配到就輸出提示只能執(zhí)行三個函數(shù)中的一個 ????????echo?"?usage:?$0?{start|stop|restart}?" ????????exit?1 esac #結(jié)束 exit?$retval #退出并取得返回值從而進行判斷
試驗:聰明的你可以看到PID進程號在我們的停止開啟和重啟之后更改,說明腳本ok。[root@node1?~]#?lsof?-i:873 COMMAND???PID?USER???FD???TYPE?DEVICE?SIZE/OFF?NODE?NAME rsync???10044?root????4u??IPv4?639767??????0t0??TCP?*:rsync?(LISTEN) rsync???10044?root????5u??IPv6?639768??????0t0??TCP?*:rsync?(LISTEN) [root@node1?~]#?sh?/server/scripts/09/rsyncd3.sh?stop rsync?stop?ok??????????????????????????????????????????????[??OK??] [root@node1?~]#?lsof?-i:873 [root@node1?~]#? [root@node1?~]#?sh?/server/scripts/09/rsyncd3.sh?start rsync?startup?ok???????????????????????????????????????????[??OK??] [root@node1?~]#?lsof?-i:873 COMMAND???PID?USER???FD???TYPE?DEVICE?SIZE/OFF?NODE?NAME rsync???10212?root????4u??IPv4?664268??????0t0??TCP?*:rsync?(LISTEN) rsync???10212?root????5u??IPv6?664269??????0t0??TCP?*:rsync?(LISTEN) [root@node1?~]#?sh?/server/scripts/09/rsyncd3.sh?restart rsync?stop?ok??????????????????????????????????????????????[??OK??] rsync?startup?ok???????????????????????????????????????????[??OK??] [root@node1?~]#?lsof?-i:873 COMMAND???PID?USER???FD???TYPE?DEVICE?SIZE/OFF?NODE?NAME rsync???10227?root????4u??IPv4?664325??????0t0??TCP?*:rsync?(LISTEN) rsync???10227?root????5u??IPv6?664326??????0t0??TCP?*:rsync?(LISTEN)
此腳本直接復(fù)制粘貼即可使用,需要/etc/rsyncd.conf配置好pid和鎖文件
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。