Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Verständnisfrage zu Autostart mit Bash

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
HPF-84E
Member
Member
Beiträge: 61
Registriert: 8. Dez 2018, 20:45

Verständnisfrage zu Autostart mit Bash

Beitrag von HPF-84E »

Hallo,

eine kleine Frage hätte ich mal zu dem Autostart und der Bash.

Erklärung: Ich benutze Terminator als Multiplexer. Dort lasse ich Programme automatisch starten mit der Integrierten Funktion mit z.B.

Code: Alles auswählen

screenfetch;bash
man könnte auch fsh oder zsh nehmen oder was auch immer man für eine Shell man nimmt.

Diesen Terminator packe ich in den Autostart mit folgenden Befehl:

Code: Alles auswählen

sh -c "terminator & disown ; sleep 2 ; wmctrl -r jag@jag:~ -t 3 ;exit"
Ich lasse Ihn mit Hilfe der Bash starten, warte 2 Sekunden und lasse das Fenster auf die Arbeitsfläche 4 verschieben.

Frage(n):
  • [1]Auf welcher Ebene arbeitet dort die Shell und kann ich dort abfragen?
  • [2]Den Befehl von der Shell abzutrennen ist Sinnvoll aber brauche ich unbedingt ein [code)exit[/code] um die Instanz zu schliessen.
  • [3]Mir geht es auch um die Systembelastung. Ich weiß das die Shell viele Prozesse gleichzeitig abarbeiten kann und muss.
Ich hoffe ich habe mich halbwegs verständlich Ausgedrückt. Danke für Interesse.

Nachtrag: Wenn ich nicht den Prozess vom Terminal abtrennen würde und nicht mit exit beenden würde wo könnte ich den Prozess mit nachfragen/überprüfen?
Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3204
Registriert: 25. Aug 2004, 02:13

Re: Verständnisfrage zu Autostart mit Bash

Beitrag von robi »

die Shell startet hier nur terminator, macht anschließend 2 Sekunden Pause, und anschließend, führt sie wmctrl aus (was immer dieses macht) und sobald das fertig ist, beendet sich die Shell, ob dort ein exit steht oder nicht.
terminator läuft weiter, der Prozess ist beim Starten mit disown von dieser Shell getrennt worden.
Ich bin mir jetzt nicht ganz sicher was disown hier in diesem Fall anders macht als nohub, aber in irgend einer Prozessliste (außer der von systemd an die du im Nomalfall nicht rankommst) wirst du den terminator Prozess nicht mehr wiederfinden wenn die Shell sich beendet hat, und der Shellprozess ist schon nach Beendigung von wmctl weg
Um die Systembelastung des Shell Prozesses musst du dir hier überhaupt keine Gedanken machen, ehr um alles andere

was willst du hier "nachfragen" oder "überprüfen" ? , du kanns sehen ob der läuft zB mit ps, pstree, top ..... und entsperchenden Optionen.

robi
Benutzeravatar
HPF-84E
Member
Member
Beiträge: 61
Registriert: 8. Dez 2018, 20:45

Re: Verständnisfrage zu Autostart mit Bash

Beitrag von HPF-84E »

Hi,

was ich in Beziehung (in den Backround legen) und

Code: Alles auswählen

disown
(abkoppeln) gelesen
hatte waren immer Beispiele mit ssh-Verbindungen. Das hatte mich wohl verwirrt.
Für mich als normaler User ist das wohl uninteressant.

Ein zum Schluss ist ja ein SIGTERM welches ich ja nicht manuell ausführen
kann ohne es in die Befehlszeile einzugeben.

Wenn ich also kein oder

Code: Alles auswählen

sigterm
mit einbaue wartet der Prozess/Shell auf weitere Eingaben
bis ich mich abmelde (Ausnahme ssh) oder den PC herunterfahre. Deshalb frage ich mich ob
an dieser Stelle also ohne SIGTERM die Shell wirklich beendet wird?

Wie gesagt ist das für viele Uninteressant da die Shell hunderte von Prozesse gleichzeitig bearbeitet.
Es kam bei mir nur die Frage auf ob das ohne ein exit ein wirklich sauberes arbeiten ist.

Sorry, wenn ich mit sowas geringfügigen Nerve. :D
Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3204
Registriert: 25. Aug 2004, 02:13

Re: Verständnisfrage zu Autostart mit Bash

Beitrag von robi »

HPF-84E hat geschrieben: 28. Mär 2021, 11:14 Wenn ich also kein oder

Code: Alles auswählen

sigterm
mit einbaue wartet der Prozess/Shell auf weitere Eingaben
bis ich mich abmelde (Ausnahme ssh) oder den PC herunterfahre. Deshalb frage ich mich ob
an dieser Stelle also ohne SIGTERM die Shell wirklich beendet wird?
HIer liegst du komplett falsch, du hast hier die Shell ohne "-i" gestartet und damit nicht interaktiv gestartet, so das sie auf Eingaben wartet oder bis sie irgenwie beendet wird.
und hast ihr mit "-c" einen String gegeben den sie als Kommandos abarbeiten soll. Wenn sie damit fertig ist, beendet sich sich automatisch, wenn sie nicht noch auf irgend etwas aus dieser Kommandosabarbeitung warten muss. Das exit dort am Ende dieser Befehlskette ist also nicht notwenig zu Beenden. Es darf dort stehen, du kannst damit auch gerne einen definierten Returnwert zurückgeben aber es ist in deinem Fall unnötig, da die Shell sich in deinem Fall nach Beendigung des wmctrl sowieso beendet, dort ist Ende der Befehlereihenfolge die du zum ausführen mitgegeben hast.
Damit stirbt der Vaterprozess des terminator-Prozesses, da er jedoch aus der Prozesslist der Bash mittels disown entfernt wurde, läuft er weiter und bekommt die ID 1 (systemd) als Vaterprozess zugeordenet, weil Vaterlose Porzesse gibt es nicht, (abgesehen vom Urprozess der vom Kernel beim Kernelstart erzeugt wird)
HPF-84E hat geschrieben: 28. Mär 2021, 11:14 Wie gesagt ist das für viele Uninteressant da die Shell hunderte von Prozesse gleichzeitig bearbeitet.
Es kam bei mir nur die Frage auf ob das ohne ein exit ein wirklich sauberes arbeiten ist.
Was immer deine Vorstellung von der Shell ist, auch hier liegst du irgendwie falsch, "Die Shell" so wie du sie beschreibst gibt es nicht. es gibt wohl ständig hunderte von Shellprozessen die in Linux zu jeder Zeit vorhanden sind, oftmals jedoch nur im Hintergrund schafend und auf irgende was wartent, oder aber zB bei der Scriptarbeitung die alle ihrerseits innerhalb kürzesester Zeit wieder hunderte Shell-Supprozesse und andere Prozesse starten und oftmal ebensoschnell wieder verschwunden sind wie sie gekommen sind. Die Shell arbeitet auf alles Fälle keine Prozesse ab, sondern Shellkomandos, was auch das Starten von anderen Prozessen/Tool/Applikationen/... beinhaltet und einschließt. Und Gleichzeitig? ....aber lassen wir das. entweder sich nicht so viele Gedanken über die Hintergründe machen, oder vielleicht nochmal in den Unix-Linux-Grundlagen reinlesen, es scheint ein bischen, als kommen deine Vorstellungen und Erfahrungen aus einer anderen Betriebssystem Welt.

robi
Benutzeravatar
HPF-84E
Member
Member
Beiträge: 61
Registriert: 8. Dez 2018, 20:45

Re: Verständnisfrage zu Autostart mit Bash

Beitrag von HPF-84E »

Hallo,
ich habe hier nur ein „Linux Essentials" Buch zu liegen welches alles nur Grundsätzlich,
kurz und knapp erklärt ohne weiterführende Hilfe. Daher meine Frage.
robi hat geschrieben: 28. Mär 2021, 21:00 du hast hier die Shell ohne "-i" gestartet und damit nicht interaktiv gestartet, so das sie auf Eingaben wartet oder bis sie irgenwie beendet wird.
und hast ihr mit "-c" einen String gegeben den sie als Kommandos abarbeiten soll. Wenn sie damit fertig ist, beendet sich sich automatisch, wenn sie nicht noch auf irgend etwas aus dieser Kommandosabarbeitung warten muss.
Damit hast du mich in die richtige Richtung geschubst. Ich hatte irgendwie im Kopf das halt alles
mit einen Exit beendet werden muss. So wie man es beim Skripting auch macht um es halt zu beenden
(Wenn alles fertig dann auch Ende).

Ich glaube ich muss mir doch mal ein gedrucktes Nachschlagewerk kaufen. Bei Suchen im I-net
landet man auch oft auf nicht zielführenden Beiträgen. Ich glaube Links zu Printmedien sind oft genug erwähnt.

Danke Dir für deine Mühe.
Antworten