• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Ordner überwachen

miromara

Newbie
Wie kann ich einen Ordner überwachen, so dass ein Shell Script automatisch ausgelöst wird wenn neue Dateien erstellt werden?
Im Moment löse ich das mit einem Cronjob der jede 5 Minuten läuft, ist aber unpraktisch.

Der Ordner ist ein Samba-Share wo Windows Clients Postscript-Dateien speichern. Diese werden dann mit einem Script und Ghostscript in PDF umgewandelt.

Mit der aktuellen Lösung muss der Anwender warten bis der Cronjob ausgelöst wurde, was nicht optimal ist.

Danke für die Hilfe.
 
Moin miromara,

ich denke das cron schon das Richtige dafür ist. Evtl. solltest Du aber die Wiederholrate höher stellen, oder Du zeigst deinen Usern wie sie ihre Dateien per Hand umwandeln, oder Du gibst ihnen ein Programm an die Hand das gleich im pdf-Format speichert.
 

abgdf

Guru
Hallo miromara,

dieses Python-Skript, das ich mal für Dich gebastelt habe (beenden mit STRG+c), überwacht das Verzeichnis "/home/user" und führt bei Veränderungen "/home/user/yourscript" aus:

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from time import sleep

dir="/home/user"

a=os.listdir(dir)

while 1:

  b=os.listdir(dir)

  if len(a) != len(b):
    os.system("/home/user/yourscript")
    a=b[:]
    continue

  for i in range(len(b)):
    if a[i] != b[i]:
      os.system("/home/user/yourscript")
      a=b[:]
      break

# sleep(5)

Packe es, einschließlich der Einrückungen, in einen Editor, ändere "/home/user" und die zwei Zeilen mit "/home/user/yourscript" nach Deinen Bedürfnissen, speichere es als "wach.py", mach es mit "chmod +x wach.py" ausführbar und starte es mit "./wach.py".

Läuft es so, wie Du wolltest ?
Gefällt es Dir ?

Viele Grüße
 
Am Besten, du verwendest das inotify-Kernelinterface, das genau für eine solche Problematik geschrieben wurde.
 

abgdf

Guru
@jengelh:

na gut, das wäre sicher professioneller und ressourcenschonender.

Auch z.B. "gamin"

http://www.gnome.org/~veillard/gamin/

sieht vielversprechend aus.

Für Python gäbe es:

http://rudd-o.com/projects/python-inotify/

Aber wie kommt micromara damit oder mit inotify zum Ziel, ohne selbst in die Programmierung einzusteigen ?

Gruß
 

abgdf

Guru
Hallo,

mein obiges einfaches "Überwachungsskript" geht auch in bash:

Code:
#!/bin/bash

dir="/home/user"

a=`ls $dir`

while test 1
do
b=`ls $dir`
if test "$a" != "$b"
then

# Add your command(s) here:
# /home/user/yourcommand

a=$b
fi
# sleep 5
done

Wie wär's ?

Viele Grüße
 

Daniele

Newbie
Hallo.

Ich muß jetzt mal dieses alte Theam ausgraben, da ich ein ähnliches Problem habe.

Folgendes habe ich vor;

auf meinem Linuxserver läuft ein FTP-Server, auf den verschiedene eingerichtete User Zugriff haben. Von diesen Usern möchte ich die jeweiligen Uploadordner überwachen und bei Änderung per Mail eine Benachrichtigung erhalten, wenn möglich. Das ganze dachte ich mir entweder wie hier schon erwähnt per Script oder eben über einen cronjob, der nach x Zeit die Ordner überprüft.

Dieses Thema hier war nach meiner Suche das einzigste, was meinem Problem ähnlich ist.

Google hab ich auch schon gequält und irgendwie nicht wirklich was gefunden. Oder ich hab einfach nur die flaschen Suchwörter benutzt.

Um´s vorweg zu nehmen...ich bin erst Anfang diesen Jahres mit meinem Heimserver von Windows auf Linux umgestiegen. Hab also (noch) nicht allzuviel Ahnung.

Verwendetes System ist openSUSE 10.2.

Ich würde mich über hilfreiche Tips oder Lösungen sehr freuen.


Gruß in die Runde
Daniele


EDIT

Hab das Problem mit afick und cron gelöst.
Den Tipp bekam ich aus einem Beitrag hier im Forum.
Ja, wer suchet, der findet. Muß man erstmal die richtigen Worte finden. :D
 

Daniele

Newbie
Nuja, was heißt daneben. Das Anpassen bzw. die Umsetzung fällt mir da wohl schon eher schwer. Also daß mir ´ne Mail geschickt wird.

Aber mit afick hab ich da eine Lösung gefunden, die so schon ganz gut läuft.

Würde mir bei deiner Lösung mitgeteilt, was geändert wurde?
 

TomcatMJ

Guru
Also irgendwie liest sich die Aufgabenstellung nach dem Paradebeispiel für den famd (=FileAccessMonitoringDaemon) wobei ich bisher mit dem Ding noch nicht gearbeitet hab und der Manpage nach wohl die Nutzung in einem Bash-Script nicht sonderlich trivial zu sein scheint...aber damit wären Cronjobs wohl unnötig wenn man ein abfragendes Programm bastelt das ebenso als Daemon im Hintergrund läuft.....
Das war nur mal so als Anregung zur Thematik gedacht nun...

Bis denne,
Tom
 

Porn X

Newbie
hallöchen

ich hol den thread ma aus der versenkung, da mir die problematik auch gerade gestellt wird und ich kaum erfahrung mit der shell programmierung hab.

das shell-skript von abgdf macht FAST genau das, was ich will. ich möchte eine bestimmte aktion ausführen, sobald eine bestimmte datei in dem überwachten verzeichnis erscheint. wie muss ich das skript denn dafür anpassen?

mfg
 
Oben