Назад | Перейти на главную страницу

Запускать унисон в фоновом режиме при запуске?

Я использую 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