我遇到的情况是我们的服务器正在杀死一个我不想被杀的进程。 我的理解是这种情况正在发生,因为内核过度使用内存,然后在实际内存不足时强制终止进程。 我的理解是,通过调整以下值,我可以影响内核关于在这种情况下杀死哪个进程的决定:
的/ 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':没有这样的文件或目录
我做错了什么?
答案 0 :(得分:3)
你正在echo
作为root
运行,但实际上你的shell试图在proc中写入,请查看此处以获得更多解释:
How do I use sudo to redirect output to a location I don't have permission to write to?
答案 1 :(得分:2)
试试这个:
sudo bash -c "echo '-15' | tee /proc/5641/oom_adj"
它将确保文件以root身份写入,因为bash
以root身份运行tee
。