Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit maximal geöffneten Files
Hallo,
ich beobachte gerade etwas für mich unerklärliches. Und zwar möchte ich das Limit für offene Files hochsetzen. Dies mach ich im limits.conf mit den Einträgen:
...
...
#@student - maxlogins 4
root soft nofile 81920
root hard nofile 81920
myuser soft nofile 81920
myuser hard nofile 81920
# End of file
nach nem Neustart wird das Limit dann auch übernommen - aber nur teilweise.
Bin ich auf der Konsole und gebe den Befehl "ulimit -n" ein, so erhalte ich den korrekten Wert 81920. Führe ich aber ein Script aus, in welchem das ulimit herausgelesen wird:
EDITH meint:
wenn ich das Script ausführe, funktionierts. Wenn ich das Script jedoch im Cron laufen lasse, gehts ned:
#!/bin/bash
maxOpen=`ulimit -n`
echo $maxOpen
..erhalte ich den default Wert 1024
was ist falsch? normalerweise kann man doch einfach den output eines Befehles in eine Variable schreiben so wie ich es mache!?
OS: Suse 9.x
mfg 223
Was ist da los?
es gibt doch keine Unterschiede zwischen manuellen Eingaben in der Shell und einem Ausführen von den selben Angaben in einem Script über die selbe Shell (beides mal mit /bin/bash) !?!?
:confused:
ich hab da etwas verwechselt:
Und zwar ist es so, dass wenn ich das Scipt manuell starte, dass es dann funktioniert. Wenn ich das Script als Crontab des Users (crontab -e) einrichte, dann erhält mein Script den Default "max open Files"-Wert.
Es wird also irgendwie unterschieden zwischen manuellem und automatischem starten von Script. Ich peils nicht warum das so ist und wie ich das beheben könnte.
Die Umgebung von Cron ist nicht identisch mit der Login-Umgebung des Users - da diverse Config-Files dort nicht ausgelesen werden.
evt. musst Du also die limits.conf sourcen...
Die Umgebung von Cron ist nicht identisch mit der Login-Umgebung des Users - da diverse Config-Files dort nicht ausgelesen werden.
evt. musst Du also die limits.conf sourcen...
:eek: ...achso ist das...
ehm was meinst du mit sourcen? :)
mfg 223
zeromancer1972
26.09.07, 13:07
man source ;)
Danke für die schnellen Antworten!
Ist mir jedoch leider immer noch etwas unklar:
man source ;)
- man source öffnet die bash maual page
- auf dieser bash manpage seh ich den eintrag source. er ist folgendermassen beschrieben:
source filename [arguments]
Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from
filename. If filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file
searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in
PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied,
they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status
is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot
be read.
sprich: source [filename] [arguments]
filename und arguments aufgelöst ergiebt in meinem Fall:
# source /etc/security/limits.conf (ohne Argumente)
Dies erzeugt jedoch einen Fehler:
-bash: root: command not found
-bash: root: command not found
-bash: myuser: command not found
-bash: myuser: command not found
Ich weiss jetzt nicht weiter, da die Infos in der manpage relativ kurz gehalten sind. Ich brauche mehr Infos zum Befehl source. Hat mir vlt. jemand einen Link zum Thema? Oder kann mir sonst einen Tip geben?
THX!
mfg 223
oops, die limits.conf ist wohl nicht so, wie ich dachte - die muss wohl durch ein externes Programm interpretiert werden...
ok, ich hab die Lösung!
das Problem ist, dass die System-Config bei einem normalen Users Crontab nicht geladen wird. Nachträglich laden hab ich nicht geschafft. Beim User root, werden Systemkonfigurationen jedoch geladen, auch im Crontab. Desshalb habe ich nun den Cron für User root eingerichtet und mein Script so angepasst, dass alle Befehle trotzdem von meinem gewünschten User aus ausgeführt werden. Dies geht mit "su [user] -c" vor dem eigentlichen Befehl.
Danke allen für die Hilfe!
mfg
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.