在启动时在后台运行 Unison 吗?

在启动时在后台运行 Unison 吗?

我正在运行 64 位 Debian 6。

我想要做的是在启动时运行 Unison,以持续监视我在 VM 上运行的 LAMP 服务器上的文件并将其与 VM 共享文件夹同步。

while true
do
    unison -batch -owner -group /folder1/ /folder2/
    sleep 10
done

现在,我可以让这个脚本在启动时运行……但问题是它会挂起。即使我使用 nohup,它也会挂在 nohup 对话框中。

另外,如果有办法使用 nohup,我真的宁愿它根本不记录任何内容。但是,我在 nohup 或 unison 文档中都找不到此选项。我可能忽略了它,但我找不到它。

我确信有一种方法可以将 Apache 链接到另一个文件夹并使用它...但我仍然想知道如何做到这一点,因为我也可以在不同的环境中使用它。

谢谢

答案1

为什么不首先将 Apache 指向虚拟机上的共享文件夹?这就像为您的虚拟主机添加/更改一个文件一样简单(我相信您已经这样做了)。这将使您不必在更新服务器文档根目录时等待 5-10 秒。

然而您实际要求的是定期运行某些命令,因此最后您只需要一个 cron 作业。这个答案可能对你有帮助

因此您只需将其添加到您的 crontab 文件中:

* * * * * unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1
* * * * * sleep 10; unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1
* * * * * sleep 20; unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1
* * * * * sleep 30; unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1
* * * * * sleep 40; unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1
* * * * * sleep 50; unison -batch -owner -group /folder1/ /folder2/ >/dev/null 2>&1

>/dev/null 2>&1重定向 stdout 和 stderr 输出的方法,即删除所有日志记录。

答案2

有一个内置-repeat标志,您可以指定两次执行之间应等待的秒数unison。请参阅手动的

unison -repeat 10 -batch -owner -group /folder1/ /folder2/

答案3

vi /etc/sysconfig/unison.env

添加export HOME=/path/to/home(例如export HOME=/home/user1:)

vi /etc/init.d/unison

添加以下几行:

#!/bin/bash
# chkconfig: 2345 20 80
# description: unison service

# add this line to avoid `Fatal error: exception Util.Fatal("Environment variable HOME not found")`
. /etc/sysconfig/unison.env
case $1 in
    start)
        unison -batch -owner -group /folder1/ /folder2/ &
    ;;

    stop)
        ps aux | grep -v grep | grep unison | awk '{print $2}' | xargs kill -9
    ;;

    *)
        echo "Usage: service unison {start|stop}"
    ;;
esac

配置启动

chkconfig unison on

相关内容