2009年九月月 发布的文章

Solaris 10安装二三事

部门服务器资源向来都比较紧张,每当忙碌季节到来,服务器资源消耗都较大,开发人员总是抱怨编辑代码慢、Build慢以及磁盘空间不足等问题,严重时甚至无法工作。部门也一直在尝试改善这个问题,无非加服务器、加磁盘等,但是这些措施似乎都难以满足开发和测试人员日益增长的对服务器资源的索求。

为了尽量在组内杜绝上述现象的发生,决定搭建多台PC Server给组内开发人员使用,让大家工作的更有效率,更独立自由,不受共享服务器的约束。因负责部门内部服务器的系统工程师出差在外,无奈委托一个热心同事尝试去安装一下Solaris 10 for x86版本。这位热心同事很积极也很快的将Solaris 10安到了那台空闲PC Server上。但是上午我发现系统的网络仍然未配置,决定亲自手工给这个Server配置网络参数。

对于Solaris系统的配置和管理,我就是一菜鸟级选手,一切都要从头来-到网络上查找资料。找了半天仍是一头雾水。又想到利用Solaris 10提供图形化界面去配置,但是居然没有找到对应的工具或程序的位置。只能向家中另外一位系统工程师同事求助。这位同事也是热心肠,还亲自过来为我配置网络。在他配置的过程中,我也学到了网络配置的一些皮毛。

首先查看网口是否激活,如果没有,则找到网口设备名称,并激活网口服务:
在这台Server上,执行ifconfig -a发现,只有lo0这一个本机LOOPBACK虚拟网口,显然该主机物理网口没有被激活。

寻找这个网口设备名称:
cd /dev
ls -l|more
一般网口设备名称都类似:bge0,hme0等。发现我的这台主机网口为bge0。

激活该网口设备:
ifconfig bge0 plumb up
这回你再执行ifconfig -a,你将会看到bge0网口,但是该网口尚未分配IP地址和掩码。

如果你要临时设置该网口IP和掩码的话,可直接使用ifconfig命令(ifconfig bge0 HOST_IP netmask 255.255.255.XXX)进行,但是这样的设置在主机重启后将无法保留下来。那我们就说说永久保留设置的方法。

设置静态IP:
vi /etc/hosts,在结尾添加一行:HOST_IP   主机名  loghost
vi /etc/hostname.bge0,该文件可能需要你手工创建,只有一行:主机名

设置子网掩码:
vi /etc/netmasks,增加一行格式诸如:"network-number  netmask"。如果主机IP为10.10.12.77,掩码为255.255.255.0,则你可添加"10.10.12.0 255.255.255.0"。

设置网关/默认路由
vi /etc/defaultrouter,直接将你的网关的IP写入即可。

重启系统后,网络算是通了。无论是从本主机访问其他主机,还是从其他主机访问这个主机都没有问题了。但是还有一个问题:打开Firefox无法打开网页?应该是DNS没有配置,配置方法如下:

vi /etc/nsswitch.conf,在hosts:   files后面加上一个"dns",即该行变成:"hosts:   files dns",保存退出。
vi /etc/resolv.conf,每一行是一个DNS服务器,格式如:nameserver xxx.xxx.xxx.xx

配置完,firefox顺利打开了外部网页。

配置完网络本以为该主机可以投入正式使用了,但无意间却发现'/'分区下空闲空间仅剩下20%多了,70%的空间已经被使用,再细致一看,发现'/'分区分配的空间太小了,不仅如此swap交换分区仅仅分配了500M的空间。经沟通得知,首次安装采用的是默认安装,才有了此结果。由于无法动态扩展'/'和swap分区大小,无奈只能重装,否则日后问题更多。

Solaris10的图形化安装果真比不了Ubuntu,更无法与Windows相比了,不过我还能应付,这次我选择了自定义安装,并在安装阶段就将网络配置好了。一个小时左右,安装过程结束,进入桌面,需重新按上面步骤配置DNS,其他就无需配置了。

从其他机器Telnet访问该主机,居然提示:"telnet: Unable to connect to remote host: Connection refused",是我的网络配置错了?ping和traceroute都正常,而且从这台主机Telnet访问其他主机都没有问题,估计是Telnet服务没有启动,通过“netstat -an|grep LISTEN”并未看到在监听23端口,但是如何启动Telnet服务到不是很清楚,在询问了系统工程师后,执行了一下:svcadm enable telnet,Telnet服务瞬间启动了。同理,Ftp服务也是如此。svcadm应该是Solaris 10新增的系统管理工具,低版本的OS可能都不具备这个命令。

再次从别的机器telnet这台服务器,并用root用户登录,提示:"Not on system console, Connection to xxx.xxx.xxx.xxx closed by foreign host",这又是怎么回事?从系统工程师那得到的答案是:默认不允许root用户远程登录。可打开/etc/default/login这个文件,并将“CONSOLE=/dev/console”这行注释掉就可以了。

下班前终于将该主机安装配置完毕,可正式投入使用了。但是在下班路上与另一位同事探讨这个安装配置问题时,他提示我还有一处遗漏:那就是/var没有单独分区,而是与'/'分区共享,这样给以后的使用带来了一些隐患,在测试和运行一些大程序时/var很容易被占满,导致程序无法正常运行。在不再重装系统的前提下,只能考虑定期清理/var下的文件了。

Bash文件描述符重定向符号的另类理解

在Unix平台工作的人都使用过Shell的重定向功能,多数人接触较多的是简单的重定向,比如:
cmd > some_file 将cmd命令的标准输出重定向到some_file中
cmd < some_file 将some_file的内容作为cmd命令执行的标准输入,或者简单的说cmd命令从some_file读取输入

等等诸如此类的简单重定向还比较好理解的,起码从大于号或者小于号的箭头方向也可以感性的理解出来。但是类似Bash Shell中还有一些带有复杂符号的重定向功能,看起来就不那么直观了。

强记是不好的学习方式,加上个人理解的记忆才更牢固,使用起来才更为熟练。昨天晚上为了琢磨一个shell重定向命令,翻看相关bash shell重定向的资料,突然脑子里蹦出一个很容易理解的记忆shell文件描述符重定向的方法。

以“make 2>&1 1>build.log”为例,看起来挺头疼,符号增多了,加了一个'&'这个符号,有些晕。不能看表面,我们要看原理:打开“Unix环境高级编程(APUE)”中关于文件内核数据结构的说明,回顾一下,再对应上面的重定向命令。文件描述符重定向是什么?按照书中描述重定向就是进程文件描述符表项改变所指向的文件表项的操作。当make启动后,进程内部文件描述符表中元素1-> 文件表项1, 元素2->文件表项2,元素3 -> 文件表项3,三个文件表项又分别对应v节点表中的不同v节点。但是做了重定向后,"2>&1"将进程内部文件描述符表中的元素2指向文件表项1,与元素1指向相同,这时该进程文件描述符表中有两个文件描述符指向文件表项1了; "1>build.log"将进程内部文件描述符表中的元素1指向build.log对应的文件表项3。这样make执行过程中的标准输出会写入build.log中,而标准错误则会输出到屏幕上。

好了回顾完原理,再看看“make 2>&1 1>build.log”这个命令,'&'在C语言里是取地址的操作符,对应上面原理的描述,把&1看作是取1对应的文件表项;2>&1 则理解为将进程文件描述符表中元素2指向到元素1所对应文件表项上去。1>build.log理解为:将进程文件描述符表中元素1指向到元素3(build.log对应的文件描述符)所对应文件表项上去。这样理解起来就轻松多了。'<'也类似,cmd < som_file等价于cmd 0<some_file。

Shell平时用的不多,研究的也不多,所以用了这么多年才有这样粗浅的理解(这个理解也不一定通用,bash的重定向符号有太多,含义也有不一致),呵呵。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats