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

[solved] sleep - Fehlermeldung

OsunSeyi

Hacker
Hi
Hier läuft folgendes Script:

testscript:
Code:
#!/bin/sh
   cat ~/beispiel.txt  >> ~/log.txt'
   echo -n ''            > ~/beispiel.txt
   sleep 1

testscript
Vereinfacht.
nach einer Weile meldet sleep: "too many open files in system"
Kann mir das jemand erklären ?
gruß, tom

ps: der Grund für diese Vorgehensweise ist, weil es mir nicht gelingt vom lokalen Server aus auf Dateien ausserhalb von /srv/www/htdocs zu schreiben (umgekehrt aber schon)
 
A

Anonymous

Gast
OsunSeyi schrieb:
Hier läuft folgendes Script:

testscript:
Code:
#!/bin/sh
   cat ~/beispiel.txt  >> ~/log.txt'
   echo -n ''            > ~/beispiel.txt
   sleep 1

testscript

Sehe ich das richtig, ist da eine Rekursion ohne Abbruchbedingung drin? testscript im script ruft sich selbst auf? Dann bräuchtest du dich wirklich nicht wundern, wenn nach einiger Zeit regelmäßig Fehlermeldungen auftreten.

robi
 

spoensche

Moderator
Teammitglied
OsunSeyi schrieb:
ps: der Grund für diese Vorgehensweise ist, weil es mir nicht gelingt vom lokalen Server aus auf Dateien ausserhalb von /srv/www/htdocs zu schreiben (umgekehrt aber schon)

Ist doch wohl logisch warum das vom Server aus nicht geht. Stell dir mal vor der Webserver könnte ausser auf seinen DocumentRoot auf sämtliche Dateien im System zugreifen, dann hast du die perfekte Sicherheitslücke.

OsunSeyi schrieb:
nach einer Weile meldet sleep: "too many open files in system"

Dann ist die maximale Anzahl der offenen Dateien überschritten, also eine Abbruchbedingung wäre von Vorteil.

EDIT:
Mit der Abbruchbedingung war Robi schneller.;)
 

regexer

Advanced Hacker
Ich verstehe das script dahingehend, dass du eine Textdatei synchronisieren willst. Da gibt es bessere Möglichkeiten. Zum Beispiel könnte man "tail -f" nehmen. Weiteres siehe man-page.

Hardlinks könnte man auch probieren, dass würde ich jedoch mit Vorsicht genießen. Außerdem geht das sowieso nur, wenn die betroffenen Dateien im selben Filesystem liegen...
 
OP
OsunSeyi

OsunSeyi

Hacker
Es geht darum, beim Aufruf einer Adresse aus einer Datenbank (mittels php) zu veranlassen, daß bestimmte Informationen 'nach draussen geschleusst' werden.
Per Hardlink geht das schon (hab ich probiert), aber es geht wohl auch mit :
Code:
	if [ ! -s /srv/www/htdocs/beispiel.txt ] ; then
		exit 0
	fi
-s spricht auch auf leere Dateien an.
Danke für die Hilfe!
tom
 
OP
OsunSeyi

OsunSeyi

Hacker
...gut geeignet sollte auch der Befehl 'watch' sein.
Hab ich aber noch nicht probiert.
Code:
EXAMPLES
       To watch for mail, you might do

              watch -n 60 from

       To watch the contents of a directory change, you could use

              watch -d ls -l

       If you're only interested in files owned by user joe, you might use

              watch -d 'ls -l | fgrep joe'

       To see the effects of quoting, try these out

              watch echo $$

              watch echo '$$'

              watch echo "'"'$$'"'"

       You can watch for your administrator to install the latest kernel with

              watch uname -r

       (Just kidding.)
 
Oben