Я использую Debian 6 64bit.
Я пытаюсь запустить Unison при запуске, чтобы постоянно отслеживать файлы на сервере LAMP, который я запускал на моей виртуальной машине, и синхронизировать их с общей папкой виртуальной машины.
while true
do
unison -batch -owner -group /folder1/ /folder2/
sleep 10
done
Теперь я могу запустить этот сценарий при запуске ... но проблема в том, что он зависает. Даже если я использую nohup, он зависает в диалоговом окне nohup.
Кроме того, если есть способ использовать nohup, я бы предпочел, чтобы он вообще ничего не регистрировал. Однако я не могу найти эту опцию ни в документации nohup, ни в unison. Возможно, я не замечаю этого, но я не могу его найти.
Я уверен, что есть способ связать 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
означает перенаправить вывод stdout и stderr, т.е. удалить все журналы.
Есть встроенный -repeat
флаг, которому вы можете присвоить количество секунд, unison
следует ждать между казнями. Увидеть руководство.
unison -repeat 10 -batch -owner -group /folder1/ /folder2/
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