ユーザーがシステムで特定のプロセスを実行して、負のnice値を指定してほしい。この特定のプログラムはminecraftサーバーであり、サーバーの制御はコマンドラインに依存しているため、プロセスを単純にバックグラウンドにフォークすることはできません。
私の現在のbashスクリプトは次のようになります(重要な部分):
sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui
sleep
単にの実行を遅らせrenice
ます。renice
それ自体がps
、ユーザー自身のIDを使用してJavaプロセスをチェックするために使用します。さまざまなユーザーの下でJavaが生成される他のインスタンスが存在する可能性がありますが、minecraftサーバーは独自のユーザーminecraftで実行されます。
サーバーを起動するたびにパスワードを入力したくないのは明らかです。
以下からの/ etc / sudoersファイル:
minecraft ALL = NOPASSWD: /etc/renice
これを行うよりエレガントな方法はありますか?NOPASSWDと組み合わせて、単に使用することnice
はオプションではありません。オプションは大きなセキュリティ問題になります。sudo nice bash
nice
機能しないようです-
。両方を設定し、を使用する必要がありました。