论坛风格切换
  • 4008阅读
  • 0回复

[linux服务器]Ubuntu的rc.local为何未执行?! [复制链接]

上一主题 下一主题
离线谯周
 

发帖
142
金币
0
威望
55
只看楼主 倒序阅读 使用道具 楼主  发表于: 2011-07-14

最近,我在搞一套NMS,其中用到Ntop,希望server每次启动时能自动加载Ntop,于是,按照以前RHEL中的习惯,在/etc/rc.local文件中加入“ntop -i wlan0 -d -L -u ntop &> /dev/null",可是重启后,发现Ntop根本未执行!

如下所示:

qijie@sunshine:~$ ps aux |grep ntop

qijie     2124  0.0  0.0   4012   752 pts/0    S+   14:51   0:00 grep --color=auto ntop

于是,开始google又百度,遇到同样问题的还不少,皆说是须将命令行写在exit 0前,也有说须将rc.local开头的“#!/bin/sh -e”中的-e去掉(据说可以忽略脚本执行的错误,否则脚本就会停止执行),然皆无效!

在N+1次百度后,终于找到属于Ubuntu的原因和解决方法。

从下面可看出,Ubuntu的默认Shell是dash,而不是Bash!

root@sunshine:/home/qijie# ls -al /bin/sh

lrwxrwxrwx 1 root root 4 2010-10-03 23:42 /bin/sh -> dash

Ubuntu的[font=Tahoma, 'Times new roman', Times, serif]wiki 里面有官方的解释[font=Tahoma, 'Times new roman', Times, serif],主要原因是dash更小,运行更快,且与POSIX兼容!

[font=Tahoma, 'Times new roman', Times, serif]但目前存在的问题是,由于shell的更换,致使很多脚本出错,毕竟现在的很多脚本不是100%POSIX兼容。

解决方法就是将其默认的Shell更改为Bash:

方法一:[font=Tahoma, 'Times new roman', Times, serif] 在终端执行 sudo dpkg-reconfigure dash,然后选择 no (recommend)

[font=Tahoma, 'Times new roman', Times, serif]方法二:[font=Tahoma, 'Times new roman', Times, serif]重新进行软链接

[font=Tahoma, 'Times new roman', Times, serif]sudo rm /bin/sh

[font=Tahoma, 'Times new roman', Times, serif]sudo ln -s /bin/bash /bin/sh

[font=Tahoma, 'Times new roman', Times, serif]我在采用方法一后,Ntop能自动加载了。

[font=Tahoma, 'Times new roman', Times, serif]如下所示:

[font=Tahoma, 'Times new roman', Times, serif]root@sunshine:/home/qijie# ps aux |grep ntopntop      2493  0.5  1.5 127536 31580 ?        Ssl  14:52   0:02 ntop -i wlan0 -d -L -u ntop

root      2738  0.0  0.0   4012   752 pts/0    S+   14:59   0:00 grep --color=auto ntop问题得到圆满解决!

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
提到某人:
选择好友
上一个 下一个