为了保持对System V,BSD,GNU软件的兼容性,除了常规的/bin(/usr/bin)和/sbin(/usr/sbin)目录外,Solaris还使用了一些扩展的命令目录,这些目录如下所示:
- /usr/openwin
- /bin/usr/dt/bin
- /usr/sfw/bin
- /opt/sfw/bin
- usr/xpg4/bin
- usr/ccs/bin
- /usr/ucb
其中:
有些命令在这两个目录中都有,但用法可能不同,比如
- /usr/bin 标准的System V命令
- /usr/ucb 传统的BSD命令
basename df du echo expr fastboot
fasthalt file from groups install ld
lint ln lpc lpq lpr lprm
lptest ls mkstr printenv ps rusage
sed shutdown stty sum test touch
tr tset users vipw whereis whoami
免费软件的部署Linux和Solaris相同,这些GNU的命令在Solaris中通常都以g字母开头,比如gtar。
System V和BSD中有两个目录包含免费软件:/usr/sfw/bin和/opt/sfw/bin。前者包含从安装介质中安装的免费软件,后者则是从配套CD中安装的软件。
随着Solaris版本的更新,有可能会把配套CD上的软件放入Solaris安装介质中,因此需要注意在旧版本上的/opt/sfw/bin目录中的命令可能会被移植到/usr/sfw/bin中。凡是在/usr/sfw/bin中的软件,表示能够通过Sun的标准支持通道获得完全技术支持,而/opt/sfw/bin中的软件则通常是由开源软件组织获得技术支持。
作者保留版权,转载请注明出处,来自cu-yuhuohu.
Linux Solaris
/etc/ntp.conf /etc/inet/ntp.conf
/etc/[x]inetd.conf /etc/inet/inetd.conf
/etc/sysconfig/network-scripts/ifcfg-{interface} /etc/hostname.{interface} and /etc/inet/netmasks
/etc/sysconfig/network /etc/nodename and /etc/defaultrouter
/etc/networks /etc/networks -> /etc//inet/networks(链接到这个文件)
在Linux系统中,日志文件的主目录为/var/log,各种系统守护进程的日志文件均存在此处。
Solaris稍有不同,/var/log目录存放syslog和authlog的日志文件,而/var/adm目录则存放消息日志文件,
在缺省配置时,solaris的/var/adm/messages文件(redhat对应的文件为/var/log/messages)包含所有的日志记录(可通过修改syslog.conf文件为不同的日志指定不同的消息记录文件)。
如果要把脚本从Linux移植到Solaris,需要注意以下几点:
- 首先确定脚本中所使用的所有文件和路径在Solaris中均有效
- 确定所有的选项和参数是否有变化
- 命令的执行输出是否有区别
1、共同点:
- 都可以查看whatis数据库中的关键字,比如uname命令:# apropos uname or man -k uname
- 都可以直接在man命令中指定搜索路径:# man -M /opt/man command
2、man的差异
- Linux的man
printf (1) - format and print data
- # whatis printf
printf (3) - formatted output conversion
printf [builtins] (1) - bash built-in commands, see bash(1)
- # man 3 printf
- Solaris的man
printf printf (1) - write formatted output
- $ whatis printf
printf printf (3c) - print formatted output
printf printf (3ucb) - formatted output conversion
- $ man -s 3c printf
- 添加新搜索路径
- linux把新搜索路径加入/etc/man.conf文件,比如“MANPATH /opt/man”。
- 然后运行makewhatis,可更新whatis数据库
MANPATH=$MANPATH:/opt/man
- solaris可在/etc/profile文件中加入:
export MANPATH
3、Linux特有的帮助:
- Linux还可以使用info查看帮助,info中带有简单的菜单式链接。按回车进入菜单所链接的章节,按q退出
- 最后Linux在/usr/share/doc/目录中还提供了一些其他格式(pdf、html等)的帮助资源。每个子目录对应一个应用,存放和应用相关的配置、设置等帮助资料。比如/usr/share/doc/bind*,存放和DNS服务器应用软件bind有关的帮助信息。
awk | basename | cat | chown |
df | du | ps | setfacl |
getfacl | tar | uesradd | groupadd |
Linux使用的是GNU版本的awk命令。
Solaris默认使用System V版本的awk,GNU的awk有一些System V不具备的扩展功能。但Solaris也提供了其他几种版本的awk命令,分别放置在以下几个目录中:
/usr/bin/awk
标准的System V版本的awk
/usr/bin/nawk
新版的System V awk,比前者多了许多扩展特性
/usr/xpg4/bin/awk
XPG4的awk.当从Linux移植脚本到Solaris时,可使用XPG4 awk。
/opt/sfw/bin/gawk
GNU awk.配套CD上的awk.和其他版本相比,gawk和Linux的awk的兼容性最高。Solaris 10配套CD中的GNU awk版本为3.0.6
Linux和Solaris上的basename命令的基本功能都相同。
Solaris提供两个basename命令:
- /usr/ucb/bin/basename和Linux版本的basename命令相同
- /usr/bin/basename的功能更强,可以通过表达式模型匹配后缀(可参见http://bhami.com/rosetta.html)
Linux和Solaris的cat命令非常类似,有些选项有细微差别,如下所示:
Linux Solaris -a,--show-all -vet
--number-nonblank -b -e
-ve -E,--show-ends -ve -s,--squeeze-blank 无
-t -vt -T,--show-tabs -vt -u(ignored) -u(输出不使用缓冲,默认为缓冲输出) --show-nonprinting -v --help 无
--version
无
两个操作系统都支持-f和-R这两个基本选项。若指定的文件是指向到目录的符号链接均需使用扩展选项
- -f(强制执行,不报告错误)
- -R(递归,遇到符号链接仅改变链接的目标,符号链接自身不会改变,不会遍历符号链接的目标目录)
Solaris提供了两个版本的chown命令,/usr/bin/chown和/usr/ucb/chown.
Solaris的/usr/bin/chown的-h,-H,-L,-P
- /usr/ucb/chown只支持两个选项:-f和-R
- /usr/bin/chown除了-f和-R外,还支持-h,-H,-L,-P这些扩展选项(要和基本选项-f,-R一起使用).
- 除非使用-h,-P选项,否则符号链接自身的拥有者不会改变
# chown -R solaris lncht 仅改变目标目录cht的所有者,符号链接自身不会改变,不会遍历符号链接的目标目录
- Solaris的-h等同于Linux的-h or --no-dereference.比如lncht是指向到cht目录的符号链接
# chown -Rh solaris lncht 与仅使用-R相比,-Rh把符号链接lncht自身的所有者也改了,其他相同
Linux的chown命令的扩展选项:
- -H 如果是指向到目录的符号连接,则目录和其下的文件的所有者发生改变。但若目录下的文件也是个符号链接,则目标文件的所有者被改变,但不会再次进行递归操作。
- -L 和-H类似,但更彻底,在遍历时遇到指向到目录的符号链接,不仅改变目标目录的所有者,同时还会继续遍历目标目录进行改变操作。
- -P 指定的文件或在遍历各级目录时遇到的文件是符号链接,则改变符号链接的所有者。-P不会对符号链接的目标目录进行遍历。-P类似于--no-dereference
- -P>-L>-H
作者保留版权,转载请注明出处,来自cu-yuhuohu.
- -c or --changes 类似于详细模式,但仅报告被改变的部分
- --dereference 命令对符号链接起效,这是solaris的默认行为。移植脚本时需注意此项
- --from= 仅改变符合指定的属主/属组的文件的所有者。solaris没有对应的选项,可用find命令的-ower or -group选项把查找结果传递给chown。
Solaris支持df命令的多种实现方式,比如
- /usr/ucb/df 可使用-v选项,-v选项除了大小以(每个文件系统所支持的最小的)块的为单位显示外其他都和df -k相同。
- /usr/xpg4/bin/df 可使用附加的-P标记,大小以512字节为单位,其他与-k选项相同。
Solaris提供了多个du命令,其中-H选项的含义和Linux的du命令不同.
其他的差别如下所示(减号"-"表示无对应选项):
- Linux的du的-H和-si选项作用相同,表示以1000为单位而不是1024,
- Solaris的-H选项这是表示处理符号链接所指向的实际目标文件,类似于Linux du的-L.
Linux solaris solaris solaris 可匹配的选项 /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 - - -
部分选项简要说明:
作者保留版权,转载请注明出处,来自cu-yuhuohu.
- -b,-block-size=SIZE 以字节为单位显示大小
- -c produce a grand total
- -l 统计链接
- -L 处理符号链接实际指向的目标
- -m 以MB为单位显示
Solaris的/usr/ucb/ps是BSD风格的命令,和Linux的ps命令相当,但命令输出可能会有所不同
/usr/bin/setfacl用来管理文件的访问控制列表。两个系统上的这个命令的语法和选项不同。
Solaris的setfacl语法:
- setfacl [-r] -s acl_entries file
- setfacl [-r] -md acl_entries file
- setfacl [-r] -f acl_file file
两个系统的ACL条目的格式很相似,Linux支持Solaris的ACL条目格式,但Solaris不支持某些Linux特有的ACL条目格式。
- -s 设置ACL,旧的ACL会被新指定的清空或覆盖
- -m用于添加ACL或修改现有的ACL,也会覆盖现有的ACL条目.
- -d 删除ACL条目
- -r 重新计算ACL的mask
下表列出了Linux的setfacl命令独有的一些选项:
- Linux接受在other和mask关键词之后使用一个附加的冒号":",但Solaris不行。
- 权限由rwx或数字组成,比如"r-x"表示读和执行权限.Linux支持缩写成"rx",而Solaris不行
- Solaris的setfacl能够使用另外一个文件的ACL来设置指定文件的ACL(使用-f选项,Linux版本的setfacl没有这个选项)
Linux独有的setfacl选项 解释 -b,--remove-all 删除所有的ACL
-k,--remove-default 删除默认的ACL
-n,--no-mask 不重新计算有效权限掩码,等于solaris中不使用-r选项的setfacl命令
--mask 重新计算有效权限掩码,等于solaris的-r选项
-d,--default 所有的操作作用于默认的ACL
--restore=file 从"getfacl -R"创建的权限备份中恢复权限
--test 测试模式
-R,--recursive 递归模式,应用到所有的文件和目录
-L,--logical 与-P现对,对符号链接有效(follow the symbolic links)
-P,--physical 忽略所有的符号链接
--version 查看命令版本
--help 查看命令的简要使用帮助
-- 命令行结束 - 如果文件名参数是一个单破折号"-",表示从标准输入读取文件列表
作者保留版权,转载请注明出处,来自cu-yuhuohu.
/usr/bin/getfacl用来查看文件的访问控制列表。虽然Linux和Solaris的getfacl命令的功能相同且输出格式也很类似,但它们的可用选项有区别。
- solaris的getfacl命令不支持长格式选项。
- Linux的getfacl支持,而Solaris的getfacl不支持的简洁式选项:-R,-L,-P,以及-。
Linux的tar命令是GNU tar,Solaris的tar是System V版本.
这两种版本的tar命令有很大的不同,最好参考它们各自的命令帮助手册.
如果脚本中有使用tar命令,在移植时有两种方法
- solaris的tar不支持使用外部压缩程序,因此没有-Z,-z,-j这些压缩选项
- Solaris的GNU tar命令为/usr/sfw/bin/gtar,安装包为SUNWgtar
- 重新编辑tar命令的用法,采用等价的tar选项,或者使用管道符把结果传递给压缩或解压程序。
- 如果solaris安装了SUNWgtar,则可以在脚本中使用gtar来代替tar.
两个系统的useradd命令非常相似,很多选项的作用几乎完全一致,主要区别如下:
另外一些具体的区别如下表所示:
- Solaris版的useradd有额外的选项以支持RBAC。
- 另外一个明显的区别是-p选项。
- linux中,这个选项用来指定账号的密码,这是一种不安全的做法。
- Solaris中-p选项用来指定账号所属的项目(project),指定账号所开启的所有进程将都属于这个项目.
Linux Solaris 命令解释 -e expire_date
-e expire_date 指定过期时间,日期的格式有所不同
-f inactive
-f inactive Linux中,指过期后多久变成永久禁用
Solaris中,指到账号无效为止的最大天数
-M
不创建用户的家目录
-m
如果家目录不存在,就创建
-n
创建一个和账号同名的组
-o
-o
允许使用非唯一性uid
-p passwd
指定加密后的密码串(用crypt加密)
-p profile
指定用户属于哪个项目
-r
创建一个系统账号(默认使用一个比UID_MIN小的uid,UID_MIN在/etc/login.defs中定义)。这个是redhat专用选项
-K key=value
(RBAC使用)设置key/value对
-A authorization
(RBAC使用)设置授权
-P profile[,profiles...]
(RBAC使用)设置权力配置 -D -e default_expire_date
-D -e default_expire_date 设置账号的默认过期时间,日期格式有所不同
作者保留版权,转载请注明出处,来自cu-yuhuohu.
两个系统的groupadd命令也极为相似,绝大多数时候两个命令的选项(-g指定gid,-o允许gid重复)和操作都完全一致。
Linux的groupadd有两个专用选项(这两个选项由红帽子“redhat linux”加入);
有关账号管理的差异请参见《从Linux到Solaris:系统管理》:http://bbs.chinaunix.net/thread-1003928-1-1.html
- -r 添加一个系统账号,若未指定gid,默认采用小于499的第一个数字
- -f 强制选项
365.04 KB, 下载次数: 74
原帖由 yuhuohu 于 2007-10-12 17:53 发表
哥们,看帖要推荐啊,点这里
做系统管理的不可能单纯的仅接触solaris,unix大同小异,完全可以从solaris出发达到触类旁通的目的。近日有空,看些Linux的管理文档,主要是看Linux和Solaris的区别点, ...
/usr/openwin
/usr/dt/bin
/usr/sfw/bin
/opt/sfw/bin
/usr/xpg4/bin
/usr/ccs/bin
/usr/ucb
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |