Haben Hintergrundprozesse unterschiedliche Nice-Werte? Mir ist aufgefallen, dass der Standardwert 0 nicht der ist. Das könnte ein Problem sein, weil es eine geringere Priorität hat. Weiß jemand, wie man dieses Verhalten ändert? Ich führe Java über das folgende Startskript aus und nein, nice
in diesem Skript wird es nicht aufgerufen.
nohup ./start.sh &
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 5330 12759 1 0 84 4 - 3283 - ? 00:00:00 start.sh
0 S 5330 12772 12759 1 84 4 - 1462473 - ? 00:19:12 java
Antwort1
Der Benutzer, der dieses Skript ausführt, startet es im Hintergrund aus einer interaktiven ksh
Shell-Sitzung.
Die ksh
Shell hat eine Shell-Option namens bgnice
, die in ksh93
ist aufstandardmäßig, was dazu führt, dass die Shell Hintergrundjobs mit einem von Null verschiedenen Niceness-Wert startet (er wird 4 höher sein als der der Shell, von der aus der Job gestartet wird).
Das steht aus dem ksh93
Handbuch:
bgnice
Alle Hintergrundjobs werden mit niedrigerer Priorität ausgeführt. Dies ist der Standardmodus.
Um diese Option auszuschalten, verwenden Sie
set +o bgnice
In einigen Varianten der ksh
Schale (zB pdksh
undmöglicherweise mksh
), ist die Option noch verfügbar, abernichtstandardmäßig eingestellt.