Linux bash フォークプロセス (inotifywait)

Linux bash フォークプロセス (inotifywait)

フォークしている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プロセスであるサブシェルで実行されます。

おすすめ記事