我在 AWS EC2 中使用 Amazon Linux(基于 RH 的发行版)。
我按照的结构/usr/share/doc/initscripts-*/sysvinitfiles
在中创建了一个初始化脚本/etc/init.d
。
/etc/init.d/do_something
#!/bin/sh
# chkconfig: 3 90 10
# description: Description of the script
start () {
echo -n "Doing something..." >> /opt/started.log
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/do_something
return $RETVAL
}
stop () {
echo -n "Stopping doing something..." >> /opt/stopped.log
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -rf /var/lock/subsys/do_something
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $?
然后我可以通过执行 将其注册到 chkconfigchkconfig --add do_something
中。这会在 中创建一个 S 符号链接/etc/rc3.d
。但是没有创建 K 符号链接。如果我手动创建符号链接并关闭或重新启动实例,系统脚本将按预期执行。
我做错了什么以及如何生成 K 符号链接(这样我就不必手动创建它)?
答案1
我不是专家根本当涉及到 SysVinit 脚本时。但据我所知,如果您指定 initscript 应仅在一个运行级别(例如,运行级别 3)启动,那么您将只S
在 中有符号链接/etc/rc3.d
,而K
在所有其他/etc/rcX.d
目录中都有符号链接。
你的脚本很有可能是关机时被调用stop
;K
符号链接不在您预期的位置。