【发布时间】:2018-03-17 06:32:49
【问题描述】:
我正在 CentOS 7 上创建我的第一个初始化脚本。我想在这个脚本上运行一个进程作为守护进程,并尝试使用 /etc/init.d/functions 文件中的守护进程函数,但是当我包含这个脚本时执行停止。
假设我创建的文件是“/etc/init.d/UpdateScript” 如果我写:
echo "Script start"
. /etc/init.d/functions
echo "After add functions"
所以在命令之后: /etc/init.d/UpdateScript 启动
我只有“脚本启动”作为输出。但是,如果我评论“# . /etc/init.d/functions”,我也有“添加函数后”,但当然是“守护进程:找不到命令”。 这种奇怪行为的原因是什么?如何解决?
【问题讨论】:
-
尝试
set -x看看/etc/init.d/functions退出的位置。 -
/etc/init.d在 CentOS 7 中被弃用,并切换到 systemd。尝试采购/lib/lsb/init-functions以获得更便携的替代方案。如果您还没有redhat-lsb-core软件包,则需要安装它。更好的是,编写 systemd.service文件而不是 init.d 样式的启动脚本。 -
您在脚本中使用
set -e吗? -
"您在脚本中使用 set -e 吗?"不,我没有。