dd命令復制硬盤
1)確保原盤和目的盤幾何特性相同
2)成為超級用戶
3)在用主盤的系統中輸入touch /reconfigure,有主盤的系統需要/reconfigure文件,以便在重新啟動時發現復制盤
4)輸入init 0關閉系統
5)將復制盤連接到系統并開機
6)在OK提示符下輸入boot
7)輸入dd if=/dev/dsk/device-name of=/dev/dsk/device-name bs=blocksize (輸入文件if是主盤設備,輸入文件of是復制盤設備)
8)輸入fsck /dev/rdsk/device-name (檢測新的文件系統)
9)輸入mount /dev/rdsk/device-name /mnt 加載復制盤的root文件系統。
10)編輯復制盤上的/etc/vfstab文件,指向正確的設備名。
11)輸入umount/mnt ,卸載復制盤的root文件系統。
12)輸入init 0關閉系統。
13)輸入boot diskN -s以單用戶模式引導復制盤。
14)輸入sys-uconfig恢復配置復制盤,在該盤配置恢復后系統關閉。
15)輸入boot diskN 引導復制盤
16)提供相關的系統信息。(HOSTNAME TIMEZONE IP...)
17)系統完成,即作為超級用戶登錄驗證系統信息。
例:
#dd if=/dev/dsk/c0t0d0s2 of=/dev/dsk/c0t1d0s2 bs=100k
#fsck /dev/rdsk/c0t1d0s2
#mount /dev/rdsk/c0t1d0s2 /mnt
#cd /mnt/etc
#vi /etc/vfstab
#cd /;umount /mnt
#init 0
OK boot disk2 -s
#sys-unconfig
OK boot disk2 -s
=================================================================================
Solaris網絡配置
主機名為sampdt,ip 10.1.1.1
1 /etc/hosts 主機名解析
#
# Internet host table
#
127.0.0.1 localhost
10.1.1.1 sampdt loghost
10.1.1.46 test.china.org
10.1.1.3 sidemo
2 /etc/hostmane.hme0 網絡接口名
sampdt
3 /etc/netmasks 網絡掩碼
4 /etc/inetd.conf 服務項目定義
5 /etc/defaultroot 設定路由
6 /etc/nsswitch.files 設定名字搜索順序
7 /etc/defaultrouter 缺省路由
做為DNS服務器
建立/etc/named.boot
named.boot格式:
directory /etc/namedb
cache . named.root
primary 0.0.127.in-addr.arpa named.local
primary domain name file
遠程訪問命令
1. rlogin 在遠程機上注冊
格式 : rlogin hostname -l username
2. rsh 在遠程機上執行一個程序
格式 : rsh hostname -l username order
3. rcp 在遠程系統之間拷貝文件
格式 : rsh host:filename filename
訪問鑒別相關文件
當rlogin,rsh,rcp命令時,有幾個文件對網絡安全是很重要的.
/etc/passwd
如遠程系統的口令文件有本地用戶的登記項,否則必須使用 [-l] 選項以指明不同用戶,可支持root用戶。
$home/.rhosts
rlogin,rsh,rcp首先檢查用戶主目錄下的.rhosts文件,如主機及用戶被列在文件中,則此用戶為可信任主機,不需口令即可登錄,如遠程鑒
別失敗,則正常詢問口令
/etc/hosts.equiv
作用與.rhosts 文件類似,文件中列出用戶對于本機為可信任用戶,不需口令即可登錄(除超級用戶)
網絡監控
1.rusers 標識網絡上注冊用戶
格式:rusers -la
2.rup 標識網絡上主機
命令格式:rup
3.ping 檢測主機連接狀況
命令格式:ping [hostname|IP address]
4.spray ping命令格式為低層協議,spray使用高層協議
命令格式:spray hostname
5.netstat 顯示與網絡有關的各種數據結構
命令格式:netstat -[r| i]n
-r :顯示路由信息 -i :顯示接口信息
6.ifconfig 顯示網絡接口
命令格式:ifconfig -a
其中 lo0: 本機自回饋接口 le0: 10M接口 hme0:100M接口 hme1:第二100M接口
7.netstat 顯示與網絡有關的各種數據結構
命令格式:netstat -[r| i]n -r :顯示路由信息
-i :顯示接口信息
8.route 路由設置
命令格式:route [add|delete] 設置網絡路由
defaultrouter <-缺省靜態路由
9.arp 反響解析
命令格式:arp -[a|s]
================================================================================
Solaris使用技巧
在從WINDOWS傳到UNIX在每行的結尾可能會出現^M
解決方法:
1、用ASCII模式重傳。
2、用vi 中的替換
%s/^M$// <- ^ ctrl+v M ctrl+m
文件名為 -filename 如何去刪除
rm -- "-filename"
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no -
/dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /usr ufs 1 no -
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 /download ufs 2 yes -
/dev/dsk/c0t3d0s1 /dev/rdsk/c0t3d0s1 /export ufs 2 yes -
#/dev/dsk/c0t0d0s1 - - swap - no -
#swap - /tmp tmpfs - yes -
ls的特殊用法:
%ls -R // 顯示所有文件包括子目錄
%ls * // 同上
%ls -t // 以時間排序來顯示
下面的語句可以幫你計算有多少個文件和多少個目錄..
# ls -l * |grep "^-"|wc -l // to count files
# ls -l * |grep "^d"|wc -l // to count dir
還可以將以上的語句變成script或做個alias
只列子目錄的方法:
ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(Linux)
ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)
Grep命令用法
%grep user1 /etc/passwd
%grep -i user1 /etc/passwd //不管大小寫
Alias用法
%alias find1 find . -name '\!*' -print // alias a new find
Find命令用法
%find . ctime 0 -print //搜尋今天修改過的所有文件
%find . -name '*.bak' -exec rm {}\ //搜尋加刪除
%find . \(-name *.txt -ctime 7\) -print //搜尋7天前修改過的txt文件
利用Find命令改變所有權,想要改變當前目錄下所有文件的所有權,可以這樣:
find . -exec chown OWNER.[GROUP] {} \; (Solaris)
find . -exec chown -R OWNER.[GROUP] {} \; (Linux)
Cut命令用法
%cut -f field_list file //以逗號或空格來間隔
%cut -d: -f5,7-9 mydata //以冒號來間隔
%cut -s -c35-40 mydata //以列數來間隔-s 不包括頭部注釋
列出除了某些類型文件的當前目錄所有文件:
使用Ksh,用ls !(*.Z)可以顯示所有文件,除了*.Z文件。
這個命令在一個目錄里有許多種類型的文件的時候很有用。
改變unix提示符:
%PS1=’newprompt’
%export PS1
還可以這么做:
%set prompt='user1[\!]' // \! 顯示命令次數
為環境變量增加新PATH路徑(不影響老路徑)。
%PATH=$PATH:$HOME/bin:/…/…/
%export PATH
列舉與某個主題相關的所有unix命令:
%apropos lp //列舉與lp(打印機)相關的所有命令
查看unix版本號:
%uname –a
UNIX下整個目錄拷貝
%cp –r /home/baoshan/zzy .
//將/home/baoshan/zzy整個目錄拷貝到當前目錄下
UNIX下文件格式與DOS文件格式互換
%unix2dos oldfile newfile
%dos2unix oldfile newfile
查看UNIX下已經安裝的包-package
%pkginfo
顯示某一目錄下所有文件size
%du –d /; //顯示根目錄下所有文件的size大小
文件加密:
%crypt passwd < myfile > newfile //compress
%rm myfile
%crypt passwd < newfile //restore
取消^M字符:
當你FTP一些DOS文件到unix下時,你經常會看見每行文件后面有個討
厭的^M 字符,(把 HTML 文件傳輸到 UNIX 系統可引起回車符轉變成“^M”字符),
有兩個簡單的方法可以取消它。
用"vi"打開此文件,在Command mode下敲入:
:%s/^V^M//g
或者,在UNIX SHELL下敲入:
sed 's/^V^M//g' foo > foo.new
使用nohup命令:
如果你想進程在你退出系統后還能執行,可以使用NOHUP命令
如: % nohup tar -cf /dev/tape /home &
你退出后再重新登錄的話,使用'ps'命令可以看到進程還在執行
查看文件的方法:
如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd
你知道怎么查看文件中間一段嗎?你可以使用sed命令 如:
sed -n '5,10p' /etc/passwd
這樣你就可以只查看文件的第5行到第10行。
檢查磁盤剩余空間:
%df –k
%df –t
超級用戶修改系統時間:
#date MMDDHHMI
#date –u MMDDHHMIYYYY
超級用戶修改正常用戶口令:
#passwd –d user1 //刪除用戶user1的口令
==================================================================================
SUN軟件包管理的命令:pkginfo、pkgadd和pkgrm
pkginfo
查看當前操作系統已經安裝的軟件包。
# pkginfo | more
application SUNWAxg Solaris XGL 3.3 AnswerBook
application SUNWaadm Solaris 7 System Administrator Collection
system SUNWab2m Solaris Documentation Server Lookup
system SUNWab2r Solaris Documentation Server
system SUNWab2s Solaris Documentation Server
system SUNWab2u Solaris Documentation Server
application SUNWabda Sun Ultra 5/10 Hardware AnswerBook
application SUNWabe Solaris 7 User Collection
application SUNWabsdk Solaris 7 Software Developer Collection
pkginfo [ -d [ device | pathname ] ] [ -l ] pkg_name
參數:
-d 軟件包所在的設備路徑
-l 軟件包的詳細描述
pkg_name 軟件包的 名字
# pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio
PKGINST: SUNWaudio
NAME: Audio applications
CATEGORY: system
ARCH: sparc
VERSION: 3.6.4,REV=1.98.08.13
BASEDIR: /
VENDOR: Sun Microsystems, Inc.
DESC: Audio binaries
PSTAMP: dtbuild37s19980813171753
HOTLINE: Please contact your local service provider
STATUS: spooled
FILES: 9 spooled pathnames
2 directories
3 executables
4 package information files
700 blocks used (approx)
pkgrm
pkgrm用于刪除軟件包
語法:
pkgrm package_name
# pkgrm SUNWaudio
The following package is currently installed:
SUNWaudio Audio applications
(sparc) 3.6.4,REV=1.98.08.13
Do you want to remove this package? y
## Removing installed package instance
## Verifying package dependencies.
WARNING:
The package depends on the package
currently being removed.
WARNING:
The package depends on the package
currently being removed.
WARNING:
The package depends on the package
currently being removed.
WARNING:
The package depends on the package
currently being removed.
Dependency checking failed.
Do you want to continue with the removal of this package [y,n,?,q]
注:如果某個文件被多個軟件包共用,則只當最后的包被刪除時才被刪除。
pkgadd
使用pkgadd添加軟件包
命令格式:
pkgadd [ -d [device | pathname ]] pkg_name
# pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio
Processing package instance from
Audio applications
(sparc) 3.6.4,REV=1.98.08.13
Copyright 1998 Sun Microsystems, Inc. All rights reserved.
Using as the package base directory.
## Processing package information.
## Processing system information.
2 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
This package contains scripts which will be executed with super-user
permission during the process of installing this package.
Do you want to continue with the installation of [y,n,?] y
Installing Audio applications as
## Installing part 1 of 1.
Installation of was successful.
=================================================================================
Solaris性能監控的Swap空間管理
隨著電子商務如火如荼的開展,網站服務器的性能變得尤其重要。一旦服務器的能力不能滿足用戶的需要,就會對用戶的服務大打折扣,那么就需要對服務器進行升級擴容。但是,有些時候只需對服務器進行一些適當的性能調整,便可以越過性能的瓶頸,大大提高服務器的吞吐能力,從而減少服務器升級的費用。
本文介紹了在Solaris平臺上Swap(交換)空間的基本概念、實現的原理以及對Swap(交換)空間進行監控的方法和調整的策略。
什么是SWAP(交換)空間
對于一般的Solaris系統管理員來說,很少會接觸Swap(交換)空間,在他們看來Swap區只不過是磁盤上的一兩個分區或是幾個Swap(交換)文件,當系統沒有足夠的物理內存來處理當前進程的時候,就利用Swap(交換)空間作為虛擬內存的臨時存儲空間,這種說法從技術角度來說是沒有錯的,但Solaris在實現Swap時有其非常獨特的地方。
SWAP空間作用
眾所周知,現代操作系統都實現了“虛擬內存”這一技術,不但在功能上突破了物理內存的限制,使程序可以操縱大于實際物理內存的空間,更重要的是“虛擬內存”是隔離每個進程的安全保護網,使每個進程不受其他程序的干擾。
Swap空間的作用可簡單描述為:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。這種現象對于計算機使用者是經常遇到的。
有一點要聲明的是,并不是所有從物理內存中交換出來的數據都會被放到Swap中(如果這樣的話,Swap會不堪重負),有相當一部分的數據直接交換到文件系統。例如,有的程序會打開一些文件,對文件進行讀寫(其實每個程序都至少打開一個文件,那就是運行程序本身),當這些程序的內存空間需要交換出去時,文件部分的數據就沒有必要放到Swap空間中了,如果是讀文件操作,那么內存數據直接就釋放了,不需要交換出來,因為下次需要時,直接從文件系統就能恢復;如果是寫文件,只需要將變化的數據保存到文件中,以便恢復。但是那些用malloc(3C)和new函數生成的對象的數據則不同,需要Swap空間,因為它們在文件系統中沒有相應的“儲備”文件,因此被稱為“匿名”(Anonymous)的內存數據,這類數據還包括堆棧中的一些狀態和變量數據等,所以說,Swap空間是“匿名”數據的交換空間。
Swap的配置對性能的影響
太多的Swap空間會浪費磁盤的空間,而太少的Swap空間,系統則會發生錯誤。
如果系統的物理內存用光了,你的系統就會跑得慢,但仍能運行;如果Swap空間用光了,那么系統就會發生錯誤。例如,Web服務器能根據不同的請求數量衍生出多個服務進程(或線程),如果Swap空間用完,則服務進程無法進動,通常會出現"application is out of memory"的錯誤,嚴重時會造成服務進程的死鎖。因此Swap空間的分配是很重要的。
通常情況下,Swap空間應大于或等于物理內存的大小,最小不應小于64M,通常Swap空間的大小應是物理內存的2-2.5倍(Solaris 2以上的版本有所變化,見下文)。但根據不同的應用,應有不同的配置:如果是小的桌面系統,只需要較小的Swap空間,而大的服務器系統則視情況不同需要不同大小的Swap空間。特別是數據庫服務器和Web服務器會隨著訪問量的增加,對Swap 空間的要求也會增加,具體配置參見各自服務器產品的說明。
另外,Swap分區的數量對性能也有很大的影響。因為Swap交換的操作是磁盤I/O的操作,如果有多個Swap交換區,Swap空間的分配會以輪流的方式操作于所有的Swap,這樣會大大均衡I/O的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間位于等待狀態,效率很低,用性能監視工具就會發現,此時的CPU并不很忙,而系統卻慢,這說明,瓶頸在I/O上,依靠提高CPU的速度是解決不了問題的。
性能監視
Swap空間的分配固然很重要,而系統在運行時的性能監控卻更加有價值,通過性能監視工具可以檢查系統的各項性能指標,找到系統性能的瓶頸。本文只介紹一下在Solaris下和Swap相關的一些命令和用途。
最常用的是Vmstat命令,在大多數Unix平臺下都有此命令,此命令可以查看大多數性能的指標。
另外使用swap -s 也能簡單的查看當前swap資源的使用情況。例如:
# swap -s
total: 65896k bytes allocated + 56840k reserved = 122736k used, 1069456k available
能夠方便的看出swap空間的已用和未用資源的大小。應該使Swap保持30%的負載以下,才能保證系統的良好性能。
Solaris中Swap的特點
虛擬Swap空間
本來Swap空間就是為虛擬內存服務的,現在Solaris的Swap空間也成為虛擬,這到底是怎么回事呢?
讓我們看一個例子就明白了,當在Solaris 2以前版本的Solaris(或其它Unix, 如Linux)上編程時經常會出現一個問題:
假設系統當前還有可用的內存空間為30M,而只剩下10M的Swap空間了,這時,如果有一個進程開始運行并企圖執行Malloc(15*1024*1024)的命令(分配15M空間),這個進程會因為這個命令而失敗。
為什么呢?系統不是有30M可用的內存空間嗎?原因在于:你的Swap空間不足,系統認為你在分配空間以后,沒有能力(空間)在發生頁面交換時,將這部分數據保存起來,因此認為你沒有資格分配這塊空間。這不是太不公平了吧!也許這15M空間根本不用交換,當前系統可是還有30M內存空間的富余啊!
還有更不公平的呢?有些大型系統配備了海量的內存,1G或4G,配了這么多內存就是為了避免交換,提高運行速度,可是系統還要為這個系統分配并不需要的Swap空間,占用了大量磁盤資源。
為了彌補這個缺陷,Sun為Solaris 2 以后的版本設計了虛擬Swap空間。所謂虛擬的Swap空間,概念其實很簡單,swap空間再也不是單指硬盤的分區或文件。虛擬Swap空間包含兩個部分:部分物理內存和傳統上的Swap分區。經過適當的配置,可以使系統需要Swap空間時,先使用內存部分的swap空間,如果內存部分的swap空間不夠,再使用磁盤部分的Swap空間。這樣,也許你硬盤上的Swap空間很少得到使用了,甚至根本不需要Swap分區。
Swap空間與TMPFS文件系統的關系
你知道嗎?虛擬Swap空間與 /tmp目錄有相當大的關系。Sun在實現
/tmp目錄時,充分考慮了應用程序運行的效率。許多應用程序,特別是數據庫服務都會頻繁使用
/tmp目錄作為臨時數據保存區,而Solaris將
/tmp目錄下的文件都放在內存中而不是硬盤里,這樣會大大提高應用程序的效率。
但是/tmp目錄的空間是從系統虛擬空間里擠出來的,是虛擬Swap空間的一部分。如果說,你用完了/tmp空間,也就是用完了Swap空間,所以要小心監視系統的/tmp目錄的使用情況,千萬別用光了,否則系統會癱瘓!下面兩點建議作為參考:
1.在Mount /tmp目錄時,使用(-o Size)選項來控制/tmp目錄的大小。
2.當使用編譯器編譯文件時,如果不想占用Swap空間,則用TMPDIR環境變量指向另外一個臨時目錄,而不是/tmp目錄。
有關Swap空間操作的系統命令
增加Swap空間
1.成為超級用戶 $su - root
2.創建Swap文件 #mkfile nnn[klblm] filename
如:#mkfile 100m swapfile1
3.激活Swap文件
#/usr/sbin/swap -a /path/filename
Swap文件必須以絕對路徑來指定,filename指的是上一步創建的文件。
4.現在新加的Swap文件已經起作用了,但系統重新啟動以后,并不會記住前幾步的操作。因此要在/etc/vfstab文件中記錄文件的名字,和Swap類型,如:
/path/filename - - Swap - no -
5.效驗Swap文件是否加上 /usr/sbin/swap -l
刪除多余的Swap空間
1.成為超級用戶
2.使用swap -d 命令收回swap空間。
#/usr/sbin/swap -d /path/filename
3.編輯/etc/ufstab文件,去掉此Swap(交換)文件的實體。
4.從文件系統中回收此文件。
#rm swap-filename
5.當然,如果此Swap(交換)空間不是一個文件,而是一個分區,則需創建一個新的文件系統,再掛接到原來的文件系統上。
==================================================================================
隨著電子商務如火如荼的開展,網站服務器的性能變得尤其重要。一旦服務器的能力不能滿足用戶的需要,就會對用戶的服務大打折扣,那么就需要對服務器進行升級擴容。但是,有些時候只需對服務器進行一些適當的性能調整,便可以越過性能的瓶頸,大大提高服務器的吞吐能力,從而減少服務器升級的費用。
本文介紹了在Solaris平臺上Swap(交換)空間的基本概念、實現的原理以及對Swap(交換)空間進行監控的方法和調整的策略。
什么是SWAP(交換)空間
對于一般的Solaris系統管理員來說,很少會接觸Swap(交換)空間,在他們看來Swap區只不過是磁盤上的一兩個分區或是幾個Swap(交換)文件,當系統沒有足夠的物理內存來處理當前進程的時候,就利用Swap(交換)空間作為虛擬內存的臨時存儲空間,這種說法從技術角度來說是沒有錯的,但Solaris在實現Swap時有其非常獨特的地方。
SWAP空間作用
眾所周知,現代操作系統都實現了“虛擬內存”這一技術,不但在功能上突破了物理內存的限制,使程序可以操縱大于實際物理內存的空間,更重要的是“虛擬內存”是隔離每個進程的安全保護網,使每個進程不受其他程序的干擾。
Swap空間的作用可簡單描述為:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。這種現象對于計算機使用者是經常遇到的。
有一點要聲明的是,并不是所有從物理內存中交換出來的數據都會被放到Swap中(如果這樣的話,Swap會不堪重負),有相當一部分的數據直接交換到文件系統。例如,有的程序會打開一些文件,對文件進行讀寫(其實每個程序都至少打開一個文件,那就是運行程序本身),當這些程序的內存空間需要交換出去時,文件部分的數據就沒有必要放到Swap空間中了,如果是讀文件操作,那么內存數據直接就釋放了,不需要交換出來,因為下次需要時,直接從文件系統就能恢復;如果是寫文件,只需要將變化的數據保存到文件中,以便恢復。但是那些用malloc(3C)和new函數生成的對象的數據則不同,需要Swap空間,因為它們在文件系統中沒有相應的“儲備”文件,因此被稱為“匿名”(Anonymous)的內存數據,這類數據還包括堆棧中的一些狀態和變量數據等,所以說,Swap空間是“匿名”數據的交換空間。
Swap的配置對性能的影響
太多的Swap空間會浪費磁盤的空間,而太少的Swap空間,系統則會發生錯誤。
如果系統的物理內存用光了,你的系統就會跑得慢,但仍能運行;如果Swap空間用光了,那么系統就會發生錯誤。例如,Web服務器能根據不同的請求數量衍生出多個服務進程(或線程),如果Swap空間用完,則服務進程無法進動,通常會出現"application is out of memory"的錯誤,嚴重時會造成服務進程的死鎖。因此Swap空間的分配是很重要的。
通常情況下,Swap空間應大于或等于物理內存的大小,最小不應小于64M,通常Swap空間的大小應是物理內存的2-2.5倍(Solaris 2以上的版本有所變化,見下文)。但根據不同的應用,應有不同的配置:如果是小的桌面系統,只需要較小的Swap空間,而大的服務器系統則視情況不同需要不同大小的Swap空間。特別是數據庫服務器和Web服務器會隨著訪問量的增加,對Swap 空間的要求也會增加,具體配置參見各自服務器產品的說明。
另外,Swap分區的數量對性能也有很大的影響。因為Swap交換的操作是磁盤I/O的操作,如果有多個Swap交換區,Swap空間的分配會以輪流的方式操作于所有的Swap,這樣會大大均衡I/O的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間位于等待狀態,效率很低,用性能監視工具就會發現,此時的CPU并不很忙,而系統卻慢,這說明,瓶頸在I/O上,依靠提高CPU的速度是解決不了問題的。
性能監視
Swap空間的分配固然很重要,而系統在運行時的性能監控卻更加有價值,通過性能監視工具可以檢查系統的各項性能指標,找到系統性能的瓶頸。本文只介紹一下在Solaris下和Swap相關的一些命令和用途。
最常用的是Vmstat命令,在大多數Unix平臺下都有此命令,此命令可以查看大多數性能的指標。
另外使用swap -s 也能簡單的查看當前swap資源的使用情況。例如:
# swap -s
total: 65896k bytes allocated + 56840k reserved = 122736k used, 1069456k available
能夠方便的看出swap空間的已用和未用資源的大小。應該使Swap保持30%的負載以下,才能保證系統的良好性能。
Solaris中Swap的特點
虛擬Swap空間
本來Swap空間就是為虛擬內存服務的,現在Solaris的Swap空間也成為虛擬,這到底是怎么回事呢?
讓我們看一個例子就明白了,當在Solaris 2以前版本的Solaris(或其它Unix, 如Linux)上編程時經常會出現一個問題:
假設系統當前還有可用的內存空間為30M,而只剩下10M的Swap空間了,這時,如果有一個進程開始運行并企圖執行Malloc(15*1024*1024)的命令(分配15M空間),這個進程會因為這個命令而失敗。
為什么呢?系統不是有30M可用的內存空間嗎?原因在于:你的Swap空間不足,系統認為你在分配空間以后,沒有能力(空間)在發生頁面交換時,將這部分數據保存起來,因此認為你沒有資格分配這塊空間。這不是太不公平了吧!也許這15M空間根本不用交換,當前系統可是還有30M內存空間的富余啊!
還有更不公平的呢?有些大型系統配備了海量的內存,1G或4G,配了這么多內存就是為了避免交換,提高運行速度,可是系統還要為這個系統分配并不需要的Swap空間,占用了大量磁盤資源。
為了彌補這個缺陷,Sun為Solaris 2 以后的版本設計了虛擬Swap空間。所謂虛擬的Swap空間,概念其實很簡單,swap空間再也不是單指硬盤的分區或文件。虛擬Swap空間包含兩個部分:部分物理內存和傳統上的Swap分區。經過適當的配置,可以使系統需要Swap空間時,先使用內存部分的swap空間,如果內存部分的swap空間不夠,再使用磁盤部分的Swap空間。這樣,也許你硬盤上的Swap空間很少得到使用了,甚至根本不需要Swap分區。
Swap空間與TMPFS文件系統的關系
你知道嗎?虛擬Swap空間與 /tmp目錄有相當大的關系。Sun在實現
/tmp目錄時,充分考慮了應用程序運行的效率。許多應用程序,特別是數據庫服務都會頻繁使用
/tmp目錄作為臨時數據保存區,而Solaris將
/tmp目錄下的文件都放在內存中而不是硬盤里,這樣會大大提高應用程序的效率。
但是/tmp目錄的空間是從系統虛擬空間里擠出來的,是虛擬Swap空間的一部分。如果說,你用完了/tmp空間,也就是用完了Swap空間,所以要小心監視系統的/tmp目錄的使用情況,千萬別用光了,否則系統會癱瘓!下面兩點建議作為參考:
1.在Mount /tmp目錄時,使用(-o Size)選項來控制/tmp目錄的大小。
2.當使用編譯器編譯文件時,如果不想占用Swap空間,則用TMPDIR環境變量指向另外一個臨時目錄,而不是/tmp目錄。
有關Swap空間操作的系統命令
增加Swap空間
1.成為超級用戶 $su - root
2.創建Swap文件 #mkfile nnn[klblm] filename
如:#mkfile 100m swapfile1
3.激活Swap文件
#/usr/sbin/swap -a /path/filename
Swap文件必須以絕對路徑來指定,filename指的是上一步創建的文件。
4.現在新加的Swap文件已經起作用了,但系統重新啟動以后,并不會記住前幾步的操作。因此要在/etc/vfstab文件中記錄文件的名字,和Swap類型,如:
/path/filename - - Swap - no -
5.效驗Swap文件是否加上 /usr/sbin/swap -l
刪除多余的Swap空間
1.成為超級用戶
2.使用swap -d 命令收回swap空間。
#/usr/sbin/swap -d /path/filename
3.編輯/etc/ufstab文件,去掉此Swap(交換)文件的實體。
4.從文件系統中回收此文件。
#rm swap-filename
5.當然,如果此Swap(交換)空間不是一個文件,而是一個分區,則需創建一個新的文件系統,再掛接到原來的文件系統上。
===============================================================================
Solaris如何改變系統運行級別 init
系統運行級別有8種,分別為:
運行級別 意義
0 進入PROM狀態(OK狀態)
1 管理狀態(所有文件系統都掛上的單用戶模式,禁止其他用戶登錄)
2 多用戶模式(沒有網絡文件共享服務)
3 多用戶模式(有網絡文件共享服務)
4 未使用
5 退出操作系統并關機
6 重新啟動機器
S,s 單用戶模式
init
init命令用于改變操作系統的運行級別。
命令格式:
init [ 0123456Ss ]
# init 0
INIT: New run level: 0
The system is coming down. Please wait.
System services are now being stopped.
Print services stopped.
Stopping the syslog service.
syslogd: going down on signal 15
Aug 14 14:54:30 snmpdx: received signal 15
The system is down.
syncing file systems... done
Program terminated
Type help for more information
ok
shutdown
用于改變操作系統運行級別。
命令格式:
shutdown [ -y ] [ -g seconds ] [ -i init-state ] [message]
選項:
y 系統提示時默認回答為YES
g 過多長時間改變
i 想要的運行級別
message 給所有登錄用戶的信息
# shutdown -y -g 0 -i 0
Shutdown started. Mon Dec 15 15:13:57 PST 1997
Broadcast Message from root (console) on mcmurdo Mon Dec
15 15:13:57...
THE SYSTEM IS BEING SHUT DOWN NOW ! ! !
Log off now or risk your files being damaged
Changing to init state 0 - please wait
ok
halt
進入0運行級別
poweroff
關閉系統并切斷電源
reboot
重新啟動系統
=============================================================================
為Sun服務器配置多網卡
---- 在網絡設計中,在服務器端,為了防止網絡傳輸過載或出于連接多子網的需要,往往要為服務器配置多塊網卡。下面介紹如何為Sun服務器來配置新網卡。
---- 一.安裝新網卡
---- 1.通知操作系統在重新啟動時檢測新硬件.命令如下:
---- #touch /reconfigure
---- 2.關閉服務器和電源.
---- #shutdown -i5 -g60 -y
---- 此命令通知連接的客戶機,服務器將在60秒(-g60)后關閉;運行級別5(-i5)指明如果硬件支持,就自動關閉服務器電源。
---- 3.物理安裝新網卡
---- 小心取下服務器背板上的插板,移去網卡上的托架,安好網卡,再插回原位,最后將網線插入新網卡接口,啟動服務器。
---- 二.配置新網卡
---- 1.檢查新網卡的設備號
---- 服務臺器啟動后,用以下命令來檢查分配給新網卡的設備號,這與把網卡安裝在哪個槽上有關;
---- #dmesg
---- 此命令執行后將顯示所有用戶的設備號,如原有網卡的設備號為hme0,新網卡的設備號為hme1等;
---- 2.為新網卡配置主機名和IP地址
---- 在/etc 目錄用 vi 建立名為 hostname. 后跟新網卡的設備號(如hostname.hme1)的文件,其內容為綁定所給網卡的主機名;修改/etc/hosts文件,增加一條記錄,其前半部分為新網卡的IP地址,加空格后跟新網卡的主機名(hostname.hme1)。
---- 如:
10.10.10.100 sun1 #first network adapter
88.1.1.10 sun2 #second network adapter
---- 3.路由功能
---- 操作系統將自動開啟多網卡的路由功能,若想關閉路由功能,可用如下命令:
---- #touch /etc/notrouter
---- 完成以上步驟后重新啟動系統可用如下命令使配置生效
---- #shutdown -i6 -g60 -y
---- 最后不要忘記修改DNS或NIS服務器,以使網絡的其它主機能與之的通訊.
---- 以上方法需要Root用此權限在Sun Enterprise 3000服務器和Salaris 2.6 server操作系統上測試通過.
==================================================================================
solaris中的系統log日志原理分析
作為攻擊者當然要知道系統是如何紀錄用戶的活動的情況的原理的了,呵呵,不然ip被記下來都不知道!
呵呵,其實一些人只會到/var/adm/目錄里去刪日志,那是很笨很笨的做法。
前段時間在www.unixaid.net結識了一個外地的系統管理員,談了談,深有心得所以我把這些寫下來,呵呵。
unix系統的日志其實是非常復雜和強大的,特別是Solaris系統,因為源碼的不公開,所以被蒙上了一層神秘的面紗,我研究分析了一陣子得出的結論和大家分享,我的能力有限,還望大家多多指教。
負責日志記帳的有兩個守護進程:klogd,syslogd,我著重講這兩個進程,當然還有進程記帳進程,就不多介紹了,呵呵,因為基本上所有的系統動作都會被這兩個進程監視并紀錄,大家如果要編寫一些系統程序的話,也會用到syslog這個接口的,呵呵,klogd主要紀錄一些系統內核的動作,對攻擊者最受影響的是syslogd這個進程.它可以接收訪問系統的日志信息并且根據/etc/syslog.conf配置文件中的指令處理
這些信息。因此,任何希望生成日志信息的程序都可向syslog接口呼叫來生成改信息。大部分內部系統工具如郵件和打印系統都是如此生成信息的,許多新增的程序如TCP_wrappers和SSH也是如此工作的。講到這里,大家有點概念了吧?呵呵
/etc/syslog.conf的格式比較復雜,大家可以參考一下有關書籍,主要是如下語句形式:
facility.level action
facility代表各種服務,level代表syslog的認證級別,action代表的是針對前面信息的處理。大家可以注意action字段,有時候會把信息發送到另外一臺機器而不是熟悉的/var/adm/messages的,這下應該知道這個文件的重要性了吧?如果真把日志發到另外一臺機器的話,就想辦法把那臺機器dos掉了,不是它死你是你亡啊,呵呵,有時會發送到/dev/console,/dev/tty1或/dev/lp1等等這樣的設備,就是發送到終端啊,呵呵,想想如果那終端作的是系統管理員,你不是很慘?
現在大家應該知道不是刪刪/var/adm/messages就了事的吧?呵呵
好,下面介紹一下solaris的另外一個記帳,就是wtmp和utmp,說明一下大家常見到的wtmpx和utmpx是wtmp和utmp的擴展罷了,大家可以參看wtmp.h,utmp.h里的定義的數據結構,會有寫概念,呵呵,在solaris里是通過utmpd,wtmpd這兩個進程來進行記帳的,然后通過utmppipe這個管道文件向/var/adm/utmpx這個文件寫數據,當然utmpx這個文件不是象messages一樣是文本形式的,它是二進制的,只有who,finger命令可以訪問,呵呵,大家知道了吧?而last命令是訪問wtmpx的。utmp是紀錄用戶的動態會話用的,而wtmp是紀錄用戶的登陸與推出的活動的,這就是區別,呵呵。寫這篇
文章只是要提醒大家不要隨便刪日志,那很傻的,呵呵,最好自己編寫一些刪日志的小工具,很容易,大家參考一下utmp這個數據結構就可以了,也可以用一個命令來刪除messages中的紀錄:
eagle~# more /var/adm/messages|grep -v 或 >/var/adm/messages
很簡單不是么?呵呵,當然utmp,wtmp中的紀錄就要用程序解決了,也有現成的程序比如:
wtmpdump.c,marry.c,remove.c等等,呵呵都不錯的,我主頁上有下載,呵呵
attacker.qzone.com
好了,就說這么多了,重申一句,我只是為了讓大家進行愛國主義行動的時候注意以下善后的工作,呵呵其中牽涉到的只是非常多,我很多沒有詳細說明和講解,希望大家重視日志,參考一下有關資料。
忘了,這些是solaris中的情況,呵呵,在Linux里又大不一樣,呵呵,linux里沒有utmpd這個進程,是通過PAM的認證模塊來進行記帳的,PAM的資料大家可以參考一下書籍很復雜,說的話會近萬字呢,呵呵
=====================================================================================
用戶登錄時,Bash 首先執行全局登錄腳本(由 root 建立) /etc/profile,然后在用戶起始目錄下依次尋找 .bash_profile、.bash_login、.profile 三個文件,執行最先找到的一個??梢杂眠@種辦法像 Netware 一樣為不同的用戶定制運行環境。