【发布时间】:2015-07-16 18:38:51
【问题描述】:
我有一个 bash 脚本,它使用 inotifywait 上传任何移动到 Apache 服务器目录中的文件。在我的旧设置中,Apache 会在启动时启动;我会手动打开一个终端,运行脚本,然后在它无限期地运行/监控时最小化该终端。
我希望 apache 和脚本都在启动时启动,这样我就可以打开我的机器,并且该过程不需要任何进一步的输入。
我尝试将脚本移动到 /etc/init.d 并运行
sudo chmod +x myscript.sh
sudo update-rc.d myscript.sh defaults
为了让它在启动时运行。
现在看来 Apache 不像以前那样在启动时启动了。我尝试在 Firefox 中导航到 localhost,但页面无法加载。手动启动服务器后,一切正常,但现在我只是手动启动服务器而不是脚本。如果我
pgrep -fl myscript.sh
我看到正在运行的脚本实例。
发生了什么?为什么在启动时运行的脚本会干扰 apache?脚本与 apache 的唯一交互是监视某个目录以创建新文件。确定没有文件在启动时发生变化?
我是整个过程的菜鸟,我只是通过广泛的谷歌搜索才走到这一步,但我找不到任何关于我下一步应该做什么的信息。谢谢
【问题讨论】:
-
你的脚本是什么样的?它是写成一个初始化脚本吗?他们有特殊的期望。这样做可能会以多种方式中断服务器的正常启动。
-
只有4行代码;非常简单。
inotifywait -m -q -r -e MOVED_TO --format '%f' /var/www/html/uploads | while read FILEdocurl -u <user:pw> -T $FILE https://website.comdone -
是的,这不是初始化脚本。那不退出。这会在运行的任何时候阻止您的启动。
-
是否使用 cron 选项?您可以使用
@reboot事件。
标签: bash apache ubuntu-14.04 boot inotify