PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit maximal geöffneten Files



223
25.09.07, 16:55
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

223
26.09.07, 10:16
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:

223
26.09.07, 11:24
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.

marce
26.09.07, 11:38
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...

223
26.09.07, 12:51
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

marce
26.09.07, 12:54
einen Bash-Befehl.

zeromancer1972
26.09.07, 13:07
man source ;)

223
26.09.07, 13:38
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

marce
26.09.07, 13:45
oops, die limits.conf ist wohl nicht so, wie ich dachte - die muss wohl durch ein externes Programm interpretiert werden...

223
01.10.07, 16:20
*grml


*hochschieb*

223
05.10.07, 07:32
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