在启动时在后台运行一致吗?

我正在运行Debian 6 64bit。

我想要做的是在启动时运行Unison,不断监视我的虚拟机上运行的LAMP服务器上的文件,并与虚拟机共享文件夹进行同步。

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

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

另外,如果有办法我可以使用nohup,我真的宁愿不logging任何东西。 但是,我无法在nohup或unison文档中find此选项。 我可能会忽略它,但我找不到它。

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

谢谢

为什么不把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意味着redirectstdout和stderr输出,即删除所有日志logging。

 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 

configuration启动

 chkconfig unison on