我想我已经读了一段时间,但是我不记得它是如何完成的。本质上,我有一项服务,/etc/init.d
希望在启动时自动启动。我记得它与将脚本符号链接到/etc/rc.d
目录有关,但目前我还不记得。这是什么命令?
我相信我使用的是Fedora / CentOS衍生产品。
我想我已经读了一段时间,但是我不记得它是如何完成的。本质上,我有一项服务,/etc/init.d
希望在启动时自动启动。我记得它与将脚本符号链接到/etc/rc.d
目录有关,但目前我还不记得。这是什么命令?
我相信我使用的是Fedora / CentOS衍生产品。
Answers:
如前所述,如果您使用的是基于Red Hat的系统,则可以执行以下操作:
/etc/init.d
(例如/etc/init.d/myscript
)中。该脚本应具有以下格式:#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# code to check status of app comes here
# example: status program_name
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
该格式非常标准,您可以在中查看现有脚本/etc/init.d
。然后,您可以使用诸如so /etc/init.d/myscript start
或的脚本chkconfig myscript start
。该ckconfig
手册页介绍了剧本的标题:
> This says that the script should be started in levels 2, 3, 4, and
> 5, that its start priority should be 20, and that its stop priority
> should be 80.
示例开始,停止和状态代码使用在中定义的辅助函数 /etc/init.d/functions
启用脚本
$ chkconfig --add myscript
$ chkconfig --level 2345 myscript on
检查脚本是否确实启用-选择的级别应显示为“ on”。
$ chkconfig --list | grep myscript
您测试一下,您的计算机通常会开始进入哪个运行级别。
runlevel
通常是5或2-有各种约定,但实际上并没有成立,afaik。Ubuntu使用2,而我以前使用的以前的发行版一直使用
然后,你从你的初始化脚本做一个符号链接,也许/etc/init.d/foobar
到/etc/rc2.d/SXYfoobar
S的意思是“在此运行级别下启动此脚本(此处:2)。XY是两位十进制数字,与序列相关,脚本将启动。
如果您先运行脚本S45barfoo,而S55foofoo取决于您的脚本,则可以在45到55之间选择xy。对于相等的数字,引导顺序是不确定的。
同时,Ubuntu切换(正在切换)到另一个名为的启动过程upstart
。
并注意:链接并非总是链接到/etc/rcX.d
-有时是链接/etc/init/rcX.d
或类似名称,但应该容易找到/ etc下的某个位置。
如果要在启动脚本的末尾启动某个/etc/rc.local
文件,则需要查找该文件,但是如果它取决于已经运行的X11,则可以寻找桌面环境的自动启动选项,或者/etc/X11/Xsession.d/
使用与上述类似的模式以上。
如果您依赖于网络正常运行,则有一个单独的目录(if-up.d),以及安装的设备(如外部USB驱动器)/etc/udev/rules.d/
。
update-rc.d
?
正如Naftuli Tzvi Kay在上面对Debian的提问:从Debian 6开始,您的脚本应包含一个LSB(Linux标准库)标头,以指示其依赖关系和功能(请参阅debian wiki页面)。
如果存在LSB标头,则可以用来insserv
在引导过程中包含脚本(请参见另一个debian wiki页面)。
/etc/init
,/etc/init.d
,/etc/rc.d
,/etc/rc.local
和几个它有?