找到要杀死的进程的 PID 使用:
pgrep <process command>
Run Code Online (Sandbox Code Playgroud)
然后我使用kill命令杀死返回的PID pgrep <process command>
kill <PID>
Run Code Online (Sandbox Code Playgroud)
这些命令可以合并为一个,以便可以杀死 PID 或由 返回的 PIDpgrep <process command>吗?或者是否有通过命令名称杀死多个进程的方法?
就像是 : kill(pgrep <name of process>)
传输间歇性地挂在我的 NAS 上。如果我发送 SIGTERM,它不会从进程列表中消失,并且<defunct>旁边会出现一个标签。如果我发送 SIGKILL,它仍然不会消失并且我无法终止父级,因为父级是init. 我可以摆脱该过程并重新启动传输的唯一方法是重新启动。
我意识到我能做的最好的事情就是尝试修复传输(我已经尝试过),但我是编译的新手,我想确保在我开始搞乱它之前我的种子已经完成。
我正在尝试设置一个 shell 脚本,以便它运行后台进程,当我Ctrlc使用 shell 脚本时,它会杀死孩子,然后退出。
我设法想出的最好的就是这个。似乎kill 0 -INT在等待发生之前也杀死了脚本,所以 shell 脚本在孩子们完成之前就死了。
关于如何让这个 shell 脚本在发送后等待孩子们死亡的任何想法INT?
#!/bin/bash
trap 'killall' INT
killall() {
echo "**** Shutting down... ****"
kill 0 -INT
wait # Why doesn't this wait??
echo DONE
}
process1 &
process2 &
process3 &
cat # wait forever
Run Code Online (Sandbox Code Playgroud) 我在我的 ec2 实例上发现了恶意软件,它不断挖掘比特币并使用我的实例处理能力。我成功识别了该进程,但无法删除并终止它。
我运行了这个命令
watch "ps aux | sort -nrk 3,3 | head -n 5"
它显示了在我的实例上运行的前五个进程,从中我发现有一个进程名称“ bashd ”,它消耗了 30% 的 cpu。过程是
bashd -a cryptonight -o stratum+tcp://get.bi-chi.com:3333 -u 47EAoaBc5TWDZKVaAYvQ7Y4ZfoJMFathAR882gabJ43wHEfxEp81vfJ3J3j6FQGJxJNQTAwvmJYS2Ei8dbkKcwfPFst8FhG -p x
Run Code Online (Sandbox Code Playgroud)
我使用kill -9 process_id命令终止了这个进程。5 秒后,该过程再次开始。
我从人们那里收到了很多混合的信息,并且想知道您使用的内容是否真的没有太大区别。
kill 'x'
killall 'x'
kill -9 'x'
Run Code Online (Sandbox Code Playgroud)
这些是到目前为止我被告知要使用的一些选项,但有些人说 kill -9 只是矫枉过正,kill 本身不起作用,等等。
有没有人对在终止进程(及其状态)的最标准情况下应该使用哪一个有任何建议?
[编辑] 我正在寻找当您想停止流程执行时要使用的内容,以便您可以从一开始就运行一个新流程
我正在使用 Debian 伸展 (systemd)。我在前台使用运行 rsyslog 守护进程
/usr/sbin/rsyslogd -n
,我做了一个Ctrl+Z来停止它。进程状态更改为Tl(已停止、已线程)。我向进程发出了多个命令,进程的状态是相同的:. 一旦我做了一个,它就死了。我有3个问题。kill -15 <pid>Tlfg
SIGSTOP-ed 进程没有响应SIGTERM?为什么内核让它保持在相同的状态?SIGCONT信号的那一刻就被杀死了?SIGTERM信号,那么在进程恢复之前它会保存在哪里?Mac OS X 上是否有替代命令pgrep和pkill命令,还是我应该使用其他可用的命令为它们创建别名?
我有时会在xargs一夜之间运行很长时间的工作,并且在早上发现xargs中间某个地方死了真的很烦人,例如因为在一个特殊情况下的分段错误,就像今晚发生的那样。
即使一个xargs孩子被杀死,它也不会处理任何更多的输入:
控制台 1:
[09:35:48] % seq 40 | xargs -i --max-procs=4 bash -c 'sleep 10; date +"%H:%M:%S {}";'
xargs: bash: terminated by signal 15
09:35:58 3
09:35:58 4
09:35:58 2
<Exit with code 125>
Run Code Online (Sandbox Code Playgroud)
控制台 2:
[09:35:54] kill 5601
Run Code Online (Sandbox Code Playgroud)
xargs一旦子进程终止并继续处理,我能否以某种方式阻止停止处理更多输入?
在man page,它说:
kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
pid... Specify the list of processes that kill should signal. Each pid can be one of five things:
0 All processes in the current process group are signaled
Run Code Online (Sandbox Code Playgroud)
我在 bash 中尝试这样:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
Run Code Online (Sandbox Code Playgroud)
这里0用作pid. 据我了解,kill 0将杀死当前进程中的所有进程,其中包括pid15247 …
我正在尝试编写一个脚本来终止在特定端口上运行的服务。这是我的脚本:
a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a
Run Code Online (Sandbox Code Playgroud)
这是一个java程序。这个脚本有时有效,但大多数时候神秘地失败。
有没有其他方法可以杀死在端口上运行的服务?我的端口是4990.