我有以下脚本/etc/init.d/server.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides: PtokaX server
# Short-Description: PtokaX P2P server
### END INIT INFO
/home/serve/PtokaX/PtokaX -d -c /home/serve/PtokaX
其中,-d
用于作为守护进程启动并-c
指定配置文件的位置。
我在 PtokaX 中编写的脚本连接到 MySQL 服务器,并且 PtokaX 服务器在 MySQL 服务器启动之前启动。这导致 PtokaX 脚本引发错误,并且集线器上的几个功能失败。
我可以以某种方式更新脚本以便它仅在 MySQL 守护进程启动时才启动吗?
答案1
首先,将 rc-script 重命名为ptokax
(这个名字server.sh
很蹩脚,因为它没有向用户传达任何信息)。
然后尝试将该文件中的 LSB 标头更改为
### BEGIN INIT INFO
# Provides: ptokax
# Required-Start: $network mysql
# Required-Stop: $network mysql
# Should-Start: $time
# Should-Stop: $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop the PtokaX DC daemon
# Description: Controls the PtokaX DC server daemon
### END INIT INFO
然后运行
# insserv ptokax
使insserv
了解您的服务并重建其依赖关系图。
我相信如今老式的
# update-rc.d ptokax defaults
也应该会触发insserv
但我不太确定。
也可以看看这关于 LSB 头字段的含义。请注意,您可能还希望开始依赖其他虚拟设施,例如$remote_fs
和$named
—$syslog
具体取决于 PtokaX 所依赖的设施。