是否可以在不以 root 身份运行的情况下赋予程序优先级?

是否可以在不以 root 身份运行的情况下赋予程序优先级?

我想给我在 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 身份运行的尝试。在 root 下运行是强烈地不鼓励这样做,因为任何错误(例如,定义 TMPDIR)或错误都可能导致操作系统文件系统发生灾难性损坏,使您的系统处于不可用状态。

您可以通过将 --allow-run-as-root 选项添加到 cmd 行来覆盖此保护。但是,我们重申强烈建议不要这样做 - 请自行承担风险。


基本上我想知道是否有一种方法可以在不给系统带来这样的风险的情况下给予程序优先级。预先感谢您的任何帮助。

答案1

您可以以非特权用户身份运行它,然后以 root 身份重新启动它:

$ 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

通过重新nicing确认进程所有者没有改变:

$ ps -fu steeldriver | grep [s]leep
steeldriver   8128  4353  0 14:54 pts/1    00:00:00 sleep 100

相关内容