GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welche Auswirkung hat STRG + Z auf eine Unix\Linux-Anwendung?

Ein "Hintergrundjob" ist nur einer, der nicht mit dem Benutzer interagiert - er kontrolliert nicht das tty und erledigt einfach seine Sache (im Allgemeinen im Hintergrund). Ein Vordergrundjob ist das Gegenteil, er hält die Kontrolle über das tty, um mit dem Benutzer zu interagieren.

Strg-Z unterbricht den letzten Vordergrundprozess (den letzten Prozess, der mit dem tty interagiert) (es sei denn, dieser Prozess unternimmt Schritte, um die Unterbrechung zu ignorieren, wie es Shells normalerweise tun). Dies bringt Sie im Allgemeinen zurück zu Ihrer Shell, von der aus Sie im Allgemeinen den Befehl bg eingeben können um den gerade angehaltenen Prozess in den Hintergrund zu verschieben (und ihn weiter laufen zu lassen) oder fg um es wieder in den Vordergrund zu bringen.


Durch Drücken von Strg+Z wird der TSTP gesendet Signal an Ihren Prozess. Dadurch wird die Ausführung angehalten (der Kernel plant keine weitere CPU-Zeit für den Prozess ein) und der Prozess wartet auf ein CONT, um die Verarbeitung fortzusetzen.

Sie können dies über kill -TSTP emulieren/replizieren und kill -CONT (seit kill wird trotz des Namens ein nominiertes Signal an Ihren Prozess senden!)

Die Shell hat die Funktionalität, den Prozess in den Hintergrund zu stellen, aber dies ist eine Beziehung zwischen der Shell und dem Prozess. Der Prozess selbst hat nicht wirklich das Konzept von „Hintergrund“ oder „Vordergrund“.

Weitere Informationen finden Sie hier.


Betrachten Sie diesen Befehl, der ca. 4,5 Sekunden auf meinem Laptop:

echo 2^10000000 | bc -lq | wc -c

Wenn Sie Strg drücken +Z , wird die Berechnung ausgesetzt. Sie haben die Möglichkeit, die Berechnung im Vordergrund mit fg fortzusetzen , oder setzen Sie es mit bg im Hintergrund fort . Letzteres entspricht mehr oder weniger der Ausführung von:

echo 2^10000000 | bc -lq | wc -c &

Linux
  1. Was bewirkt, dass verschiedene Signale gesendet werden?

  2. Was macht Strg+v in Vim?

  3. Was ist ein unterbrechungsfreier Prozess?

  4. Welcher Prozess verwendet alle meine Festplatten-E / A

  5. Was tun, wenn Strg + C einen Prozess nicht beenden kann?

Was zeigt diese Prozessstatistik an?

SIGTERM vs. SIGKILL:Was ist der Unterschied?

DevOps neu denken:Worum geht es?

Was ist ein gestoppter Prozess unter Linux?

Welche Ports werden von einer Anwendung verwendet?

Was ist ein Befehl, um die Priorität des Prozesses in Linux zu finden?