Я знаю, что была небольшая дискуссия на темы, подобные этой. Но вот что я в основном пытаюсь сделать.
У меня есть каталог для отслеживания, watched
и всякий раз, когда файл добавляется в этот каталог, я хочу вызвать скрипт, syncbh.sh
который вызывает файлы из этого каталога и загружает их на удаленный сервер.
Предостережение заключается в том, что файлы создаются в watched
каталоге одним пользователем (user2), но скрипт выполняется другим пользователем (user1).
Я пытался использовать incron для достижения этой цели, но продолжаю сталкиваться с серьезной проблемой, потому что, хотя скрипт может быть выполнен вручную пользователем user1 с привилегиями root, демон incron фактически никогда не запускается автоматически событием создания файла другим пользователем2.
Я думал о том, будет ли inoticoming лучшей альтернативой, но мне неясно, как работает синтаксис этого. Если есть лучший способ сделать это, или если я в конечном итоге использую inoticoming, какой будет синтаксис команды, чтобы попросить его просмотреть /home/user1/watched
каталог и выполнить скрипт, /usr/local/bin/syncbh.sh
если файл создан / изменен в этом каталоге?
Любая помощь приветствуется.
источник
inoticoming
?Ответы:
Использование
inoticoming
:Вы можете поместить скрипт,
/etc/init.d/
который запускаетсяinoticoming
во время загрузки.Создайте новую папку для хранения
inoticoming
журнала / последнегоpid
дляwatched
папки:sudo mkdir -p /var/log/inoticoming/watched/
Создать скрипт
inoticoming_watched
в/etc/init.d/
:* Не забудьте изменить <path_to_folder> и <path_to_script>, чтобы они соответствовали полному пути к
watched
папке и полному пути скрипта для выполненияПометьте скрипт как исполняемый:
sudo chmod u+x /etc/init.d/inoticoming_watched
Убедитесь, что вызываемый скрипт
inoticoming_watched
является исполняемым.Обновление
rc.d
дляinoticoming_watched
запуска службы во время загрузки:sudo update-rc.d inoticoming_watched defaults
Вы можете проверить
inoticoming
вход в систему/var/log/inoticoming/watched
.источник
Прежде всего, установите inoticoming :
Затем используйте эту команду:
Обратите внимание на текущие процессы инотикоминга, потому что они могут запускаться несколько раз.
Процесс работает в фоновом режиме и следит за
/home/user1/watched
Когда файл добавляется или изменяется в этом каталоге,
/usr/local/bin/syncbh.sh
вызывается скрипт .Параметр для этого скрипта в этом случае
/home/user1/watched/<name_of_changed_or_modified_file>
{}
заменяется именем файлаисточник
Прежде всего, скрипт для просмотра
watched
каталога:Второй Чтобы выполнить синхронизацию с другим пользователем (user2):
Теперь для того , чтобы не сделать пользователь подсказку, вы можете установить свой
sudo
пароль в файл и прочитать пароль из этого файла при необходимости (обратите внимание , вы должны использовать-S
с ,sudo
чтобы получить пароль от файла).Положите ваш
sudo
пароль в файл, предположимpasswd.txt
, тогда приведенная выше команда будет отстойной, какТеперь общий сценарий будет выглядеть так:
источник