如何在 AWS EC2 中的 Amazon Linux 上注册关机脚本

如何在 AWS EC2 中的 Amazon Linux 上注册关机脚本

我在 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目录中都有符号链接。

你的脚本很有可能关机时被调用stopK符号链接不在您预期的位置。

相关内容