對unix系統管理員來說,日常例行要做的系統維護、管理工作是非常多而繁瑣的,雖然現在各unix版本都有了圖形介面,但對我們這些中windows病毒太深的人來說,使用起來自然不是那麼得心應手。其實unix也有自己的獨到之處,那就是方便靈活、功能強大的unix shell 指令碼(shell script,在有的文章中也叫shell程式)。
unix shell指令碼是使用者建立的ascii碼檔案,在檔案中包含著unix 或 shell命令,這些命令是可以在命令列提示符後鍵入的任何命令,包括管道、過濾器和重定向等操作。shell指令碼還具有高階程式語言的一切特徵,而且不需要編譯和另外的命令解釋程式支援。shell指令碼的強大功能不僅使簡化管理員的日常工作成為可能,而且還可以實現unix管理工具所不能提供的功能(由於unix的版本很多,本文僅以hp-ux為例)。
實現不同終端登入同一帳號時執行不同的程式
一般情況下,系統管理員和普通使用者登入同一帳號的目的是不同的,系統管理員登入後要進行的是系統維護,通常是在shell命令提示符下工作,而普通使用者則希望登入後直接進入有關業務系統,而退出業務系統時同時退出登入。在網路終端接入模式下可以用下面的辦法可以解決這個問題:
我們把系統管理員所使用的網路終端在/etc/hosts檔案中定義為adm,普通使用者所使用的網路終端依次定義為client1,client2,client3.......,然後在要登入的帳號的自動指令碼檔案.profile的適當位置新增以下**:
who am i -r |cut -d"(" -f2|cut -d")" -f1| grep '^adm'>/dev/null
#過濾出當前使用者主機名為adm的行
if [ $? = 0 ]
#判斷過濾輸出是否為空
then
exec sh
#進入命令提示符
else
exec 業務系統程式
#執行業務系統
fi如果不同的使用者在同一帳號中所使用的業務系統也不同,那麼上面的**可擴充為:
term_name=` who am i -r|cut -d"(" -f2|cut -d")" -f1`
#取當前使用者主機名
case "$term_name"
inadm) exec sh;;
client1) exec業務系統執行程式1;;
client2) exec業務系統執行程式2;;
esac
在兩台主機間合理分配資源
假設有hosta、hostb兩台主機,hosta上有一帳號user1用來執行一大型應用系統main,同時該系統使用的資料庫也在hosta的資料庫伺服器dbserver中,由於受硬體資源所限,最多只能有10個使用者登入到user1使用該系統,第11個使用者登入後使用該系統時,出現系統資源不足的相關提示。我們可以利用unix遠端登入信任機制和資料庫網路訪問模式,結合shell指令碼,在hosta和hostb之間自動分配資源。
1、 把hosta和hostb分別設成資料庫的伺服器和客戶機;
2、 在hosta中新增帳號user1,並將hosta的user1設為信任帳號(以上兩步的具體步驟非本文討論範圍)
3、 在hostb的帳號user1中安裝相同的應用系統;
4、 在hosta帳號user1的.profile的適當位置,加入以下指令碼**:
max_user_no = 10 #定義最大使用者數
user_no=`w|grep '^user1'|wc -l`
#當前使用者數
if test $user_no -gt $max_user_no
then
rlogin -8 hostb user1
#自動登入到hostb
else
exec main #在本機執行main
fi自動刪除core檔案
core檔案一般作為嚴重錯誤或quit訊號的結果,產生在程序被異常中止時。程式設計師可以使用它來確定當程序被終止時的情況。core檔案可能很大,當不再需要時應該從系統上刪除。可以執行含有以下**的指令碼來發現和清除系統上的core檔案:
echo "正在搜尋並刪除core檔案......"
find / -name core -print -exec rm {} ; #顯示並刪除所有的core檔案
你還可以通過corn定期執行這個指令碼。
以上只是我總結工作中使用shell指令碼的幾個典型的例子,其實它的功能之強大遠遠不止這些,希望大家能夠利用《網管員世界》這個空間,多多交流,互相提高。
UNIX SHELL 檔案系統
命令功能 ls列出目錄內容 cd改變所在目錄 pwd列印當前工作目錄 rm刪除檔案 rmdir 刪除空目錄 cp複製檔案或目錄 mv移動或重新命名檔案或目錄 命令 pwd printworkingdirectory 列印當前檔案工作目錄的全路徑 使用 p選項 在連線目錄下列印實際路徑 命令 ls l...
sap指令碼執行 SAP指令碼 在系統中建立指令碼
教 程 目 錄 要啟動指令碼,您必須執行事務se71,這將開啟form painter.在form painter的請求螢幕中,輸入乙個表單和語言欄位中sapscript表單的名稱和語言.讓我們分別在這些欄位中輸入 rvinvoice01 和 en 段落提供格式化一段文字和字型所需的所有資訊.要建立...
SAP BASIS系統管理
系統監控 1 sm51 2 sm50 3 sm66 系統日誌 1 sm21 sap ccms 1 rz20 2 st06 作業系統監視器 operating system monitor 用於分析整個sap技術棧的效能 4 ssaa 用於執行常規的日 周和月的系統管理功能。5 smlg 用於監控sa...