Назад | Перейти на главную страницу

nohup создать несколько процессов

Я использую nohup для команды запуска сценария inotify, потому что inotify останавливается, когда я выхожу из терминала, поэтому я хочу, чтобы сценарий запускался в фоновом режиме. поэтому я запускаю сценарий вот так

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

проблема не в том, что nohup создает новый процесс каждый раз, когда новый файл создается inotify. как я могу избежать этого или любого другого метода предложения для выполнения моей задачи.

сценарий, который я хочу запустить на заднем плане

      #!/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"

ты либо lock и дождитесь завершения предыдущего процесса ... или вы kill предыдущий процесс ... Без подробностей о script вы бежите ... Мы не можем сказать вам много.

В идеале ваш сценарий должен проверять что-то в каком-то цикле. Если бы нужно было что-то сделать, он бы это делал, а затем на каждой итерации как бы засыпал. Что-то не заканчивается должным образом.