Linux:设置进程优先级和动态加载库
Linux: setting process priority AND dynamically loading libraries
我有一个 linux 应用程序,它使用修改后的 rpath
(在安装期间设置)加载 *.so 库。它还需要 运行 具有实时优先级。
要获得实时优先级,它会这样做:
sched_param sched;
sched.sched_priority = 70;
sched_setscheduler(getpid(), SCHED_FIFO, &sched);
然而 sched_setscheduler
is a privilaged method, protected by the CAP_SYS_NICE
capability. Therefore, to get realtime priority without running as root, I add setcap
我的 postinst
:
setcap cap_sys_nice+ep /path/to/myapp
但是,linux decides 如果程序具有额外的功能,则不应允许它们从 rpath
加载库。
我可以设置自己的优先级 和 加载 rpath 库吗?
注意:我更愿意在应用程序或 postinst
中执行此操作。我想避免将部署脚本作为启动应用程序的唯一方式。我知道 sudo chrt -f -p 70 $!
可以通过脚本完成。
我有两个不涉及修改的解决方案libc
。这两种解决方案都要求我们将对 sched_setscheduler()
的调用替换为直接启动另一个进程的调用。
使用以下行将文件安装到 /etc/sudoers.d/
:
%users ALL=NOPASSWD: /usr/bin/chrt
然后从我们的应用程序启动 sudo
作为参数为 chrt -f -p X Y
的进程,其中 X
是配置的优先级,Y
是 getpid()
的结果.
创建自定义 chrt
:
cp $(which chrt) $(DESTDIR)/bin/chrt
sudo setcap cap_sys_nice+ep $(DESTDIR)/bin/chrt
sudo chmod 755 $(DESTDIR)/bin/chrt
然后从我们的应用程序启动 chrt
作为带有参数 -f -p X Y
的进程
不确定哪个解决方案更好。请注意,这是有效嵌入的(或至少是专门构建的),所以我不太担心安全风险。
我有一个 linux 应用程序,它使用修改后的 rpath
(在安装期间设置)加载 *.so 库。它还需要 运行 具有实时优先级。
要获得实时优先级,它会这样做:
sched_param sched;
sched.sched_priority = 70;
sched_setscheduler(getpid(), SCHED_FIFO, &sched);
然而 sched_setscheduler
is a privilaged method, protected by the CAP_SYS_NICE
capability. Therefore, to get realtime priority without running as root, I add setcap
我的 postinst
:
setcap cap_sys_nice+ep /path/to/myapp
但是,linux decides 如果程序具有额外的功能,则不应允许它们从 rpath
加载库。
我可以设置自己的优先级 和 加载 rpath 库吗?
注意:我更愿意在应用程序或 postinst
中执行此操作。我想避免将部署脚本作为启动应用程序的唯一方式。我知道 sudo chrt -f -p 70 $!
可以通过脚本完成。
我有两个不涉及修改的解决方案libc
。这两种解决方案都要求我们将对 sched_setscheduler()
的调用替换为直接启动另一个进程的调用。
使用以下行将文件安装到
/etc/sudoers.d/
:%users ALL=NOPASSWD: /usr/bin/chrt
然后从我们的应用程序启动
sudo
作为参数为chrt -f -p X Y
的进程,其中X
是配置的优先级,Y
是getpid()
的结果.创建自定义
chrt
:cp $(which chrt) $(DESTDIR)/bin/chrt sudo setcap cap_sys_nice+ep $(DESTDIR)/bin/chrt sudo chmod 755 $(DESTDIR)/bin/chrt
然后从我们的应用程序启动
chrt
作为带有参数-f -p X Y
的进程
不确定哪个解决方案更好。请注意,这是有效嵌入的(或至少是专门构建的),所以我不太担心安全风险。