Hallo Leute
Wie kann ich ein bestimmtes Konsole-Kommando (expl. ulimit -n, -u scheint für User zu funktionieren) für einen bestimmten User freigeben?
Dank und Gruss
d-oli
PS: OS = ReHat 9
Linux 15.070 Themen, 107.540 Beiträge
Warum sollte das nicht gehen?
[diogenes:klaus]~$ ulimit -a | grep files
open files 256
[diogenes:klaus]~$ ulimit - 1024
[diogenes:klaus]~$ ulimit -a | grep files
open files 1024
Geht. Was kommt denn bei dir?
Klaus
Kann es sein, dass du noch mehr willst? Das ist auf den Superuser beschraenkt, was ja auch Sinn macht. Es soll ja nicht jeder an dem System rumschrauben koennen.
Wenn du mehr willst, setze den Wert in der /etc/profile fest, z.B. auf 2048. Dann kann ein User das natuerlich bis zu diesem Wert setzen.
Klaus
> Wenn du mehr willst, setze den Wert in der /etc/profile fest, z.B.
> auf 2048. Dann kann ein User das natürlich bis zu diesem Wert
> setzen.
Das ist ja genau das Problem. Ich habe folgendes machen müssen (gemäß Installationsanleitung einer DB-SW):
if [ $USER == "dummy" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Das heißt, ich will diese Werte nur setzen, wenn der "dummy" User eingeloggt ist. Beim einloggen desselben (auf der Konsole) kommt der Fehler:
$su - dummy
Password:
-bash: ulimit: open files: cannot modify limit: operation not permitted
$
Unter root funktioniert das ganze natürlich. Wenn ich im Shell-Script $USER abfrage ist der wohl auch schon aktiv und dann kann "ulimit -n" nicht mehr ausgeführt werden. Hmmm ...
Ich frage mich, wieso das Userabhängig definiert sein soll?
mfg, d-oli
Ist das jetzt ein Tippfehler:
$USER == "dummy"
Oder beabsichtigst du etwas damit?
Klaus
Es ist ein Tippfehler ...
Siehe Posting von Heute 7h49 (oben ...)
mfg, d-oli
Ja, eben gesehen. Jetzt sag mir aber doch noch, wofuer du das brauchst. Ich bin mit 256 bis jetzt immer hingekommen.
Bye, Klaus
... um Oracle zu installieren ...
... dazu gibt einen installation Guide wo genau diese Zeile bash-Script abgebildet sind. Da steht auch, das /etc/profile damit zu ergänzen:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
... und weil "ulimit -n 65536" Probleme verursacht habe ich das Script so abgeändert:
# if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
# fi
mache ich ulimit -a bevor ich das Script laufen lasse erscheint:
open files (-n) 1024
max user processes (-u) unlimited
danach:
open files (-n) 65536
max user processes (-u) 16384
Dies gilt nun aber für alle User. Aber ich glaube nicht, dass ich jemals >16384 Prozesse auf einmal laufen haben werde. Kann das Probleme verursachen?
mfg, d-oli
Naja, das Problem dabei ist, dass die Speicher belegen. Wenn du genug drin hast, wird es kein Problem geben, ansonsten wird die Kiste nach dem Verbrach des Swap-Speichers anfangen, willkuerlich Jobs zu killen. Deshalb sollte man das Limit nicht zu hoch setzen.
Wenn das ein oeffentlicher Server ist, wo wirklich sehr viele drauf zugreifen, wird er aber wohl genug Speicher haben, gehe ich mal von aus. Und wenn es wenige User sind, werden soviele Prozesse wohl nicht anliegen.
Ich setze das eben nicht so hoch, weil es immer mal wild gewordene Programme geben kann, die dann eben das Limit ausschoepfen und wenn du das zu hoch setzt, wirst du eventuell Schwierigkeiten bekommen, diesen dann zu killen.
Bye, Klaus
Die Zeit wird zeigen, ob 1.5GB RAM und 2GB SWAP ausreichend sind.
Danke Klaus T, für die Hilfe.
mfg, d-oli
Ups … – Sorry – Tippfehler:
Es geht natürlich so …
if [ $USER = „oracle“ ];
und nicht …
if [ $USER == „oracle“ ];
d-oli
Hast du dir schon mal sudo angeschaut?
Damit kannst du einzelne kommandos für bestimmte User / Gruppen freigeben und dieses eine Kommando mit root-rechten laufen lassen
sudo ulimit...
Selbst die Passwortabfrage kann man verhindern. Ist glaube ich bei dir genau das richtige.
