nohup cria processo múltiplo

1

Estou usando nohup para o comando inotify de execução de script, porque inotify stop quando eu saio do terminal, portanto, quero que o script seja executado em segundo plano. então eu corro o script assim

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

o problema não é nohup criar novo processo toda vez que o novo arquivo criado pelo inotify. como posso evitar isso ou qualquer outro método de sugestão para realizar minha tarefa.

o script que quero executar em 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"
    
por Daniel 20.09.2013 / 20:58

1 resposta

0

você lock e espera que o processo anterior termine ... ou você kill do processo anterior ... Sem detalhes sobre o script que você está executando ... Não podemos dizer a você muito.

Idealmente, seu script verificaria algo em algum tipo de loop. Se houvesse algo para fazer, ele faria isso e depois faria algum tipo de sono a cada iteração. Algo não está terminando corretamente.

    
por 20.09.2013 / 21:55