我怎样才能在linux上编辑proc / pid / oom_adj进程

我有一个情况,我们的服务器正在杀死一个我不想被杀死的进程。 我的理解是,这是因为内核过度使用内存,然后在内存耗尽时被迫终止进程。 我的理解是,通过调整以下值,我可以影响内核关于在这种情况下杀死哪个进程的决定:

的/ proc / [PID] / oom_adj

本文解释了所有这些:
http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html

但是,当我以ubuntu用户身份试用这个命令时,我得到了Permission denied错误:

echo -15> / proc / 5641 / oom_adj
-bash:/ proc / 5641 / oom_adj:权限被拒绝

sudo echo -15> / proc / 5641 / oom_adj
给出了相同的错误我的理解是,这是因为shell没有以root身份执行“>”命令。

但是,我熟悉的解决方法是给“没有这样的文件或目录”错误。

sudo bash -c'echo -15> / proc / 5641 / oom_adj'
-bash:/ proc / 5641 / oom_adj':没有这样的文件或目录

sudo -s'echo -15> / proc / 5641 / oom_adj'
-bash:/ proc / 5641 / oom_adj':没有这样的文件或目录

我在做什么不正确?

你正在运行echo作为root但实际上是你的shell试图写在proc中,在这里寻找更多的解释: 如何使用sudo将输出重定向到我没有写权限的位置?

尝试这个:

 sudo bash -c "echo '-15' | tee /proc/5641/oom_adj" 

它将确保该文件被写入为root,因为bash以root身份运行。

尝试在数字值周围使用双引号:

 sudo echo "-15"> /proc/pid/oom_adj