Shell ich möchte eine Shell Datei erstellen die ständig prüft ob in einen bestimmten Ordner eine neue Datei gekommen ist. Kann mir da jemand Helfen?

... komplette Frage anzeigen

3 Antworten

Das geht mit dem Tool ionotify, welches Du ggfs. auf deinem System erst nachinstallieren müsstest. Das Tool prüft Änderungen im Dateisystem in von dir angegebenen Verzeichnissen. Dein Script könnte dann bspw. wie folgt aussehen:

while true; do inotifywait -e modify /pfad/zum/verzeichnis/ && zip -r archiv.zip ordner1; done

Beachte, dass dieses Script als Daemon auf deinem System laufen müsste. Wenn es einmal durch ist, würde es ansonsten stoppen.

Hier findest Du Hinweise zu dem Tool: https://wiki.ubuntuusers.de/inotify/

Antwort bewerten Vielen Dank für Deine Bewertung

hier ein Shell-Script für die tclsh-Shell.

u.U. muss das Paket tcl noch installiert werden.
Das Script benötigt 2 Parameter:
1. das Verzeichnis in dem so eine neue Datei "ankommen" soll
2. das Verzeichnis das dann in das Zip-Archiv aufgenommen werden soll.

Die Zahl 10000 bedeutet, dass nach 10 Sekunden die Prüfung wiederholt wird.
Dieser Wert kann beliebig geändert werden.

Nach dem Erstellen des Scripts, bitte chmod 755 <DateiName> nicht vergessen.

#!/bin/bash
# \\
exec tclsh "$0" "$@"
set wdir [lindex $argv 0 ]
set dest [ lindex $argv 1 ]

if { $wdir == "" } { puts "bite ein Verzeichnis als Parameter angeben" ; exit }

if { ![file isdirectory $wdir] } { puts "$wdir ist kein Verzeichnis" ; exit }

if { [catch { cd $wdir } ] != "0" } { puts "cd $wdir nicht möglich" ; exit }

set dateienOld [llength [glob -nocomplain * ]]
while { 1 } { set dateienNew [llength [glob -nocomplain * ]]
if { $dateienOld == $dateienNew } { after 10000 ; continue }
set dateienOld $dateienNew
if { [ catch { eval exec zip -r archiv.zip $dest ]} ] != "0" } { puts "zip war nicht erfolgreich" }
}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von devmi
18.11.2016, 11:42

bei mir steht dann da Datei.sh: 3 exec: tclash: Not found

0
Kommentar von devmi
18.11.2016, 11:46

Was heißt das

0

So klappt das nicht.
Eine Shell ist dazu gedacht, eine Befehlsfolge einmal abzulaufen und nicht ständig im Hintergrund zu laufen.

Du müsstest also über Aufgabenplanung das Shellscript im Minutentakt aufrufen, was aber dazu führt, dass immer wieder ein schwarzes Fenster aufblinkt, wenn das Script ausgeführt wird.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von devmi
18.11.2016, 07:41

ok danke gibt es eine andere Lösung das soll auf einem Webserver laufen

0
Kommentar von devmi
18.11.2016, 07:53

und was steht in dem Skript genau ich kenne mich nicht so gut aus

0
Kommentar von guenterhalt
18.11.2016, 08:10

Eine Shell ist dazu gedacht, eine Befehlsfolge einmal abzulaufen und nicht ständig im Hintergrund zu laufen.

wer hat dir denn diesen Unsinn erzählt?
Ein Shell-Script ist keineswegs an ein Terminal gebunden.
Das mit Stapelverarbeitung und schwarzes Fenster kennst du sicher von Microsoft und dem ( so nannte es sich mal) Dosfenster.

Linux ist jedoch ein modernes Betriebssystem.

0
Kommentar von devmi
18.11.2016, 08:17

Ja ab was muss in dem Script stehen

0

Was möchtest Du wissen?