UNIX shell 指令碼在系統管理中的使用技巧

2021-04-23 11:33:22 字數 2198 閱讀 2815

對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...