Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

627
Visualizações
¿Cómo ejecutar inotifywait continuamente y ejecutarlo como cron o deamon?

Creé un script de shell que usa inotifywait para detectar automáticamente los cambios de archivo en un directorio específico. Cuando se coloca un nuevo archivo PDF en el directorio, este script debe desactivarse y luego debe activar ocropus-parser para ejecutar algunos comandos en él. El código:

 #!/bin/sh inotifywait -m ~/Desktop/PdfFolder -e create -e moved_to | while read path action file; do #echo "The file '$file' appeared in directory '$path' via '$action'" # Check if the file is a PDF or another file type. if [ $(head -c 4 "$file") = "%PDF" ]; then echo "PDF found - filename: " + $file python ocropus-parser.py $file else echo "NOT A PDF!" fi done

Esto funciona bastante bien cuando ejecuto este script a través de la terminal con ./filenotifier.sh pero cuando reinicio mi Linux (Ubuntu 14.04) mi shell ya no se ejecutará y no se reiniciará después de un reinicio. Decidí crear un script de inicio que comienza en el momento del arranque (creo). Hice esto copiando el archivo filenotifier.sh a init.d :

 sudo cp ~/Desktop/PdfFolder/filenotifier.sh /etc/init.d/

Luego le di al archivo los derechos correctos:

 sudo chmod 775 /etc/init.d/filenotifier.sh

y finalmente agregué el archivo a update-rc.d :

 sudo update-rc.d filenotifier.sh defaults

Sin embargo, cuando reinicio y coloco un PDF en la carpeta ~/Desktop/PdfFolder , no sucederá nada y parece que el script no se apaga. Realmente no tengo experiencia con init.d , update-rc.d y deamon , así que no estoy seguro de qué está mal y si este es un buen enfoque o no.

Gracias, Yenthe

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

  • Al ser un script de inicio, debe agregar el encabezado LSB a su script, así:

     #!/bin/sh ### BEGIN INIT INFO # Provides: filenotifier # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Something # Description: Something else ### END INIT INFO inotifywait -m ...

    De esta manera, puede asegurarse de que su script se ejecute cuando todos los puntos de montaje estén disponibles (gracias a Required-Start: $remote_fs ). Esto es esencial si su directorio de inicio no está en la partición raíz.

  • Otro problema es que en su guión de inicio está usando ~ :

     inotifywait -m ~/Desktop/PdfFolder ...

    El ~ se expande al directorio de inicio del usuario actual. Los scripts de inicio se ejecutan como raíz, por lo que se expandirán a /root/Desktop/PdfFolder . Use ~<username> en su lugar:

     inotifywait -m ~yenthe/Desktop/PdfFolder ...

    (Suponiendo que su nombre de usuario sea yenthe ).

    O tal vez cambiar de usuario antes de comenzar (usando sudo ).

  • $file es el nombre base sin la ruta al directorio. Use "$path/$file" en sus comandos:

     "$(head -c 4 "$path/$file")" python ocropus-parser.py "$path/$file"

    Tal vez considere usar name en lugar de file , para evitar confusiones.

  • Si las cosas no funcionan, o si en general quieres investigar algo, recuerda usar ps , así:

     ps -ef | grep inotifywait

    ps le dirá, por ejemplo, si su secuencia de comandos se está ejecutando y si inotifywait se inició con los argumentos correctos.

  • Por último, pero no menos importante: use "$file" , no $file ; use "$(head -c 4 "$file")" , no $(head -c 4 "$file") ; use read -r , no read . ¡Estos consejos pueden ahorrarte muchos dolores de cabeza en el futuro!

over 4 years ago · Santiago Trujillo Relatório

0

Para ello, los desarrolladores de inotify crearon incron . Es un demonio similar a cron que ejecuta scripts basados en cambios en un archivo/directorio observado en lugar de eventos de tiempo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda