谈到Solaris与Linux,许多人常困惑于两者的区别。首先需要明确:Solaris属于Unix系统,而非Linux。Linux本质上只是一个内核,而Unix则是一套完整的操作系统。在Unix生态中,内核通常由IBM、Sun或HP等硬件厂商直接提供技术支持;相比之下,Linux发行版是在Linux内核之上集成各类工具和软件包,这也正是它们真正的价值所在。
论及资历,Unix远比Linux更悠久,成熟度自然也更高。Solaris作为三大Unix平台之一(另外两个是AIX和HP-UX),历史积淀极为深厚。近年来Linux进步迅猛,但即便是最狂热的Linux支持者也不得不承认——在关键应用场景中,说服用户将数据库部署在Solaris上,远比说服他们迁移到Linux上容易得多。一些公司的CIO至今仍将Linux视为黑客操作系统,不敢将财务系统迁移过去。尽管这一看法并非绝对,但在重要系统选型时,现实的妥协往往比理想更为迫切。
而Linux,本质上可视为Unix的“仿制品”。下面整理一组日常运维中常用的Solaris与Linux命令对比,帮助大家快速掌握两种环境下的操作方式。
1) 查看开放端口
Linux:
netstat -atn
Solaris:
netstat -P tcp -f inet -an
2) 查看网卡/网络状态
Linux:
ifconfig
Solaris:
ifconfig -a 或 dladm show-dev 等
注:Linux下网卡命名统一为eth0、eth1等,而Solaris则直接使用驱动名,如rtls0、iprb0、bge0、bge1、bnx0、e1000g1、nge1、xge0等。可以通过man手册确认具体网卡类型,例如 man iprb。
3) 查看系统安装的所有软件包
Linux:
rpm -qa 或 dpkg-query -l
Solaris:
pkginfo
4) 安装软件包
Linux:
rpm -ivh stardict.rpm
Solaris:
pkgadd -d `pwd` SUNWstardict
5) 卸载软件包
Linux:
rpm -e stardict
Solaris:
pkgrm SUNWstardict
6) 查看软件包的所有安装文件
Linux:
rpm -ql stardict
Solaris:
pkgchk -l SUNWstardict | grep Pathname
如果想根据某个文件反查它属于哪个安装包,可以用:
# pkgchk -lp /usr/share/stardict/sounds/menushow.wa v
Linux对应:
# rpm -qf /bin/ls
7) 查看进程状态
Linux:
top
Solaris:
prstat
注:Solaris也可以通过 pkg-get -i top 安装top工具。而 prstat -L 可以进一步显示每个线程的状态。
8) 查看系统服务
Linux:
chkconfig --list
Solaris:
svcs
9) 系统服务管理
Linux:
chkconfig samba off 或 chkconfig samba on
Solaris:
svcadm enable svc:/network/smtp:sendmail 或 svcadm disable svc:/network/smtp:sendmail
注:Solaris的svcadm加上 -r 参数可以递归地开启或关闭相关服务。
10) 查看CPU信息
Linux:
more /proc/cpuinfo
Solaris:
psrinfo -v 或 psrinfo -vp
11) 查看内存大小
Linux:
more /proc/meminfo 或 top
Solaris:
prtconf | grep ^M
12) 监测网络
Linux:
tcpdump
Solaris:
snoop
13) 显示所有模块信息
Linux:
lsmod
Solaris:
modinfo
注:Linux也支持modinfo命令,但只显示某个指定模块的信息,例如 # modinfo fat。
14) 插入模块
Linux:
insmod 或 modprobe
Solaris:
modload
15) 卸载模块
Linux:
rmmod
Solaris:
modunload
注:Solaris每个模块都有一个整数编号,卸载时需要指定编号。例如:
# modinfo | grep bge
174 ffffffffeff63000 12150 162 1 bge (BCM579x driver v0.51)
# modunload -i 174
16) 查看PCI设备
Linux:
lspci -vn
Solaris:
prtconf -vp
17) 给网卡添加额外的IP地址
Linux:
ifconfig eth0:1 192.168.3.15
Solaris:
ifconfig e1000g addif 192.168.3.15/24 up
