我有一个正在运行的 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 ./脚本名.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder2/...
- /bin/bash ./脚本名.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder3/...
- /bin/bash ./脚本名.sh
- /usr/bin/inotifywait -mrq -e CREATE --format %w%f /home/sftp/folder4/...
- /bin/bash ./脚本名.sh
为什么它不这样分叉呢?
- /bin/bash ./脚本名.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/...
谢谢你的回答,星际飞行者
答案1
您正在将 inotifywait 的输出传输到 while 循环中。此上下文中的 while 循环将在子 shell 中运行,这就是这些额外的 bash 进程。