/ / Ausf├╝hren eines Prozesses im Hintergrund - Linux, Bash

Ausf├╝hren eines Prozesses im Hintergrund - Linux, Bash

Ich habe 2 Fragen zum Starten der Prozesse im Hintergrund:

  1. Warum startet ein Prozess im Hintergrund so:

    ./my_program &

    (my_program habe nat├╝rlich exe erlaubnis gesetzt) ÔÇőÔÇőmache das nicht Bash, um die Eingabeaufforderung wie alle anderen Befehle zu drucken? Es gerade hat eine leere neue Zeile mit blinkendem Cursor hinterlassen.

  2. Wenn ich das n├Ąchste Mal einen neuen Prozess im Hintergrund starte, zeigt bash etw an. so wie das:

    ./my_program & [30] 1439 [27] Done ./my_program [28] Done ./my_program [29] Done ./my_program

    Bedeutet dies, dass ab ein weiterer extra prozess im hintergrund macht das system dazu Informationen zu den Vorschauprozessen anzeigen ([27], [28], [29] Zeilen), solange die aktuell gestartete) ([30] Linie)?

Antworten:

0 f├╝r Antwort Ôäľ 1
  1. Dies sollte nicht passieren. Wenn Sie einen Befehl im Hintergrund ausf├╝hren, druckt bash normalerweise nur die Auftragsnummer und die PID (siehe unten) und kehrt dann zu einer Eingabeaufforderung zur├╝ck.

    Der einzige Grund, den ich kenne, f├╝hrt zu BashIn dieser Situation erhalten Sie eine neue Zeile, wenn Ihr Befehl nicht vorhanden ist, da er nach dem Drucken von PS1 irgendwie die entsprechende Fehlermeldung ausgibt:

    $ nonexistant_command &
    [1] 13856
    $
    nonexistant_command: command not found
    <empty line with blinking cursor here>
    

    Unabh├Ąngig von der Ursache sollte durch Dr├╝cken der Eingabetaste in dieser leeren Zeile eine neue Zeile mit der ├╝blichen Eingabeaufforderung gedruckt werden (und m├Âglicherweise die Meldung, dass der gerade erzeugte Auftrag beendet wurde; siehe unten).

  2. Die zus├Ątzliche Ausgabe, die Sie sehen, informiert Sie ├╝ber aktuelle Hintergrundjobs:

    Zun├Ąchst wird die aktuelle Auftragsnummer eines neu erstellten Hintergrundprozesses zusammen mit der PID wie folgt angezeigt:

    $ some_command &
    [1] 1234
    

    Dies bedeutet, dass der Befehl some_command wird jetzt mit der pid 1234 als job 1 ausgef├╝hrt.

    Sobald ein Hintergrundjob beendet ist, benachrichtigt bashWenn Sie das n├Ąchste Mal eine Eingabeaufforderung drucken (sei es, weil Sie einen anderen Hintergrundprozess gestartet, einen Befehl im Vordergrund ausgef├╝hrt oder einfach die Eingabetaste mit einer leeren Befehlszeile gedr├╝ckt haben), drucken Sie die folgende Meldung:

    [1]  Done                    some_command
    

    Dies bedeutet, dass der Job mit der Nummer 1 lief some_command ist jetzt fertig.

    Um herauszufinden, welche Hintergrundjobs Bash aktuell verfolgt, k├Ânnen Sie die jobs eingebaut wie folgt:

    $ jobs
    [1]  Running                 some_command &
    [2]  Running                 some_other_command &
    

    Um einen Job in den Vordergrund zu stellen, k├Ânnen Sie verwenden fg:

    $ fg 2
    some_other_command
    

    Weitere Informationen hierzu erhalten Sie unter help jobs