REDHAT一總複習1 輸出重新導向及head tail的用法

來源:互聯網
上載者:User

標籤:

1、使用bash命令,在server機上完成以下任務。(考點是:head  tail的使用)

.顯示/usr/bin/clean-binary-files檔案的前12行,並將其輸出到/home/student/headtail.txt

.顯示/usr/bin/clean-binary-files檔案的最後9行,並將其添加到/home/student/headtail.txt

(存放到一個檔案裡,記得有個增量添加和異地同步的命令rsync和scp實現,MK在一篇部落格裡有提到過。 這裡使用的是>>重新導向,這裡>與>>的區別,naifuzhang在知道中回答道:> 是定向輸出到檔案,如果檔案不存在,就建立檔案;如果檔案存在,就將其清空;一般我們備份清理記錄檔的時候,就是這種方法:先備份日誌,再用`>`,將記錄檔清空(檔案大小變成0位元組);>> 這個是將輸出內容追加到目標檔案中。如果檔案不存在,就建立檔案;如果檔案存在,則將新的內容追加到那個檔案的末尾,該檔案中的原有內容不受影響。 把前面的檔案輸出到後面的檔案裡,順序不要搞錯了。)

1.1 顯示/usr/bin/clean-binary-files檔案的前12行,並將其輸出到/home/student/headtail.txt檔案

     $ head -n 12 /usr/bin/clean-binary-files > /home/student/headtail.txt

1.2 顯示/usr/bin/clean-binary-files檔案的最後9行,並將其添加到/home/student/headtail.txt

     $ tail -n 9 /usr/bin/clean-binary-files >> /home/student/headtail.txt

 

附MK博文摘要:

rsync累加式更新

然後是檔案的累加式更新,主要解決的問題是現在有兩台伺服器A和B,要將A伺服器上的test目錄差異複寫到B伺服器上的test目錄(所謂累加式更新就是指B伺服器原來已經有的檔案不再傳了,只傳送那些A有的而B沒有的),這樣使得B伺服器上的test檔案夾保持與A同步

這就需要用到rsync這個命令,這個命令的用法跟scp是一樣的

比如在A伺服器下執行命令:rsync -r /home/test/ [email protected]:/home/test 即可實現累加式更新

注意:這裡有一個問題需要詳細說明一下:

假如test目錄下有1.txt,2.txt這兩個檔案

如果命令中來源目錄那裡寫成這樣:/home/test/

那麼rsync準備更新的檔案清單就是

1.txt

2.txt

然後就會在B機器的/home/test目錄下找這兩個檔案並做累加式更新,這樣能夠滿足需求

但如果來源目錄寫成這樣:/home/test

那麼rsync準備累加式更新的檔案清單就會是這樣:

test/1.txt

test/2.txt

然後在B機器的/home/test目錄下尋找test/1.txt,發現沒有test檔案夾,於是又建立了test檔案夾,所以這樣執行的結果就是B機器的目錄結構就會有這兩個檔案,而這不是希望看到的

/home/test/test/1.txt

/home/test/test/2.txt

所以要注意這個問題。下面兩種寫法是正確的:

rsync -r /home/test/ [email protected]:/home/test 

或者

rsync -r /home/test [email protected]:/home

 

具體的關於rsync的詳細參數的設定這裡就不說了,這裡只把一種推薦的命令運行方式記錄下來:

rsync -rtv /home/test/ [email protected]:/home/test

-t是指判斷檔案是否已有的時候只判斷檔案的時間戳記和檔案的大小,如果都一樣就把這個檔案跳過(這是一種不夠嚴謹但足夠快的方法)

-v是指輸出一下執行的日誌,其實可以加很多v,v越多,輸出的日誌越多

 

免驗證訪問

現在就可以將crontab和rsync結合一下了,當然首先需要解決兩個機器之間rsync免驗證的問題,也就是命令可以直接這樣寫(不需要B機器的使用者名稱和密碼):

rsync -rtv /home/test [email protected]:/home/test

關於這個網上看了一些rsync的配置,但是覺得太麻煩了,想到這個跟scp差不多,是不是也可以直接ssh免驗證的那種方式解決,試了一下,可行

關於ssh免驗證登入,是這樣做的(這裡的使用者全部用root,當然可以用其他的):

在A機器下:

首先產生秘鑰檔案

ssh-keygen -t rsa -P ‘‘

注意‘’是兩個單引號,表示密碼為空白

然後將產生的id_rsa.pub檔案複製到B伺服器上(注意檔案的位置為/root/.ssh,如果是其他使用者應該是/home/user/.ssh,即為目前使用者的主目錄)

scp /root/.ssh/id_rsa.pub [email protected]:/root/

(因為操作還沒有完成,這裡還要輸入密碼)

然後在B機器上操作:

如果/root/.ssh/裡沒有authorized_keys這個檔案,那麼將從A機器scp過來的id_rsa.pub檔案移動並重新命名成authorized_keys即可

mv /root/id_rsa.pub /root/.ssh/authorized_keys

如果這個authorized_keys檔案已經存在,那麼將id_rsa.pub這個檔案的內容追加到authorized_keys即可

cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

此時就可以在A機器上免密碼訪問B機器了,注意別搞反了

在A機器上測試一下:

ssh [email protected]

如果不需要輸入密碼就可以登入,說明配置成功

REDHAT一總複習1 輸出重新導向及head tail的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.