我在服务器上运行了一个R控制台,这个过程花费的时间比我预期的要长得多。因此,我试图通过ctrl+z关闭它,它没有工作。最后我关闭了终点站。但是当我检查top命令时,这个过程仍然存在。我用的是杀死,但不会扼杀这个过程。最上面的命令输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27448 zhenyang 20 0 20.133g 0.020t 3.840g R 100.0 21.3 72:00.06 R
我查了一下网站,有人说可能是ctrl+z把进程放在后台,但是fg命
我在Linux上工作,我在Linux终端上执行了for循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt是一个包含我在vim编辑器中一个接一个打开的大量文件条目的文件。现在,我必须跳过打开中间的其他文件。(即,我必须中断for循环)。有什么建议如何获得运行for循环的PID吗?然后杀掉同样的人。提前谢谢。
我想知道UNIX信号的安全性。
SIGKILL会扼杀这个过程。那么,当非根用户的进程向根用户的进程发送信号时会发生什么呢?这个过程还在执行信号处理程序吗?
我遵循公认的答案(gollum's),输入man capabilites,我发现了许多关于Linux内核的内容。来自man capabilities:
NAME
capabilities - overview of Linux capabilities
DESCRIPTION
For the purpose of performing permission checks, traditional UNIX
im
因此,可以使用timeout来设置进程/命令的最终时限,就像提到的和一样。例如,timeout 300 sleep 1000将在300秒后返回提示,而不是1000秒。
但是,在进程仍在运行时,是否有任何方法可以动态地修改此限制?所以这就是我要找的。
at time 0 : timeout 300 python long_run.py
at time 250 : <some way to extend the timeout limit by another 300 minutes or so>
我试过两种方法,但没能成功。
通过GDB
我试图使用gdb附加到timeout进程。它
Ubuntu 16.04
我习惯于使用这个命令行来杀死任何进程匹配的命令。
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
贝查克不太喜欢它,并建议
root@singa /home # shellcheck run
In run line 4:
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i"