在SmartOS用户中最常见的问题之一就是,既然说SmartOS和Linux类似,那除了那些看不见的技术细节,在使用时到底有什么不同呢?如果已经熟练操作Linux,那SmartOS能快速上手么?答案是当然能,其实常用的不同之处并不多。这篇文章将回答Linux与SmartOS在操作上的不同之处。
SmartMachine和其他类Unix系统不同之处主要在于两类:
- 命令类似,但在SmartOS中用不同的名字
- 完成类似的任务,但在SmartOS中有不同的实现过程
这里列出一个命令列表,用来帮助Linux用户找到在SmartOS中与Linux对等的命令。
- Linux 和 SmartOS 命令对比列表
- 不同使用语境(Use Context)的例子
- 检查进程和内存
- 启动和停止服务
Linux and SmartOS 命令对比列表
任务 / 操作系统 | Linux | SmartOS | SmartOS Virtual Instance (zone) |
---|---|---|---|
表中缩写代表的含义 table key | (rh) = Red Hat, Mandrake, SUSE,... (deb) = Debian, Libranet,... (fed) = Fedora (gen) = Gentoo (md) = Mandrake/Mandriva (SUSE) = SUSE | Joyent SmartOS 开源版本可访问以下链接http://smartos.org | Joyent SmartOS zone |
管理用户 managing users | useradd usermod userdel adduser chage getent | useradd userdel usermod getent logins groupadd | useradd userdel usermod getent logins groupadd |
列举硬件配置信息 list hardware configuration | arch uname dmesg (if you're lucky) cat /var/log/dmesg /proc/* lshw dmidecode lspci lspnp lsscsi lsusb lsmod (SUSE) hwinfo /sys/devices/* | arch prtconf [-v] prtpicl [-v] uname psrinfo [-v] isainfo [-v] dmesg iostat -En cfgadm -l /etc/path_to_inst | arch uname psrinfo [-v] isainfo [-v] dmesg iostat -En |
读取磁盘命名 read a disk label | fdisk -l | fdisk prtvtoc | |
命名磁盘 label a disk | cfdisk fdisk e2label | format prtvtoc fdisk | |
磁盘分区 partition a disk | parted (if you have it) cfdisk fdisk pdisk (on a Mac) (deb) mac-fdisk (on a Mac)_ (md) _diskdrake | format fmthard rmformat | |
内核文件 kernel | /boot/vmlinuz* /boot/bootlx (see /etc/lilo.conf or /boot/grub/menu.lst) | /kernel/genunix /platform/`uname -m`/ kernel/unix kernel modules are in /kernel, /usr/kernel, and /platform/`uname -m`/kernel | Kernel module files not visible within a zone |
显示/配置内核参数 show/set kernel parameters | /proc/* /proc/sys/* sysctl /etc/sysctl.conf | sysdef getconf cat /etc/system ndd mdb -k[w] | sysdef getconf ndd |
显示已加载的内核模块 loaded kernel modules | lsmod | modinfo | modinfo |
加载内核模块 load module | modprobe insmod | modload add_drv devfsadm | |
卸载内核模块 unload module | rmmod modprobe -r | modunload | |
启动脚本 startup scripts | /etc/rc* (but may vary) /etc/init.d/ | SMF(5) /etc/rc* /etc/init.d/ svcadm svcs | SMF(5) /etc/rc* /etc/init.d svcadm svcs |
启动/停止/配置服务 start/ stop/ config services | (rh) _service (rh) _chkconfig (deb) _sysv-rc-conf | svcs svcadm svccfg | svcs svcadm svccfg |
关机 shutdown (& power off if possible) | shutdown -Ph now shutdown -y -g0 -i0 halt poweroff | shutdown -y -g0 -i5 halt | shutdown -y -g0 -i5 halt |
run levels *=normal states 更多细节参考 www.phildev.net/runlevels.html | (set in /etc/inittab) 0: halt s,S,1: vendor-dependent 1: single-user 2-5*: multiuser 6: reboot | 0: firmware monitor s,S: single-user 1: sys admin 2: multiuser 3*: share NFS 4*: user-defined 5: power-down if possible 6: reboot | s,S: single-user 1: sys admin 2: multiuser 3*: share NFS 4*: user-defined 5: power-down if possible 6: reboot |
show runlevel | /sbin/runlevel | who -r | who -r |
时区信息 time zone info | /usr/share/zoneinfo/ /etc/localtime | /usr/share/lib/zoneinfo/ | /usr/share/lib/zoneinfo |
检查交换分区 check swap space | swapon -s cat /proc/meminfo cat /proc/swaps free | swap -s[h] swap -l[h] | Note: in a zone, swap is virtual memory size swap -s[h] swap -l[h] |
bind process to CPU | taskset (sched-utils) | pbind psrset | pbind psrset |
终止进程 killing processes | kill killall | kill pkill killall <- tries to kill everything, DO NOT USE THIS | kill pkill killall <- tries to kill everything, DO NOT USE THIS |
显示CPU信息 show CPU info | cat /proc/cpuinfo lscpu | psrinfo -pv | psrinfo -pv |
内存信息 memory | freemem | prtconf | head zonememstat | prtconf | head zonememstat |
默认文件系统 "normal" filesystem | ext2 ext3 ReiserFS | zfs | zfs |
开机自动挂载分区配置 file system description | /etc/fstab | /etc/vfstab | /etc/vfstab |
创建文件系统 create filesystem | mke2fs mkreiserfs mkdosfs mkfs | zfs zpool | zfs (if zone has delegated dataset) |
文件系统调试和恢复 file system debugging and recovery | fsck debugfs e2undel | zdb | |
创建非空文件 create non-0-length empty file | dd if=/dev/zero of=filename bs=1024k count=desired | mkfile | mkfile |
创建/挂载ISO镜像 create/mount ISO image | mkisofs mount -o loop pathToIso mountPoint | mkisofs;DEVICE=`lofiadm -a /absolute_pathname/image.iso` ; mount -F hsfs -o ro $DEVICE | |
ACL配置 ACL management | getfacl setfacl | getfacl setfacl | getfacl setfacl |
NFS share definitions | /etc/exports | /etc/dfs/dfstab dfshares | |
NFS share command | /etc/init.d/nfs-server reload_(rh)__ _exportfs -a | share shareall | |
NFS information | cat /proc/mounts | showmount nfsstat | nfsstat |
name resolution order | /etc/nsswitch.conf /etc/resolv.conf | /etc/nsswitch.conf getent | /etc/nsswitch.conf getent |
显示网络接口信息 show network interface info | ifconfig ethtool | dladm ndd ifconfig -a netstat -in | dladm ndd ifconfig -a netstat -in |
更改IP地址 change IP | Joyent Public Cloud IP addresses are set in the Cloud Management Portal. ifconfig | ||
ping one packet | ping -c 1 hostname | ping hostname packetsize 1 | ping hostname packetsize 1 |
监听网络 sniff network | etherfind tcpdump wireshark (formerly _ethereal) etherape | snoop | snoop tcpdump available from pkgin |
route definitions | route (rh) /etc/sysconfig/network (rh) /etc/sysconfig/static-routes (deb) /etc/init.d/network (deb) /etc/network | /etc/defaultrouter /etc/notrouter /etc/gateways in.routed netstat -r route add | /etc/defaultrouter /etc/notrouter /etc/gateways in.routed netstat -r route add |
telnetd, ftpd banner | /etc/issue.net (telnet) (ftp varies; can use tcp wrappers) | Use nc instead | Use nc instead |
配置日期/时间 set date/time (from net: ntp or other) | ntpdate rdate netdate | ntpdate rdate | ntpdate rdate |
auditing | auditd /var/log/faillog | audit auditd auditreduce praudit | audit auditd auditreduce praudit |
用户密码保存位置 encrypted passwords in | /etc/shadow (may vary) | /etc/shadow | /etc/shadow |
最小密码长度 min password length | /etc/pam.d/system-auth | /etc/default/passwd | /etc/default/passwd |
允许/禁止root登陆 allow/deny root logins | /etc/securetty | /etc/default/login | /etc/default/login |
防火墙配置 firewall config | iptables ipchains ipfwadm (rh) redhat-config- securitylevel | /etc/ipf/ipf.conf | /etc/ipf/ipf.conf |
显示已安装的软件 show installed software | (rh) _rpm -a -i (rh) _rpm -qa (rh) yum list installed (deb) dselect (deb) aptitude (deb) dpkg -l (gen) _ls /var/db/pkg/* (gen) _eix -I | pkgin list pkgin avail <- list available installable software |
|
安装软件 add software | (rh) _rpm -hiv (rh) yum install pkg (deb) dselect (deb) _apt-get install _pkg (deb) dpkg -i | pkgin install | |
precompiled binaries* of GPLware and freeware* | www.linux.org linux.tucows.com sourceforge.net rpmfind.net (deb) ftp.debian.org (deb) packages.debian.org (gen) packages.gentoo.org (gen) gentoo-portage.com; (md) easyurpmi.zarb.org | www.sunfreeware.com www.blastwave.org | http://pkgsrc.joyent.com/ pkgin |
C编译器 C compiler | cc gcc | gcc [https://download.joyent.com/pub/build/SunStudio.tar.bz2] | gcc (may need to be installed via pkgin) https://download.joyent.com/pub/build/SunStudio.tar.bz2 |
configure/show runtime linking | ldconfig ldd readelf lsmod | crle ldd elfdump dump pldd modinfo LD_PRELOAD | crle ldd elfdump dump readelf pldd modinfo LD_PRELOAD |
链接库路径 link library path | $LD_LIBRARY_PATH /etc/ld.so.conf | $LD_LIBRARY_PATH | $LD_LIBRARY_PATH |
跟踪工具 tracing utility | strace ltrace | dtrace truss sotruss | dtrace truss sotruss |
define user defaults | /etc/profile /etc/security/ /etc/skel/ /etc/profile.d/* | /etc/default/login /etc/profile /etc/security/ | /etc/default/login /etc/profile /etc/security/ |
csh global .login | /etc/csh.login | /etc/.login | /etc/.login |
default syslog and messages | /var/log/syslog /var/log/messages /usr/adm/messages /var/log/maillog | /var/adm/messages /var/log/syslog softpanorama.org/Logs/solaris_logs.shtml | /var/adm/messages /var/log/syslog |
系统错误报告工具 system error reporting tool | dmesg_(deb)_ reportbug | fmadm fmdump prtdiag | fmadm fmdump |
性能检测 performance monitoring | vmstat procinfo -D top htop pstree | dtrace prstat sar ostat kstat mpstat netstat nfsstat vmstat lockstat plockstat ptree vfsstat intrstat | dtrace prstat sar ostat kstat mpstat netstat nfsstat vmstat plockstat ptree vfsstat |
查看进程占用的文件和端口match process to file or port | lsof netstat -atup | fuser pfiles | pfiles fuser lsof |
zones/containers | zoneadm zonecfg zlogin | zoneadm zonename |
|
虚拟工具 Virtualization | kvm/qemu | kvm/qemu (each instance in a kvm branded zone) vmadm imgadm | |
Wikipedia | Linux | SmartOS Illumos | SmartOS Illumos |
smartos 和linux相同命令不同作用的例子
下面的例子是一些常用的命令,他们在linux与smartos中的作用不同
Command | What's different on a Smart Machine |
---|---|
df | On most SmartOS image this is set up to use the GNU version. Use /usr/bin/df for the native version. |
lsof | SmartMachines use a different collection of tools to examine processes. See [Examining processes and memory|#procmem||||||||||||\||] later in this topic. |
ping | Returns whether a host responds or not. Use ping -s to get a continuous response. |
top | top is available in /opt/local/bin, but prstat -Z provides more zone aware (and more accurate) information than top. |
Rosetta Stone for Unix 是一个有用的资源,可以帮你看看你经常使用的UNIX版本和其他的UNIX版本(包括Mac)有何不同,并如何对应。
检查进程和内存
在旧的SmartOS镜像中,这些命令提供了端口和相关资源的信息,使用root或sudo可运行它们。新的镜像使用的是 SmartMachine 工具包(Tools Package)
Command | Description | Example |
---|---|---|
pcp | Displays the ports used by a process, or the processes that use a port. | /root/bin/pcp -p 80 displays all the processes that use port 80. /root/bin/pcp -P 28068 displays all the ports that process 28068 uses. /root/bin/pcp -a displays port and process information for all ports. |
jinf | Displays information about how your SmartMachine is using its resources. | /root/bin/jinf -c displays CPU usage information. /root/bin/jinf -m displays memory usage information. /root/bin/jinf -s displays swap usage information. |
SmartOS 提供了一个工具套件来检查进程,可以在 proc 的 man page 中学习到更多内容。
Tool | Description |
---|---|
prstat | This tool displays the active processes like top does on Linux systems. prstat -Z will provide you with a summary of your SmartMachine's status. |
pgrep | Returns a list of process IDs (PIDs) of processes that match a pattern or meet certain conditions. |
pkill | Kills the processes that match a pattern or meet certain conditions. |
pfiles | Returns a list of all the open files that belong to a process. |
pstack | Displays a stack trace of the specified process |
ptree | Displays a process tree for all processes or a given process |
ls /proc | Lists the process IDs of all running processes. |
你可以将 pgrep 的结果和其他 proc 工具合并显示。比如,显示与 http 进程相关的所有文件,可以使用如下命令来替代 lsof:
$ sudo pfiles $(pgrep http)
若要限制 prstat 显示 http 进程,可以使用命令:
$ prstat $(pgrep -d , http)
注意:如果 prstat 显示改变了你的终端设置,可以使用 reset 命令返回到正常状态
对于 vmstat, mpstat 和 psrinfo 命令,主要显示物理机中处理器和内存的统计信息。这些输出一般来说对于SmartMachine的管理员才有用。
启动和停止服务
在其他系统中,你也许习惯使用命令在 /etc/init.d 来启动或停止服务。
SmartMachines 使用 Service Management Facility 来做到这些。
命令 svcs 和 svcadm 是你经常会使用到的。有些命令把 service identifier 叫做FMRI(Fault Management Resource Identifier)。
你可以使用 svcs 命令列举一个服务所有的 identifier 。
Command | Description |
---|---|
svcs | Lists all the enabled services |
svcs -a | Lists all of the services, even those that are disabled or off line |
svcadm enable apache | Enable all of the processes with an apache FMRI |
svcadm disable apache | Disable all of the processes with an apache FMRI |
svcadm restart apache | Restart all of the processes with an apache FMRI |
例如,如果你想更改 /etc/ssh/sshd_config 后重启SSH,可以这样做:
$ sudo svcadm restart ssh
向了解更多关于SMF的信息,可以打开这个网页。