標籤:
1.linux組成kernel、shell、工具程式有sh.bash
一個例子
!#/bin/bash
echo ‘‘
執行之前chmod +x
執行./
2.一個小竅門 cp /dev/null /var/log/apache2/access.log
利用/dev/null來晴空apache2中的記錄檔
注釋:把/dev/null看作"黑洞". 它非常等價於一個唯寫檔案. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麼也讀不到. 然而, /dev/null對命令列和指令碼都非常的有用.
禁止標準輸出.
1 cat $filename >/dev/null 2 # 檔案內容丟失,而不會輸出到標準輸出. |
禁止標準錯誤 (來自例子 12-3).
1 rm $badname 2>/dev/null 2 # 這樣錯誤資訊[標準錯誤]就被丟到太平洋去了. |
禁止標準輸出和標準錯誤的輸出.
1 cat $filename 2>/dev/null >/dev/null 2 # 如果"$filename"不存在,將不會有任何錯誤資訊提示. 3 # 如果"$filename"存在, 檔案的內容不會列印到標準輸出. 4 # 因此Therefore, 上面的代碼根本不會輸出任何資訊. 5 # 6 # 當只想測試命令的退出碼而不想有任何輸出時非常有用。 7 # 8 # 9 # cat $filename &>/dev/null 10 # 也可以, 由 Baris Cicek 指出. |
例子 28-1. 隱藏cookie而不再使用
1 if [ -f ~/.netscape/cookies ] # 如果存在則刪除. 2 then 3 rm -f ~/.netscape/cookies 4 fi 5 6 ln -s /dev/null ~/.netscape/cookies 7 # 現在所有的cookies都會丟入黑洞而不會儲存在磁碟上了. |
1>/dev/null 2>&1的含義
shell中可能經常能看到:>/dev/null 2>&1
命令的結果可以通過%>的形式來定義輸出
/dev/null 代表空裝置檔案
> 代表重新導向到哪裡,例如:echo "123" >/home/123.txt
1表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於"1>/dev/null"
2 表示stderr標準錯誤
&表示等同於的意思,2>&1,表示2的輸出重新導向等同於1
那麼本文標題的語句:
1>/dev/null首先表示標準輸出重新導向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。
2>&1 接著,標準錯誤輸出重新導向等同於標準輸出,因為之前標準輸出已經重新導向到了空裝置檔案,所以標準錯誤輸出也重新導向到空裝置檔案。
來源:http://www.yunwei.org/read.php?18
小竅門 IO重新導向 ls>1.txt將結果進行儲存到檔案
3、利用crontab在自動清理log檔案
只用把上面的sh檔案寫到crontab中
使用許可權 : root使用者和crontab檔案的所有者
crontab格式
文法 : crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v[UserName]|File ] 說明 : crontab是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user的話,就是表示設定自己的時程表。 參數 : -e [UserName]:執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe) -r [UserName]: 刪除目前的時程表 -l [UserName]: 列出目前的時程表
-v [UserName]:列出使用者cron作業的狀態
例子 crontab -u root-e就可以開啟vi了
然後寫入0 6 * * * /root/clearlog.sh表示每日早上6點就會執行
0 * * * * /bin/ls 每月每天每小時的第 0 分鐘執行一次 /bin/ls
*/20 6-12 * 12 * /usr/bin/backup
在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次/usr/bin/backup
200-23/2 * * * echo "haha"
每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo"haha"
4、部署bashshell的環境
echo$SHELL 看shell版本 /bin/bash
我們可以從網上下源碼bash-3.2.48.tar.gz
解壓./configure也可以通過--prefix=/home/ols32來指定安裝目錄
編譯 make 測試 make tests
5、登陸ssh如果沒有指定帳號 例 ssh 192.168.1.2 相當於以root登陸
或者ssh 帳號@ip 例如 ssh [email protected]
【shell】使用 /dev/null crontab