我需要在关闭/重启 Linux 服务器时终止一些服务,但我不确定重启命令如何工作。
据我了解,/etc/rc0.d/ 脚本将在系统关闭时调用,而 /etc/rc6.d/ 脚本将在系统重新启动时调用。
但根据这个链接:https://linux.die.net/man/8/reboot,除了在级别 0 和 6 上运行时,reboot 命令也会调用 shutdown 命令,那么这是否意味着在运行 reboot 命令时也会调用 /etc/rc0.d/ 脚本?
我是否只需要将服务终止脚本放入 /etc/rc0.d/ 和 /etc/rc1.d/ 中?还是还需要将其放入 /etc/rc6.d/ 中以确保重新启动时服务停止?
编辑:添加我的服务器配置。当前运行的是 Redhat,版本从 6.x 到 7.2。
答案1
如果您只是想在关机时以您想要的方式终止一些进程,您可以编写如下两个简单的脚本:
#Shutdown.sh
killall blah blah blah
init 0
和
#Reboot.sh
killall blah blah blah
init 6
.bashrc
并在您登录的每个用户的文件中创建一些别名:
alias shutdown_custom="Shutdown.sh"
alias reboot_custom="Reboot.sh"
每次要重新启动(或关机)时运行这些命令
但是如果您坚持使用初始化脚本,您可以将脚本放在目录中/etc/init.d
并发出以下命令(具有超级用户权限):
update-rc.d script-name enable 0 6
但请注意,您应该在脚本的标题中提及运行级别。例如,大多数 Linux 服务都可以找到以下内容:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
/etc/rc0.d
在我的系统中,和的内容/etc/rc6.d
完全相同,因此从 systemd 的角度来看,关机和重启是相同的。
如果有人有更好的解决方案我很高兴听到。