Seb*_*ski 7 bash cron process nice
Java 进程正在杀死我的计算机(Intel i3,8GB RAM)。它接管了整个 CPU,系统开始挂起。我试图改变niceness
java 进程,但我必须一直控制它,这并不总是可能的。因此,一开始我尝试构建一个命令来niceness
按名称更改进程。结束了这样的事情:
ps ax -o pid,comm | grep java | awk '{print $1}' | tr "\n" " " | renice -n 5 -p
Run Code Online (Sandbox Code Playgroud)
但它看起来不起作用。我不知道下一步要去哪里。Bash 脚本可能吗?每次都运行它cron
还是运行它?或者,还有更好的方法?watch
x
kos*_*kos 10
如果您只有一个java
实例在运行,只需:
renice -n 5 -p $(pgrep ^java$)
Run Code Online (Sandbox Code Playgroud)
$(pgrep ^java$)
:命令替换;bash
将其替换为pgrep ^java$
; pgrep ^java$
返回名称与正则表达式匹配的进程的 PID 列表,该列表^java$
与名称完全匹配的所有进程java
如果您有多个java
实例正在运行:
for p in $(pgrep ^java$); do renice -n 5 -p $p; done
Run Code Online (Sandbox Code Playgroud)
for p in $(pgrep ^java$); do renice -n 5 -p $p; done
: 几乎和上面一样;$(pgrep ^java$)
是命令替换;bash
将其替换为pgrep ^java$
; pgrep ^java$
返回名称与正则表达式匹配的进程的 PID 列表,该列表^java$
匹配名称恰好为 的所有进程java
;this 被扩展到for
循环中,它将输出的新行分配给pgrep ^java$
变量$p
并renice -n 5 -p $p
在每次迭代中运行,直到pgrep ^java$
消耗了输出尝试这个:
pgrep java | xargs -n 1 echo renice -n 5 -p
Run Code Online (Sandbox Code Playgroud)
如果输出正常,则删除echo
.
归档时间: |
|
查看次数: |
4990 次 |
最近记录: |