PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Thread in ShellScripts



peschmae
12-06-2003, 11:55
geht das irgendwie? Wichtig wäre vor allem auch, dass Kollisionen bei Dateizugriff vermieden werden...

MfG Peschmä

arthur
12-06-2003, 12:23
etwas viel verlangt von der armen shell, mt + synchronization :rolleyes:
dafür brauchst schon perl, python oder ruby.

gruss
Arthur

peschmae
12-06-2003, 14:09
zugegebenermassen hast du recht, aber ich brauche eine Scriptsprache mit kleinem Interpreter - und da sind Shellscripts recht unschlagbar

MfG Peschmä

fork
13-06-2003, 15:05
Das mit den Threads keine Ahnung, aber der Dateizugriff...

Es gibt immer irgendwelche Möglichkeiten so etwas zu realisieren. Ein Lockfilemechanismus zum Beispiel:
- Prüfe ob ein von Dir erdachtes Lockfile vorhanden ist.
=> Wenn nicht lege es an
=> Wenn doch warte eine Sekunde und versuche es nochmal, bis es klappt
- Führe den Dateizugriff aus
- entferne das Lockfile wieder

peschmae
13-06-2003, 15:24
Original geschrieben von fork
Das mit den Threads keine Ahnung, aber der Dateizugriff...

Es gibt immer irgendwelche Möglichkeiten so etwas zu realisieren. Ein Lockfilemechanismus zum Beispiel:
- Prüfe ob ein von Dir erdachtes Lockfile vorhanden ist.
=> Wenn nicht lege es an
=> Wenn doch warte eine Sekunde und versuche es nochmal, bis es klappt
- Führe den Dateizugriff aus
- entferne das Lockfile wieder

naja, aber die Operationen sind ja nicht atomar - d.h. möglich ist damit auch

Prozess1 schaut: kein file vorhanden
Prozess2 schaut: kein file vorhanden
Prozess2 erstellt file
Prozess1 auch
Prozess1 beginnt zu schreiben
Prozess2 auch

-> chaos

MfG Peschmä

fork
13-06-2003, 21:57
a) Natürlich war das jetzt ein Spontaneinfall der noch weiter verfeinert werden müsste. Ich bin mir sicher das das schon recht sicher hinzukriegen ist. Z. B. mehrere Lockfiles fuer eine einzige Transaktion die Prozessspezifische Merkmale(z. B. PID) enthalten + oefteres pruefen auf vorhandensein von solchen lockfiles und bei erkannter Störung ein vorzeitiger Abbruch der Transaktion.

b) Eine andere Moeglichkeit wäre ein Dateisperrverwalter-skript. In einem bestimmten Verzeichnis werden Dateien(mit PID im Namen) als Anforderung einer Resource geschrieben und so ein Dateisperrverwalter teilt dann wieder in Form von Dateien demjenigen Prozess mit das es auf die Datei zugreifen darf. Die ganze IPC laeuft dann halt über Dateien und da muessen Verzeichnisse halt entsprechend oft ueberprueft werden von jedem beteilligten Prozess, damit das zügig funktioniert.

Warum Scriptsprache? Warum kleine Scriptsprache? Diskettendistri?

Jasper
14-06-2003, 00:08
Original geschrieben von peschmae
naja, aber die Operationen sind ja nicht atomar - d.h. möglich ist damit auch

Prozess1 schaut: kein file vorhanden
Prozess2 schaut: kein file vorhanden
Prozess2 erstellt file
Prozess1 auch
Prozess1 beginnt zu schreiben
Prozess2 auch

-> chaos



hmm, seh ich anders. zum einen muss man nicht nachsehen, zum anderen funktioniert das ganze recht gut:

prozess 1 erstellt lockfile -> ok, prozess schreibt
prozess 2 erstellt lockfile -> fehler, prozess wartet

selbst wenn beide prozesse absolut zeitgleich das lockfile erstellen wollen, wird das ganze durch den VFS-layer wieder serialisiert.

-j

peschmae
14-06-2003, 08:05
Original geschrieben von fork

Warum Scriptsprache? Warum kleine Scriptsprache? Diskettendistri?

nun ja, ich möchte das gerne für ein Download - Script brauchen. Da es viele Dateien von verschiedenen Servern zum Downloaden sind, ist das mit Wget ein bisschen langsam, da nicht parallel.

Aber mitterweile hab ich n nettes (perl)-Tool gefunden (wget_worker), das ziemlich genau das macht...

Scriptsprache deshalb weil ich in Java daran gescheitert bin ;-) (am Download)

MfG Peschmä