设定Ubuntu启动服务

当我们安装了一些Ubuntu的服务后,有时希望配置它为自动启动或不要自动启动。比如我最近安装了tor和privoxy,我希望设定它们不要自动启动。

怎样做呢?Ubuntu虽然是使用upstart进行启动,但是Ubuntu还是模拟了System V的运行级别体系。首先,服务脚本要出现在/etc/init.d/下面。然后/etc/rc0.d/到/etc/rc6.d/分别代表0到6的运行级 别,每个级别对应的目录下面,有着刚才init.d目录里脚本的软链接,但是名字和原来不完全一样,Ubuntu启动的时候就是根据rcX.d/目录里软 链的名字做出相应的动作。

比如我的Ubuntu 8.10默认是进入运行级别2的,如果rc2.d/目录下有S20tor软链接,表示启动的时候自动运行tor服务。软链接名字的第一个字符或者是S,或 者是K,S表示start,K表示stop。接下来数字NN表示优先级,20是默认值,启动的时候先执行K开头的服务,在其中按NN从小到大执行,接下来 执行S开头的服务,也是按NN从小到大执行。比如目录里有K50,K60,S10,S20,那么启动到该运行级别时按 K50->K60->S10->S20的顺序执行。优先级的目的是提供服务的依赖性,比如A服务要依赖于B服务的运行,可以设置B为 S20,A为S21,然后stop的时候要相反顺序。为什么先执行K呢?那是因为切换运行级别的时候,先关闭服务再开启的顺序不容易乱。

说了这么久,相信读者都明白配置Ubuntu启动服务是否自动运行可以直接编辑软连接的名字了。要自动运行,就是要在相应运行级别下加入S开头的软 链接。如果不要自动运行,或者把链接删掉,或者设为K开头的名字。需要指出的是,把软链接删掉是不正确的方法,因为当软件包升级的时候,升级脚本运行 update-rc.d命令,就会重新加入那个软链接,因此正确的方法是把S改为K,这样不会受update-rc.d命令影响。进一步要指出的是,我们 最好也使用update-rc.d命令去进行软链接的操作。

典型用法一,把服务加到2,3,4,5级别自动运行,加到0,1,6自动停止。

sudo update-rc.d foobar defaults

或者

sudo update-rc.d foobar start 2 3 4 5 . stop 0 1 6 .

典型用法二,把服务设定为启动时自动停止。

sudo update-rc.d -f foobar remove
sudo update-rc.d foobar stop 0 1 2 3 4 5 6 .

值得注意的是,如果任意一个rcX.d/目录已经有某脚本的链接,必须像刚才的命令第一行一样先删除原来的链接,再进行添加。

你可能感兴趣的:(ubuntu,脚本,F#)