nohup 创建多个进程

nohup 创建多个进程

我正在使用 nohup 来运行脚本 inotify 命令,因为当我退出终端时 inotify 会停止,所以我希望脚本在后台运行。所以我像这样运行脚本

nohup  /path/to/script.sh >/dev/null 2>&1 &

问题不是 nohup 每次由 inotify 创建新文件时都会创建新进程。我该如何避免这种情况或使用任何其他建议方法来完成我的任务。

我想在 backgorund 运行的脚本

      #!/bin/sh


      DIR="/opt/data/"
      EVENTS="moved_to"
      FIFO="/tmp/inotify2.fifo"

       on_event() {
       local date=$1
       local time=$2
       local file=$3

         sleep 5


       /opt/nfdump/bin/nfdump -qr "$DIR""$file" -o extended | perl -i -p -e 'use    Socket; s#(\d{1,3}(\.\d{1,3}){3})\b#gethostbyaddr(inet_aton($1),AF_INET) or    sprintf($1)#egi' > /opt/nfdump-ascii/nfdump-ascii."$date"."$time".log
             }

      # MAIN
      if [ ! -e "$FIFO" ]
       then
       mkfifo "$FIFO"
       fi

        inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f'  "$DIR" > "$FIFO" &
        INOTIFY_PID=$!


      while read date time file
       do
       on_event $date $time $file &
       done < "$FIFO"

答案1

您要么lock等待前一个过程结束...要么您执行kill前一个过程...如果没有有关script您正在运行的详细信息...我们真的无法告诉您太多。

理想情况下,您的脚本会在某种循环中检查某些内容。如果有事情要做,它会执行,然后在每次迭代时进行某种休眠。有些事情没有正确结束。

相关内容