Linuxで実行しているプログラムに他のプログラムよりも高い優先順位を与えたいと思います。 sudoアクセス権があり、sudoとNiceコマンドを試してみました。具体的には、次のコマンドを含むRUN.shというbashスクリプトファイルを実行しました。
悪くない --10 nohup mpirun -np 1 ${bin}/pw.x < Cu8.30nc.crystal.in > Cu8.30nc.crystal.out
だから私はsudo RUN.shと入力しましたが、mpirunは私がrootとして実行していることを検出したと言いましたが、これは非常に危険です。エラーメッセージは次のとおりです。
mpirunがrootとして実行しようとしたことを検出しました。ルートで実行するのは強くエラー(TMPDIR定義など)またはエラーはオペレーティングシステムのファイルシステムに致命的な破損を引き起こし、システムが利用できなくなる可能性があるため、この方法を使用しないことをお勧めします。
cmd 行に --allow-run-as-root オプションを追加することで、この保護を上書きできます。しかし、私たちはそれをしないことを強くお勧めすることを強調します。その際に発生するリスクは、完全にお客様の責任です。
基本的に、システムにそのようなリスクを招くことなくプログラムに優先順位を与える方法があるかどうかを知りたいです。助けてくれてありがとう。
答え1
権限のないユーザーとして実行し、ルートとして再起動できます。
$ sleep 100 &
[1] 8128
$ ps -fu steeldriver | grep [s]leep
steeldriver 8128 4353 0 14:54 pts/1 00:00:00 sleep 100
$ sudo renice -10 8128
8128 (process ID) old priority 0, new priority -10
次の手順を実行して、プロセス所有者が変更されていないことを確認します。
$ ps -fu steeldriver | grep [s]leep
steeldriver 8128 4353 0 14:54 pts/1 00:00:00 sleep 100