[Eisfair] rc.local exit 0

Kay Martinen kay at martinen.de
Mo Jan 6 14:12:17 CET 2020


Am 06.01.2020 um 13:40 schrieb Marcus Röckrath:
> 
> Kay Martinen wrote:
> 
>>>> Ein Skelet mit einer case start) stop) esac war schon da.
>>>> Wo muss genau "exit 0" hin. Gaanz ans Ende?
>>>
>>> Ja ans Ende.
>>
>> War bei mir auch nicht drin in der rc.local. Ausgeführt wird sie wohl.
>> Allerdings erinnere ich mich dunkel das es beim Starten recht lange
>> dauerte bis er am Ende den login prompt zeigt.
>>
>> Da vermute ich das liegt/lag am fehlenden 'exit 0' das init dort noch so
>> lange wartet, oder?
>>
>> Werde beim nächsten reboot mal drauf achten.
> 
> Ich bin, auch nach einigen Internet-Recherchen, nicht der Meinung, dass exit
> 0 zwingend ist.

Zwingend sicher nicht. Es hängt wohl vom Aufrufer des scripts ab was 
dann die Wirkung sein mag. 'exit 0' sagt diesem ja nur 'beendet ohne 
Fehler' und was beim schlichten EOF passiert ist m.E. auch nur eine 
Frage wer es aufrief, mit welchem environment und shell.

> Ich fand, dass es guter Usus sei, mit exit 0 oder einem anderen Wert zu
> signalisieren, ob das Skript erfolgreich war oder nicht. Es gäbe
> Init-Realisierungen, die selbsttätig anhand des Rückgabewertes ein FAIl
> oder OK ausgeben. 

Ich denke es ist ebenso guter usus das ein script das von einem anderen 
prozess aufgerufen wurde (hier: init) bei seinem ende automatisch einen 
rückkehr-code erzeugt, und dieser an den aufrufer zurück gegeben wird.

> IMHO bei eisfair nicht und wenn man so was möchte, werden
> die gesourcten functions dafür verwendet.
> Ein immer vorhandenes "exit 0" würde somit dem Initsystem, falls es das
> auswertet, immer ein OK vorgaukeln, unabhängig von dem, was wirklich los
> war.

Okay, wenn ein einzelnes exit 0 am ende stünde, ja. Aber man kann 
natürlich stattdessen in der case-esac struktur bei start und bei stop 
ein 'exit 0' unterbringen und ggf. auch im script fehler abfangen und 
dann z.b. mit 'exit 1' zurück melden. Das sollte doch in jedem falle gehen.

> Eine Zeitverzögerung aufgrund fehlendem "exit 0" würde ich eher
> ausschliessen.

K.A. aber ich denke mir das init einfach generell auf die beendigung 
eines scripts wartet. Aber wenn es stimmt was du oben sagst das der 
eisfair-init weder ok noch fail automatisch erkennt dann bleibt ja nur 
die wahl etwas zu warten nachdem das script beendet wurde, oder?
Ich meine auch nur einige wenige Sekunden und ich bin nicht mal sicher 
ob es von rc.local kam. Aber das wird doch wohl als letztes aufgerufen. 
Dessen ausgaben kommen bei mir zumindest direkt über dem logon (und 
motd/issue)

Kay

-- 
Sent via SN (Eisfair-1)


Mehr Informationen über die Mailingliste Eisfair