ulimit unter Lion

ralfsy

ralfsy

Aktives Mitglied
Thread Starter
Dabei seit
22.04.2006
Beiträge
254
Reaktionspunkte
11
Hi,

ich habe hier eine Effekt, den ich nicht verstehe. Für die Installtion von DB2 unter Lion müsste ich vorübergehen den Befehl "ulimit" ausser Gefecht setzen.

mac:~ db2inst1$ which ulimit
/usr/bin/ulimit


also habe ich mittels:


sudo mv /usr/bin/ulimit /usr/bin/ulimit.orig
sudo touch /usr/bin/ulimit && chmod +x /usr/bin/ulimit


ein Dummy-File angelegt.

Jetzt sollte eigentlich bei "ulimit -a" kein Ergebnis kommen .. aber

mac:~ db2inst1$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited


Na ja .. mit "find / -name uname" die Platte abgegrast, ob evtl. in einem anderen Pfad noch ein "uname" vorhanden ist ... ist aber keines mehr vorhanden. Im nächsten Schritt habe ich das uname.orig und mein neu erzeugtes uname gelöscht. Das bringt aber auch nichts. Der Befehl "uname" bringt immer noch ein Ergebnis.

Das Ganze passiert in allen Shells (bash, ksh, zsh). Wie kann "uname" noch funktionieren, wenn das Binary gelöscht wurde ... habe auch mal Rebootet, aber das hat auch nix gebracht.

Irgendwie muss man doch ulimit loswerden können.
 
eventuell noch im platten cache statt neu geladen zu werden?
 
mach einfach mal das terminal zu und wieder auf...
mit PRAM hat das nichts zu tun...
 
mach einfach mal das terminal zu und wieder auf...
mit PRAM hat das nichts zu tun...

Hat leider nix gebracht. Scheinbar ist ulimit fest in die Shell eingebaut

mac:~ root# strings /bin/bash | grep ulimit
ulimit
ulimit [-SHacdfilmnpqstuvx] [limit]


Hab mir das mal unter Linux angeschaut .. da ist es noch deutlicher (siehe ulimit_builtin)

root@sv0:~$ strings /bin/bash |grep ulimit
ulimit_doc
ulimit_builtin
ulimit
ulimit [-SHacdefilmnpqrstuvx] [limit]
../../bash/builtins/../../bash/builtins/ulimit.def


Muss mal schauen, ob es eine Möglichkeit gibt, die bash für OS X ohne dieses Feature zu compilieren.

Danke für die Unterstützung!
 
Um die eingebauten Commands zu "umgehen", musst Du den Pfad mitgeben: /usr/bin/ulimit -a
Da brauchst Du doch keine bash neukompilieren.
 
naja, der installer von DB2 ruft es wohl auf.
da sollte er wohl mal eher den installer etwas bearbeiten.
ist doch bestimmt auch nur ein shell script...
 

@oneOeight und olivetti .. ich antworte auf euch hier gleich mit.

Die Installation hatte soweit funktioniert. Deinen Link hatte ich schon gefunden, weil ich am Anfang schon auf dieses Problem gestossen bin. Jetzt schlägt aber das Erzeugen einer Datenbank fehl, weil in einem (oder mehreren) Binaries, die dabei gestartet werden, der Befehl "ulimit" aufgerufen wird.

Leider hat Apple in Lion irgendwie Murks eingebaut. Man kann mit "ulimit" nicht mehr alle Einstellungen vornehmen, die man auf Snow Leopard noch verändern konnte. Bin nicht der Einzige, der damit Probleme hat. Bei einer Oracle-Installation unter Lion fällt man genauso auf die Schnauze:

http://superuser.com/questions/313297/os-x-lion-installing-oracle-10g-standard-edition

Gleiches bei Apache:

https://discussions.apple.com/message/13333699#13333699

Mich interessiert, welche Parameter die Binaries setzen oder abfragen, also wollte ich /usr/bin/ulimit durch ein Script erseten, dass alle Parameter in ein File schreibt. Da könnte ich dann sehen, was das eigentliche Problem ist.

-----------------
for i in "$*"
do
echo "$i" >> /tmp/ulimit.out
done
----------------


Wenn man dieses Script (nachdem man es nach /usr/bin/ulimit kopiert hat) z.B. so aufruft, bekommt man so was zu sehen

mac:tmp db2inst1$ /usr/bin/ulimit -n 1024

mac:tmp db2inst1$ cat /tmp/ulimit.out
-n 1024


Aber das bringt nichts, weil ulimit wirklich eine Funktion ist, die fest in die Shell eingebaut ist .. habe gestern noch das hier gefunden:

mac:tmp db2inst1$ type ulimit
ulimit is a shell builtin


Das Programm /usr/bin/ulimit wird also nicht aufgerufen, sondern die Shell selbst liefert das.

Jetzt habe ich nur noch die Chance, eine Shell selbst zusammenzuhäkeln, die kein ulimit als BuildIn hat ... oder ich muss auf Snow Leopard downgraden. Wäre aber eine unangenehme Sache, weil ich einen neuen 2011er i5 Mac mini verwende und der offiziell nur mit Lion funktioniert. Über einen Workaround würde es trotzdem gehen.

https://discussions.apple.com/message/15733107#15733107

Irgendwie wird mir die Idee mit Snow Leopard immer sympathischer. Das Problem mit ulimit ist nur eines von vielen ... Lion ist ... na ja ... will jetzt keinen Jammerthread über die miesen Seiten von Lion machen ... gibt ja schon genügen andere hier im Forum ;)

Unter SL könnte ich wieder alles betreiben, was ich will ... Oracle, DB2 WebSphere, Tomcat ... und mein NAS könnte ich auch wieder anbinden.
 
alias ulimit=/usr/bin/ulimit

sollte gehen
 
alias ulimit=/usr/bin/ulimit

sollte gehen

Extradickes Danke für diesen Tip. Das hat funktioniert.

Es scheitert daran, dass "open files" zu klein ist:

mac:instance db2inst1$ /usr/bin/ulimit -n
256


Der Wert, der aber vorausgesetzt wird, ist 32767.
 
Hab die entsprechenden Anpassungen in der /etc/sysctl.conf und beim meinen DB2-User gemacht und Rebooted. Das Ergebnis:

mac:~ db2inst$ db2start
SQL1063N DB2START processing was successful.
<---- Das Ding läuft!

Alles in Butter ... Danke an alle .. insbesondere Gondomir, der den entscheidenden Hack geliefert hat.
 
Zurück
Oben Unten