バックグラウンド プロセスには異なる 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
)オプションは引き続き利用可能ですが、ないデフォルトで設定されます。