當命令或語句不在命令行執行,而是通過一個程式文件執行時,該程式就稱為shell script或shell 程式。shell腳本文件中可以編寫一系列命令和命令語句、變數和流程式控制制語句等結合起來就形成了一個功能強大的shell script shell 程式類似於DOS系統下的批處理程式(*.bat) ...
當命令或語句不在命令行執行,而是通過一個程式文件執行時,該程式就稱為shell script或shell 程式。shell腳本文件中可以編寫一系列命令和命令語句、變數和流程式控制制語句等結合起來就形成了一個功能強大的shell script
shell 程式類似於DOS系統下的批處理程式(*.bat)
Windwos下利用批處理程式bat開發的備份網站及資料庫的腳本
@echo off set date=%date:~0,4%-%date: ~5,2%-%date:~8,2% mysqldump -uroot -ppassword -A -B > D:\back\"%date%".sql rar.exe a -k -r -s -ml D:\bak\"%date%".sql.rar D:\bak\"%date%".sql del D:\bak\*.sql rar.exe a -k -r -s -ml D:\bak\"%date%"htdocs.rar D:\work\PHPnow\htdocs
清除/var/log/message 系統日誌文件命令腳本
# 使用root身份運行這個腳本 # 清除日誌版本,版本:v1 cd /var/log cat /dev/null > messages echo "Logs cleaned up."
問題:
1. 不是root執行許可權執行不了
2. 沒有流程式控制制判斷是否存在文件
LOG_DIR=/var/log # $UID為0的時候,用戶才具有root用戶的許可權 ROOT_UID=0 # 使用root用戶來運行 if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit 1 fi cd $LOG_dir || { echo "Can't change to necesary directory." >&2 exit 1 } cat /dev/null > messages echo "Logs cleaned up." exit 0
# 推出之前返回0表示成功,返回1表示失敗
清空日誌的三種方法:
# echo "" >test.log
# >a.log
# cat /dev/null > test.log
應用場景:用於保留文件,清空內容