运行 与服务器同时循环 bash 脚本?

Run looping bash script simultaneously with server?

我有一个 bash 脚本,它使用 inotifywait 上传移动到 Apache 服务器目录中的任何文件。在我的旧设置中,Apache 会在启动时启动;我会手动打开一个终端,运行 脚本,然后在 runs/monitors 无限期地最小化该终端。

我希望 apache 和脚本都在启动时启动,这样我就可以打开我的机器,并且该过程不需要任何进一步的输入。

我试过将脚本移动到 /etc/init.d 和 运行ning

sudo chmod +x myscript.sh
sudo update-rc.d myscript.sh defaults

为了让它在启动时达到 运行。

现在 Apache 似乎不像以前那样在启动时启动了。我尝试在 firefox 中导航到本地主机,但无法加载该页面。手动启动服务器后,一切正常,但现在我只是手动启动服务器而不是脚本。如果我

pgrep -fl myscript.sh

我看到脚本 运行ning 的实例。

这是怎么回事?为什么启动时的脚本 运行ning 会干扰 apache?脚本与 apache 的唯一交互是监视某个目录以创建新文件。当然 none 的文件在启动时发生了变化?

我对整个过程一窍不通,我只是通过广泛的谷歌搜索才走到这一步,但我找不到任何关于我下一步应该做什么的信息。谢谢

您可以尝试将启动脚本命令添加到 apache 的 init.d 脚本中。这样它不仅会自动启动,还会被 apache 杀死,您将跳过 init.d-script 细节。

我相信您正在使用 pre Ubuntu 6.10 引导自定义说明。

你有几个选择。我的建议是使用 rc.local.

来自The Debian GNU/Linux FAQ

The rc.local script is executed at the end of each multiuser runlevel. In Debian it is configured to do nothing. This provides customisation of the boot process, but might not be sufficient for all situations.

所以你需要做的就是编辑 /etc/rc.local 来调用 myscript.sh 然后你应该被设置。

或者,您可以创建一个 upstart 兼容服务文件并启用它。

ubuntu bootup howto有写服务的一些说明:

job/service 定义的最新参考可在 init 的手册页中找到,可由 运行 man 5 init 获得。 The Upstart Cookbook.

中也有一些非常有用的指针

这是一个简单的 upstart 作业配置示例:/etc/init/myservice.conf

# myservice - myservice job file

description "my service description"
author "Me <myself@i.com>"

# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork

# Run before process
pre-start script
    [ -d /var/run/myservice ] || mkdir -p /var/run/myservice
    echo "Put bash code here"
end script

# Start the process
exec myprocess