1.創建和運行 shell 腳本
shell 腳本提供了一種用來執行冗長的命令、大型或復雜的命令序列以及例程任務的簡單方法。shell 腳本是包含一個或多個命令的文件。輸入 shell 腳本文件的名字后,系統會執行文件中所包含的命令序列。
可以使用文本編輯器來創建一個 shell 腳本。腳本文件既可以包含操作系統的命令,也可以包含 shell 的內置命令。
以下的步驟是用來編寫 shell 腳本文件的常規方針:
(1)使用文本編輯器,創建并且保存一個文件。可以在 shell 腳本文件中包含 shell 命令和操作系統命令的任意組合。根據約定,設置為不為許多用戶來使用的 shell 腳本文件將存放在 $HOME/bin 目錄中。
注:操作系統并不支持在 shell 腳本文件內的 setuid 或者 setgid 子例程。
(2)要只允許所有者運行(或者執行)文件,使用 chmod 命令。例如,如果文件名為 s cript1,請輸入:
chmod u=rwx s cript1
之后按下 Enter(回車)鍵。
(3)在命令行上輸入腳本文件名,運行 shell 腳本文件。如果要運行 s cript1 shell 腳本文件,請輸入:
s cript1
之后按下 Enter(回車)鍵。
注:如果是在命令行上,shell 命令(ksh、bsh 或者 csh)在 shell 腳本文件名之前,則可以運行指定的 shell 腳本文件而不需要使它的權限為可執行。
例如,要在 korn shell 控制下運行名為 s cript1 的非可執行腳本文件,可以輸入:
ksh s cript1
2.在 Korn shell或者 Posix shell 上運行多后臺進程
Korn shell 或著 POSIX shell 允許運行一個或者多個命令作為后臺的進程。這些在 shell 腳本文件內運行的命令被稱為協進程。
通過在命令后面放置 |& 運算符可以指定一個協進程。命令的標準輸入和輸出均被管道傳輸到腳本文件。
協進程必須滿足以下設定的約束:? 每條消息的尾部必須包含一個換行符
? 將所有輸出消息發送到標準輸出
? 每條消息后面清空標準輸出
下面的例子顯示了輸入如何被傳輸給協進程并且由協進程返回。
echo "Initial process"
./FileB.sh |&
read -p a b c d
echo "Read from coprocess: $a $b $c $d"
print -p "Passed to the coprocess"
read -p a b c d
echo "Passed back from coprocess: $a $b $c $d"
FileB.sh
echo "The coprocess is running"
read a b c d
echo $a $b $c $d
結果標準輸出如下面所示:
Initial process
Read from coprocess: The coprocess is running
Passed back from coprocess: Passed to the coprocess
如果要寫到協進程,請使用 print -p 命令。如果要從協進程讀出,請使用 read -p 命令。
3.為腳本文件指定 Shell
可以在 shell 腳本文件中包含 shell,從而在指定的 shell 里運行 shell 腳本文件。
如果要在指定的 shell 下運行可執行的 shell 腳本文件,在 shell 腳本文件的第一行中輸入 #!Path,然后按下 Enter(回車)鍵。
#! 字符表明文件類型。Path 變量指定運行 shell 腳本文件的 shell 的路徑名。
例如,要在 Bourne shell 下運行 bsh 腳本文件,請輸入:
#!/usr/bin/bsh
按下 Enter(回車)鍵。
硬盤作為用戶存儲數據的主要場所,其最大的用途莫過于存儲數據,但有時往往由于用戶操作...
在服務器磁盤陣列出現故障以后,一般情況下會采用兩種方法來處理:一是設備廠家對故障設...
企業通過信息化可以大大提高辦公和管理效率、節省成本、規范業務和流程,輔助提升企業的...
一.引言 強制性的信息安全架構( uniLink ):將網絡劃分為資源網與用戶網,通過資源...
東芝硬盤開盤成功恢復數據 TOSHIBA MK6008GAH 三星原裝超薄移動硬盤60G容量,用了有兩...
現在選擇IDE磁盤陣列卡(IDE RAID卡)來確保數據安全的人越來越多,如何正確使用IDE RAID...
筆者經常接到一些親戚朋友經常打電話給我,詢問一些有關數據丟失的問題。