Linux init 脚本服务-延迟直到 mysql 套接字准备就绪

Linux init 脚本服务-延迟直到 mysql 套接字准备就绪

如何延迟 Linux 中的服务初始化脚本直到 MySQL 套接字存在?启动脚本中的 sleep 命令是否会延迟整个启动过程,或者每个初始化脚本是否由不同的线程执行以防止阻塞?

我正在尝试让我的 PolicyD 服务在 MySQL 之后启动。目前它在 /etc/rc5.d 中启动,因为 PolicyD 的脚本以 S06 开始,而 MySQL 的脚本以 S04 开始。问题是,当 policyd init 脚本运行时,如果 /var/run/mysqld/mysqld.sock 不存在,它将无法工作。如果我将脚本延迟 60 秒,它可以正常工作(让 MySQL 有足够的时间初始化其系统和套接字),但我不想暂停整个启动过程这么长时间?

我不认为 MySQL 有任何虚拟设施 LSB 名称会减慢 policyd 的初始化速度?(https://wiki.debian.org/LSBInitScripts

处理这个问题的最佳方法是什么?由于启动脚本运行其他可以循环的守护进程和程序,因此 init 系统是多线程的?我有点困惑……

如果这很重要,我正在运行 Ubuntu 16.04。如果有人能帮助澄清 init 进程的工作原理以及如何解决这个问题,我将不胜感激。

答案1

我认为您在 Ubuntu 16.04 中可以使用 systemd,否则您可以参考 upstart 系统,您可以在其中为您的服务编写一个 conf 文件。在此文件中,您可以指定服务仅在一个或多个服务之后启动。

我发现这篇关于 upstart 的文章非常有用Digital Ocean——新兴事件系统

答案2

我猜是的:

nohup bash_script_wrapper.sh /dev/null 2>&1 &

相关内容