これに似たトピックについて少し議論されていることは知っています。しかし、ここに私が基本的にやろうとしていることがあります。
watched
という監視ディレクトリがあり、そのディレクトリにファイルが追加されるたびに、syncbh.sh
というスクリプトをトリガーして、そのディレクトリからファイルを取り出してリモートサーバーにアップロードします。
警告は、あるユーザー(user2)がwatched
ディレクトリにファイルを作成しますが、スクリプトは別のユーザー(user1)が実行するということです。
私はincronを使用してこれを達成しようとしましたが、スクリプトはroot権限でuser1によって手動で実行できますが、incronデーモンは決して実際には、他のuser2によるファイル作成イベントによって自動的にトリガーされます。
inoticomingがより良い代替手段になるかどうかを考えましたが、この構文がどのように機能するかについてはわかりません。これを達成するためのより良い方法がある場合、またはinoticomingを使用することになった場合、コマンド構文は/home/user1/watched
ディレクトリを監視し、スクリプト/usr/local/bin/syncbh.sh
ifを実行するように要求しますそのディレクトリ内でファイルが作成/変更されますか?
どんな助けでも大歓迎です。
inoticoming
を使用:
ブート時にinoticoming
を実行するスクリプトを/etc/init.d/
に配置できます。
inoticoming
フォルダーのpid
ログ/最後のwatched
を保持する新しいフォルダーを作成します:Sudo mkdir -p /var/log/inoticoming/watched/
inoticoming_watched
にスクリプト/etc/init.d/
を作成します。
*忘れずに<path_to_folder>と<path_to_script>を変更して、watched
フォルダーのフルパスと実行するスクリプトのフルパスを一致させてください。
#!/bin/sh
case "${1}" in
start)
inoticoming --logfile '/var/log/inoticoming/watched/inoticoming.log' --pid-file '/var/log/inoticoming/watched/inoticoming_last_pid.txt' <path_to_folder> <path_to_script> \;
;;
stop)
kill -15 $(< /var/log/inoticoming/watched/inoticoming_last_pid.txt tee)
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
スクリプトを実行可能としてマークします: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:
Sudo apt-get install inoticoming
次に、このコマンドを使用します。
複数回開始できるため、進行中の進行中のプロセスに注意してください。
$ inoticoming /home/user1/watched /usr/local/bin/syncbh.sh /home/user1/watched/{} \;
^ ^ ^
| | |
^-- The directory to be monitored |
| |
^-- Your script |
^-- The parameter for your script
プロセスはバックグラウンドで実行され、/home/user1/watched
を監視しています
そのディレクトリでファイルが追加または変更されると、スクリプト/usr/local/bin/syncbh.sh
が呼び出されます。
このスクリプトのパラメーターは、この場合/home/user1/watched/<name_of_changed_or_modified_file>
です
{}
はファイル名に置き換えられます