明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Linux使用shell腳本監(jiān)控rsync文件傳輸?shù)耐暾?/h1>

[摘要]Linux系統(tǒng)在使用rsync傳輸大文件的時(shí)候,由于本人不在身邊,無法保證文件是否完整傳輸,這時(shí)可以編寫一個(gè)shell腳本來監(jiān)控rsync是否傳輸完數(shù)據(jù),以確保文件傳輸?shù)揭话霑r(shí)中斷卻不知道。今天有臺(tái)...

  Linux系統(tǒng)在使用rsync傳輸大文件的時(shí)候,由于本人不在身邊,無法保證文件是否完整傳輸,這時(shí)可以編寫一個(gè)shell腳本來監(jiān)控rsync是否傳輸完數(shù)據(jù),以確保文件傳輸?shù)揭话霑r(shí)中斷卻不知道。

Linux使用shell腳本監(jiān)控rsync文件傳輸?shù)耐暾? src=

  今天有臺(tái)服務(wù)器a要把網(wǎng)站程序全部傳輸?shù)搅硗庖慌_(tái)服務(wù)器b上去,但離下班時(shí)間就只有1個(gè)小時(shí)了,為了準(zhǔn)時(shí)下班,簡單寫了個(gè)shell腳本來監(jiān)控是否有傳輸完。

  系統(tǒng):centos 5.x

  需要的軟件:rsync

  腳本內(nèi)容:

  #!/bin/bash

  file=`du -sm /var/www/vhosts/ awk ‘{print $1}’`

  ps=`ps -C rsync --no-header wc -l`

  if [ “$file” = “11517” ];then

  echo “files downloaded!”

  else

  if [ “$ps” = “1” ];then

  kill -9 $(ps aux grep rsync grep -v grep awk ‘{print $2}’)

  sleep 1

  nohup sh /root/rsync.sh &

  else

  echo “rsync is running.。。”

  fi

  fi

  腳本的大概思路就是查看文件夾的大小是否有跟服務(wù)器a的大小一樣,如果不一樣就檢查rsync的進(jìn)程是否有在運(yùn)行,如果沒有運(yùn)行就kill掉,然后重新執(zhí)行rsync的下載腳本。

  ps:當(dāng)然這個(gè)腳本有點(diǎn)簡陋,沒有去檢測(cè)進(jìn)程狀態(tài),如果出現(xiàn)僵尸進(jìn)程的話,是沒有辦法處理的。

  上面就是Linux使用shell腳本監(jiān)控rsync文件傳輸?shù)耐暾裕绻麢z測(cè)到未傳完可繼續(xù)上傳。


Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng)