- 論壇徽章:
- 0
|
哥們,看帖要推薦啊,點(diǎn)這里
第二章:命令差別
- 絕大多數(shù)linux命令都有兩種類(lèi)型的選項(xiàng):簡(jiǎn)潔式(short form,比如-v)和長(zhǎng)格式(long form,比如--version)。
- 而Solaris的命令,除非是GNU版本的以外,通常都沒(méi)有長(zhǎng)格式。
- Linux命令可使用"--help"查看簡(jiǎn)要幫助,Solaris部分新命令可使用"-?"達(dá)到同樣的效果,比如pkginfo -?
如果從linux移植腳本到solaris,就必須注意這點(diǎn)區(qū)別,用GNU版本的命令來(lái)替代或把這些Solaris沒(méi)有的選項(xiàng)替換成對(duì)應(yīng)的簡(jiǎn)潔式選項(xiàng)。inux和Solaris之間相互匹配的命令清單,可到網(wǎng)站查看:http://bhami.com/rosetta.html。本文僅列出一些常見(jiàn)命令的區(qū)別點(diǎn):
awk | basename | cat | chown | df | du | ps | setfacl | getfacl | tar | uesradd | groupadd |
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
awk
Linux使用的是GNU版本的awk命令。
Solaris默認(rèn)使用System V版本的awk,GNU的awk有一些System V不具備的擴(kuò)展功能。但Solaris也提供了其他幾種版本的awk命令,分別放置在以下幾個(gè)目錄中:
/usr/bin/awk
| 標(biāo)準(zhǔn)的System V版本的awk
| /usr/bin/nawk
| 新版的System V awk,比前者多了許多擴(kuò)展特性
| /usr/xpg4/bin/awk
| XPG4的awk.當(dāng)從Linux移植腳本到Solaris時(shí),可使用XPG4 awk。
| /opt/sfw/bin/gawk
| GNU awk.配套CD上的awk.和其他版本相比,gawk和Linux的awk的兼容性最高。Solaris 10配套CD中的GNU awk版本為3.0.6
|
basename
Linux和Solaris上的basename命令的基本功能都相同。
Solaris提供兩個(gè)basename命令:
cat
Linux和Solaris的cat命令非常類(lèi)似,有些選項(xiàng)有細(xì)微差別,如下所示:
Linux | Solaris | -a,--show-all | -vet
| --number-nonblank | -b | -e
| -ve | -E,--show-ends | -ve | -s,--squeeze-blank | 無(wú)
| -t | -vt | -T,--show-tabs | -vt | -u(ignored) | -u(輸出不使用緩沖,默認(rèn)為緩沖輸出) | --show-nonprinting | -v | --help | 無(wú)
| --version
| 無(wú)
|
chown
兩個(gè)操作系統(tǒng)都支持-f和-R這兩個(gè)基本選項(xiàng)。若指定的文件是指向到目錄的符號(hào)鏈接均需使用擴(kuò)展選項(xiàng)
- -f(強(qiáng)制執(zhí)行,不報(bào)告錯(cuò)誤)
- -R(遞歸,遇到符號(hào)鏈接僅改變鏈接的目標(biāo),符號(hào)鏈接自身不會(huì)改變,不會(huì)遍歷符號(hào)鏈接的目標(biāo)目錄)
Solaris提供了兩個(gè)版本的chown命令,/usr/bin/chown和/usr/ucb/chown.
- /usr/ucb/chown只支持兩個(gè)選項(xiàng):-f和-R
- /usr/bin/chown除了-f和-R外,還支持-h,-H,-L,-P這些擴(kuò)展選項(xiàng)(要和基本選項(xiàng)-f,-R一起使用).
- 除非使用-h,-P選項(xiàng),否則符號(hào)鏈接自身的擁有者不會(huì)改變
Solaris的/usr/bin/chown的-h,-H,-L,-P
- Solaris的-h等同于Linux的-h or --no-dereference.比如lncht是指向到cht目錄的符號(hào)鏈接
# chown -R solaris lncht 僅改變目標(biāo)目錄cht的所有者,符號(hào)鏈接自身不會(huì)改變,不會(huì)遍歷符號(hào)鏈接的目標(biāo)目錄
# chown -Rh solaris lncht 與僅使用-R相比,-Rh把符號(hào)鏈接lncht自身的所有者也改了,其他相同
- -H 如果是指向到目錄的符號(hào)連接,則目錄和其下的文件的所有者發(fā)生改變。但若目錄下的文件也是個(gè)符號(hào)鏈接,則目標(biāo)文件的所有者被改變,但不會(huì)再次進(jìn)行遞歸操作。
- -L 和-H類(lèi)似,但更徹底,在遍歷時(shí)遇到指向到目錄的符號(hào)鏈接,不僅改變目標(biāo)目錄的所有者,同時(shí)還會(huì)繼續(xù)遍歷目標(biāo)目錄進(jìn)行改變操作。
- -P 指定的文件或在遍歷各級(jí)目錄時(shí)遇到的文件是符號(hào)鏈接,則改變符號(hào)鏈接的所有者。-P不會(huì)對(duì)符號(hào)鏈接的目標(biāo)目錄進(jìn)行遍歷。-P類(lèi)似于--no-dereference
- -P>-L>-H
Linux的chown命令的擴(kuò)展選項(xiàng):
- -c or --changes 類(lèi)似于詳細(xì)模式,但僅報(bào)告被改變的部分
- --dereference 命令對(duì)符號(hào)鏈接起效,這是solaris的默認(rèn)行為。移植腳本時(shí)需注意此項(xiàng)
- --from= 僅改變符合指定的屬主/屬組的文件的所有者。solaris沒(méi)有對(duì)應(yīng)的選項(xiàng),可用find命令的-ower or -group選項(xiàng)把查找結(jié)果傳遞給chown。
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
df
Solaris支持df命令的多種實(shí)現(xiàn)方式,比如
- /usr/ucb/df 可使用-v選項(xiàng),-v選項(xiàng)除了大小以(每個(gè)文件系統(tǒng)所支持的最小的)塊的為單位顯示外其他都和df -k相同。
- /usr/xpg4/bin/df 可使用附加的-P標(biāo)記,大小以512字節(jié)為單位,其他與-k選項(xiàng)相同。
du
Solaris提供了多個(gè)du命令,其中-H選項(xiàng)的含義和Linux的du命令不同.
- Linux的du的-H和-si選項(xiàng)作用相同,表示以1000為單位而不是1024,
- Solaris的-H選項(xiàng)這是表示處理符號(hào)鏈接所指向的實(shí)際目標(biāo)文件,類(lèi)似于Linux du的-L.
其他的差別如下所示(減號(hào)"-"表示無(wú)對(duì)應(yīng)選項(xiàng)):
Linux | solaris | solaris | solaris | 可匹配的選項(xiàng) | /usr/bin | /usr/xpg4/bin | /usr/ucb | -a,--all | -a
| -a-
| -a
| --block-size=SIZE
| - | - | - | -b,--bytes | - | - | - | -c,--total | - | - | - | -D,--dereference-args | -L | -L
| -L | -h,--human-readable | -h | -h | -h | -H,-si | - | - | - | -k,--kilobytes | -k | -k | -k | -l,--count-links | - | - | - | -L,--dereference | -L | -L | -L | -m,-megabytes | -
| -
| -
| -S,-separate-dires | -o
| -
| -
| -s,-summarize | -s | -s | -s | -x,-one-file-system | -d | -x | -d | -X FILE,-exclude-from=FILE
| - | - | - | --exclude=PAT | - | - | - | --max-depth=N | - | - | - | --help | - | - | - | --version | - | - | - |
部分選項(xiàng)簡(jiǎn)要說(shuō)明:
- -b,-block-size=SIZE 以字節(jié)為單位顯示大小
- -c produce a grand total
- -l 統(tǒng)計(jì)鏈接
- -L 處理符號(hào)鏈接實(shí)際指向的目標(biāo)
- -m 以MB為單位顯示
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
ps
Solaris的/usr/ucb/ps是BSD風(fēng)格的命令,和Linux的ps命令相當(dāng),但命令輸出可能會(huì)有所不同
setfacl
/usr/bin/setfacl用來(lái)管理文件的訪(fǎng)問(wèn)控制列表。兩個(gè)系統(tǒng)上的這個(gè)命令的語(yǔ)法和選項(xiàng)不同。
Solaris的setfacl語(yǔ)法:
- setfacl [-r] -s acl_entries file
- setfacl [-r] -md acl_entries file
- setfacl [-r] -f acl_file file
- -s 設(shè)置ACL,舊的ACL會(huì)被新指定的清空或覆蓋
- -m用于添加ACL或修改現(xiàn)有的ACL,也會(huì)覆蓋現(xiàn)有的ACL條目.
兩個(gè)系統(tǒng)的ACL條目的格式很相似,Linux支持Solaris的ACL條目格式,但Solaris不支持某些Linux特有的ACL條目格式。
- Linux接受在other和mask關(guān)鍵詞之后使用一個(gè)附加的冒號(hào)":",但Solaris不行。
- 權(quán)限由rwx或數(shù)字組成,比如"r-x"表示讀和執(zhí)行權(quán)限.Linux支持縮寫(xiě)成"rx",而Solaris不行
- Solaris的setfacl能夠使用另外一個(gè)文件的ACL來(lái)設(shè)置指定文件的ACL(使用-f選項(xiàng),Linux版本的setfacl沒(méi)有這個(gè)選項(xiàng))
下表列出了Linux的setfacl命令獨(dú)有的一些選項(xiàng):
Linux獨(dú)有的setfacl選項(xiàng) | 解釋 | -b,--remove-all | 刪除所有的ACL
| -k,--remove-default | 刪除默認(rèn)的ACL
| -n,--no-mask | 不重新計(jì)算有效權(quán)限掩碼,等于solaris中不使用-r選項(xiàng)的setfacl命令
| --mask | 重新計(jì)算有效權(quán)限掩碼,等于solaris的-r選項(xiàng)
| -d,--default | 所有的操作作用于默認(rèn)的ACL
| --restore=file | 從"getfacl -R"創(chuàng)建的權(quán)限備份中恢復(fù)權(quán)限
| --test | 測(cè)試模式
| -R,--recursive | 遞歸模式,應(yīng)用到所有的文件和目錄
| -L,--logical | 與-P現(xiàn)對(duì),對(duì)符號(hào)鏈接有效(follow the symbolic links)
| -P,--physical | 忽略所有的符號(hào)鏈接
| --version | 查看命令版本
| --help | 查看命令的簡(jiǎn)要使用幫助
| -- | 命令行結(jié)束 | - | 如果文件名參數(shù)是一個(gè)單破折號(hào)"-",表示從標(biāo)準(zhǔn)輸入讀取文件列表 |
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
getfacl
/usr/bin/getfacl用來(lái)查看文件的訪(fǎng)問(wèn)控制列表。雖然Linux和Solaris的getfacl命令的功能相同且輸出格式也很類(lèi)似,但它們的可用選項(xiàng)有區(qū)別。
- solaris的getfacl命令不支持長(zhǎng)格式選項(xiàng)。
- Linux的getfacl支持,而Solaris的getfacl不支持的簡(jiǎn)潔式選項(xiàng):-R,-L,-P,以及-。
tar
Linux的tar命令是GNU tar,Solaris的tar是System V版本.
這兩種版本的tar命令有很大的不同,最好參考它們各自的命令幫助手冊(cè).
- solaris的tar不支持使用外部壓縮程序,因此沒(méi)有-Z,-z,-j這些壓縮選項(xiàng)
- Solaris的GNU tar命令為/usr/sfw/bin/gtar,安裝包為SUNWgtar
如果腳本中有使用tar命令,在移植時(shí)有兩種方法
- 重新編輯tar命令的用法,采用等價(jià)的tar選項(xiàng),或者使用管道符把結(jié)果傳遞給壓縮或解壓程序。
- 如果solaris安裝了SUNWgtar,則可以在腳本中使用gtar來(lái)代替tar.
useradd
兩個(gè)系統(tǒng)的useradd命令非常相似,很多選項(xiàng)的作用幾乎完全一致,主要區(qū)別如下:
- Solaris版的useradd有額外的選項(xiàng)以支持RBAC。
- 另外一個(gè)明顯的區(qū)別是-p選項(xiàng)。
- linux中,這個(gè)選項(xiàng)用來(lái)指定賬號(hào)的密碼,這是一種不安全的做法。
- Solaris中-p選項(xiàng)用來(lái)指定賬號(hào)所屬的項(xiàng)目(project),指定賬號(hào)所開(kāi)啟的所有進(jìn)程將都屬于這個(gè)項(xiàng)目.
另外一些具體的區(qū)別如下表所示:
Linux | Solaris | 命令解釋 | -e expire_date
| -e expire_date | 指定過(guò)期時(shí)間,日期的格式有所不同
| -f inactive
| -f inactive | Linux中,指過(guò)期后多久變成永久禁用
Solaris中,指到賬號(hào)無(wú)效為止的最大天數(shù)
| -M
|
| 不創(chuàng)建用戶(hù)的家目錄
|
| -m
| 如果家目錄不存在,就創(chuàng)建
| -n
|
| 創(chuàng)建一個(gè)和賬號(hào)同名的組
| -o
| -o
| 允許使用非唯一性u(píng)id
| -p passwd
|
| 指定加密后的密碼串(用crypt加密)
|
| -p profile
| 指定用戶(hù)屬于哪個(gè)項(xiàng)目
| -r
|
| 創(chuàng)建一個(gè)系統(tǒng)賬號(hào)(默認(rèn)使用一個(gè)比UID_MIN小的uid,UID_MIN在/etc/login.defs中定義)。這個(gè)是redhat專(zhuān)用選項(xiàng)
|
| -K key=value
| (RBAC使用)設(shè)置key/value對(duì)
|
| -A authorization
| (RBAC使用)設(shè)置授權(quán) |
| -P profile[,profiles...]
| (RBAC使用)設(shè)置權(quán)力配置 | -D -e default_expire_date
| -D -e default_expire_date | 設(shè)置賬號(hào)的默認(rèn)過(guò)期時(shí)間,日期格式有所不同
|
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
groupadd
兩個(gè)系統(tǒng)的groupadd命令也極為相似,絕大多數(shù)時(shí)候兩個(gè)命令的選項(xiàng)(-g指定gid,-o允許gid重復(fù))和操作都完全一致。
Linux的groupadd有兩個(gè)專(zhuān)用選項(xiàng)(這兩個(gè)選項(xiàng)由紅帽子“redhat linux”加入);
- -r 添加一個(gè)系統(tǒng)賬號(hào),若未指定gid,默認(rèn)采用小于499的第一個(gè)數(shù)字
- -f 強(qiáng)制選項(xiàng)
有關(guān)賬號(hào)管理的差異請(qǐng)參見(jiàn)《從Linux到Solaris:系統(tǒng)管理》:http://72891.cn/thread-1003928-1-1.html
再來(lái)第二篇,天黑該休息了。
PS:這次坑挖大了,填死我啦。
作者保留版權(quán),轉(zhuǎn)載請(qǐng)注明出處,來(lái)自cu-yuhuohu.
[ 本帖最后由 yuhuohu 于 2007-10-30 14:34 編輯 ] |
|