フォークしているbashスクリプトが実行されています。次のようになります。
#!/bin/bash
/usr/bin/killall inotifywait
/usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder1/ | while IFS= read -r FILE; do /bin/chmod 770 "$FILE"; done >/dev/null 2>&1 &
/usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder2/ | while IFS= read -r FILE; do /bin/chmod 770 "$FILE"; done >/dev/null 2>&1 &
/usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder3/ | while IFS= read -r FILE; do /bin/chmod 770 "$FILE"; done >/dev/null 2>&1 &
/usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder4/ | while IFS= read -r FILE; do /bin/chmod 770 "$FILE"; done >/dev/null 2>&1 &
スクリプトを実行すると、8つのプロセスが生成されます。
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder1/...
- /bin/bash ./scriptname.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder2/...
- /bin/bash ./scriptname.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder3/...
- /bin/bash ./scriptname.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder4/...
- /bin/bash ./scriptname.sh
なぜこのようにフォークされないのですか?
- /bin/bash ./scriptname.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder1/...
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder2/...
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder3/...
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder4/...
ありがとう、Starflyer
答え1
inotifywaitの出力をwhileループにパイプしています。このコンテキストのwhileループは、追加のbashプロセスであるサブシェルで実行されます。