startup - Debian 8.11 init.d 脚本不会在启动时运行
问题描述
我根据本指南创建了以下 init.d 脚本,旨在在启动时启动MaNGOS 的这个分支:
#!/bin/sh
### BEGIN INIT INFO
# Provides: mangosd
# Should-Start: console-screen dbus network-manager
# Required-Start: $all
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start mangosd at boot time
### END INIT INFO
#
set -e
/lib/lsb/init-functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin
SCRIPT="/usr/local/sbin/realmd.sh"
SCRIPT2="/usr/local/sbin/mangosd.sh"
PROGRAMNAME="realmd"
PROGRAMNAME2="mangosd"
case "$1" in
start)
$SCRIPT
$SCRIPT2
;;
stop)
pkill $PROGRAMNAME
pkill $PROGRAMNAME2
;;
esac
exit 0
我可以使用 运行此脚本sudo /etc/init.d/mangosd start
,这将使其按预期工作,运行 reald.sh 和 mangosd.sh,如下所示。
领域.sh:
#!/bin/sh
# /usr/local/sbin/realmd.sh
/home/rebirth/MaNGOS/bin/realmd &
芒果.sh:
#!/bin/sh
# /usr/local/sbin/mangosd.sh
cd /home/rebirth/MaNGOS/bin
./mangosd &
这三个文件都具有相同的权限,如下所示:
-rwxr-xr-x 1 root root 80 Sep 2 20:33 /usr/local/sbin/mangosd.sh
realmd
然后程序mangosd
将按预期运行。根据指南,我已经运行sudo insserv mangosd
并验证了启动文件是否已创建:
$ ls -la /etc/rc2.d/S04mangosd
lrwxrwxrwx 1 root root 17 Sep 2 18:00 /etc/rc2.d/S04mangosd -> ../init.d/mangosd
我跑了sudo reboot
,也realmd
没有mangosd
在启动时自动启动。此时手动运行 init.d 脚本仍然可以按预期工作。
我查看了以下与此问题相关的帖子:
启动 Hudson 的 Init.d 脚本不会在 Ubuntu 上启动时运行
两者都没有提供解决方案,但是后者确实有另一个我没有尝试过的命令,sudo update-rc.d mangosd defaults
. 不幸的是,运行此命令并重新启动后,realmd
仍然mangosd
没有在启动时自动运行。
如果有人有任何建议,或者能够指出我正确的方向,我将非常感激。非常感谢!
解决方案
您可以在 debian 上查看名为骨架的文件,该文件位于目录 /etc/init.d/ 中,该文件旨在帮助人们开始使用自定义 init.d 服务。
此行不是强制性的,您可以将其删除:
# Should-Start: console-screen dbus network-manager
代替 :
/lib/lsb/init-functions
和
. /lib/lsb/init-functions
你也应该删除:
set -e
如果它不起作用,您可以尝试将默认设置 required-start 设置为此:
# Required-Start: $remote_fs $syslog
所以最终文件可以是:(未测试)
#!/bin/sh
### BEGIN INIT INFO
# Provides: mangosd
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start mangosd at boot time
### END INIT INFO
#
. /lib/lsb/init-functions
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin
SCRIPT="/usr/local/sbin/realmd.sh"
SCRIPT2="/usr/local/sbin/mangosd.sh"
PROGRAMNAME="realmd"
PROGRAMNAME2="mangosd"
case "$1" in
start)
$SCRIPT
$SCRIPT2
;;
stop)
pkill $PROGRAMNAME
pkill $PROGRAMNAME2
;;
esac
exit 0
这些链接可以帮助您:
Debian 维基:https ://wiki.debian.org/LSBInitScripts/
推荐阅读
- laravel - 使用棘轮 websocket 部署 Laravel Vue 应用程序
- vue.js - 如何修复“结果中缺少产品属性”
- c++ - 如何在 C++ 中以最佳方式循环遍历类成员向量的元素?
- html - 部分链接无法在标签中下载
- java - 使用springboot和entitygraph序列化对象时如何忽略fetch lazy
- bash - 如何解决错误“读取:非法选项 -d”。我希望在 sh 下运行它。有没有替代路线
- r - 如何使用 R 中的递归创建长度为 n 的所有 2^n 二进制序列的矩阵?
- javascript - 如何将 formData 中的裁剪图像发送到 PHP
- julia - 在 Julia 中克隆一个函数
- google-analytics - 查看多个站点的 Google Analytics(分析)数据?