linux:~ # killall
Usage: killall [OPTION]... [--] NAME...
killall -l, --list
killall -V, --version
-e,--exact require exact match for very long names
-I,--ignore-case case insensitive process name match
-g,--process-group kill process group instead of process
-i,--interactive ask for confirmation before killing
-l,--list list all known signal names
-q,--quiet don't print complaints
-r,--regexp interpret NAME as an extended regular expression
-s,--signal SIGNAL send this signal instead of SIGTERM
-u,--user USER kill only process(es) running as USER
-v,--verbose report if the signal was successfully sent
-V,--version display version information
-w,--wait wait for processes to die
6条答案
按热度按时间oogrdqng1#
最近启动的后台命令的进程ID在shell参数
$!
中可用:(请查看您的shell实现
kill
的文档,以获得正确的格式。)yebdmbv42#
使用**--signal**选项尝试
killall
,您可以在其中指定进程的名称。通过在shell会话中启动
md5sum
进行验证:在另一个会话中,运行:
在
md5sum
会话中产生以下结果:pvcm50d13#
请确认是否要停止命令或在后台运行(在命令后添加'&')?
如果您的应用程序预计将启动暂停命令后,那么为什么不启动您的命令(被暂停)在该应用程序本身。
这有助于:
sleep 5 & kill -SIGSTOP $!
在上面,已经在后台执行了sleep(demo命令)5秒。接下来发送kill以使用$!获得的PID停止它。
fkaflof64#
Demo & kludge使用timeout(由于某种原因,timeout将'0 s'持续时间解释为“永远运行”),在输出任何内容之前停止yes:
输出(至STDERR):
重新启动它:
输出:
为使用v8.12或更早版本coreutils(2011年之前)的用户提供的技术,其中timeout缺少 * 次秒间隔 *。需要等待一秒。
将命令字符串 Package 在shell调用中,前面有一个1 s的等待-所以timeout等待1秒,同时,命令字符串也等待1秒。总等待时间1秒:
输出和以前一样,
fg
也一样。如果在睡眠前等待1秒太多,它可以在后台运行,如下所示:
输出(过程编号将有所不同):
一秒钟后,输出将与前面两个timeout示例相同。
btxsgosb5#
假设你正在使用相同的命令,在ps输出中找到命令名,你可以在一个终端中启动它然后打开一个新的终端
检索命令名称后:
pidof需要确切的命令名才能找到pid。
然后恢复它:
如果命令名不是常量,但有一个模式,您可以创建一个类似这样的脚本,您可以将其命名为pof.sh:
这个脚本的一个缺点是,如果很多行都匹配模式,它将返回所有的pid,如果这是一个问题,你可以把输出放在一个数组中,然后从那里继续。
5anewei66#
简单地回答标题。
暂停正在运行的命令,例如FFmpeg:
或者,更简单:
使用
-17
或-18
-读取here以了解差异。我更喜欢使用
pgrep
,因为它似乎比pidof
更可靠:或者,创建您自己的“命令”:
因此,暂停/恢复变得更简单:
还有
pkill
命令:但是,它不如将
kill
与pgrep
或pid
组合使用可靠。它不太可靠的原因是:
pkill
命令将以包含 ffmpeg word的任何进程为目标,而不仅仅是ffmpeg
进程。