Univention Bugzilla – Bug 27274
stop_udm_cli_server schlägt fehl
Last modified: 2012-07-20 15:24:21 CEST
In einem postist habe ich die Funktion stop_udm_cli_server verwendet. Allerdings lief danach manchmal noch ein cli-server. Das Grund scheint zu sein, dass die Shell hier versucht den shell-builtin kill zu verwenden, der mit der Option -SIGTERM nicht umgehen kann: kill all running univention-cli-server + echo Define variables Define variables + local pids signal=SIGTERM + echo Read pids Read pids + pgrep -f /usr/bin/python.* /usr/share/univention-directory-manager-tools/univention-cli-server + pids=4809 + echo Try to kill Try to kill + type kill kill is a shell builtin + which kill /bin/kill + kill -SIGTERM 4809 kill: 1: Illegal option -S + echo Finished Finished + set +x
Das ist korrigiert. ChangeLog-Eintrag wurde ergänzt
Das Kommando kill erwartet (nach POSIX) grundsätzlich eine Zahl als Argument und keinen symbolischen Namen. kill -15 1234 Die Ursache für den Bug war die Übergabe eines symbolischen Namens statt einer Zahl. Symbolische Namen sind in neueren Versionen der Unix shell aber durchaus erlaubt, wenn man die Option -s benutzt. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/kill.html kill -s TERM 1234 Die korrigierte Funktion stop_udm_cli_server im script shell/base.sh funktioniert auf meiner VM nun tatsächlich und man könnte es so lassen (dies ist mein erster Bug in der QA-Rolle und ich will mich nicht zu schnell unbeliebt machen). Es wäre aber besser, wenn wir nach Unix shell vorgehen und explizit mit -s arbeiten, anstatt uns darauf zu verlassen, dass die installierte Version von /bin/kill auch ohne -s symbolische Namen versteht.
(In reply to comment #2) > Das Kommando kill erwartet (nach POSIX) grundsätzlich eine Zahl als Argument > und keinen symbolischen Namen. Wie wir gerade besprochen haben ist das verwendete Kommando POSIX kompatibel und ist somit korrekt: -signal_name Equivalent to -s signal_name.
Andreas hat recht, es ist in diesem script besser explizit /bin/kill aufzurufen, um sicherzugehen, dass auch tatsächlich das kill-Kommando von Unix benutzt wird und nicht eine andere kill-Funktionalität, die erst zur Laufzeit des scripts aufgelöst wird. Auch die Verwendung von "kill -SIGTERM" ist dann im Kontext unseres aktuell vorhandenen /bin/kill eindeutig und sicher. Je ein Eintrag im debian/changelog und im Handbuch changelog sind vorhanden.
UCS 3.0-2 has been released: http://forum.univention.de/viewtopic.php?f=54&t=1905 If this error occurs again, please use "Clone This Bug".