バックグラウンドプロセスの適切さ

バックグラウンドプロセスの適切さ

バックグラウンド プロセスには異なる nice が指定されていますか? デフォルトの 0 がないことに気付きました。優先度が低いため、これが問題になっている可能性があります。この動作を変更する方法を誰か知っていますか? 以下の開始スクリプトを使用して Java を実行していますが、niceそのスクリプト内では何も呼び出されません。

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

答え1

このスクリプトを実行しているユーザーは、対話型kshシェル セッションからバックグラウンドでスクリプトを起動しています。

シェルkshには と呼ばれるシェルオプションがありbgnice、これはksh93オンになっています。デフォルトでこれにより、シェルはゼロ以外の niceness 値 (ジョブが開始されたシェルより 4 高い値) でバックグラウンド ジョブを開始します。

これはマニュアルからの抜粋ですksh93:

bgnice すべてのバックグラウンド ジョブは低い優先度で実行されます。これがデフォルトのモードです。

このオプションをオフにするには、

set +o bgnice

シェルのいくつかのバリエーションksh(例えばpdksh、およびおそらく mksh)オプションは引き続き利用可能ですが、ないデフォルトで設定されます。

関連情報