标签: kill

无法从其 PID 中终止 gedit 进程

这是命令序列,gedit启动,但不能从其进程 ID 中终止

$ gedit&
$ t=$!
$ echo $t
4824
$ kill $t
bash: kill: (4824) - No such process
Run Code Online (Sandbox Code Playgroud)

它适用于一个sleep过程,例如

sleep 999&
[1] 4881
$ t=$!
$ echo $t
4881
$ kill $t
$ ps -p $t
[1]   Terminated              sleep 999
Run Code Online (Sandbox Code Playgroud)

有什么不同?如何gedit终止进程?

shell process kill gedit background-process

1
推荐指数
1
解决办法
2891
查看次数

自杀shell脚本

我正在尝试一个简单的测试来从脚本内部杀死脚本。它似乎不起作用。

function testKill
{
  PID=$$
  kill $PID
  echo  hello!
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个函数时,

[....]$ testKill
hello!
Run Code Online (Sandbox Code Playgroud)

它显然不会终止进程。如何在发送 echo 命令之前使进程终止?

当我将这一切移到外部脚本中时,如果我直接从命令行调用脚本,它会正确终止。但是,如果我在 .bash_profile 中创建一个函数并从该函数中调用该脚本,则该脚本不会被终止,而是会打印出来。如何将其集成到我的 .bash_profile 中?

这是在更复杂的脚本中使用的最小工作示例。

shell kill shell-script

1
推荐指数
1
解决办法
2740
查看次数

如何在顶部杀死一个进程?

不像 htop - top 对我来说更难,我想知道如何杀死 top 中的任何进程?在此先感谢我的 Stackoverflow 朋友!

process kill top

1
推荐指数
1
解决办法
4050
查看次数

如何向多个进程发送SIGINT

我正在尝试将 SIGINT 信号发送到多个进程,我认为这是正确的:

kill -2 <pid1> <pid2> ... <pid3>
Run Code Online (Sandbox Code Playgroud)

但我无法确认...

kill signals sigint

1
推荐指数
1
解决办法
1万
查看次数

bg 和 kill -CONT 之间的区别

我在前台运行一个应用程序,并通过点击CTRL+ Z(并停止)将其置于后台。为了让它重新运行,我运行了命令bg %1(这是它的 JOBSPEC)。

我想为什么不试着让它跑回来kill -CONT <PID>。所以,我跑去jobs -l获取它的 PID,并将这个 pid 与 kill 和 CONT 信号一起使用。

但是,该程序没有再次上线!jobs -l在用 CONT 尝试 kill 后报告它正在运行,但它不是(因为它是灰色的)。

我使用该命令查看了应用程序 PID ps,发现了两个具有不同 PID(和 status Tl)的相同命令。

然后我查看了使用相同的东西pstree,发现它们都在父进程下。父进程与列出的进程不同,jobs -l因为我放在后台的进程似乎启动了另一个程序。另一个程序似乎创建了子进程。

我注意到的总结如下:

  • 使用kill将 CONT 发送到父进程使程序运行。

  • 父进程 PID 与 报告的不同jobs -l。换句话说,我应该向其发送 CONT 信号的进程与我发现使用jobs -l.

  • 向父进程发送 CONT 不会对子进程应用相同的信号。

  • 使用该命令bg使进程返回运行状态,将 CONT 信号发送到父进程的所有子进程。

我的结论正确吗?如果是这样,那么这意味着使用该命令bg可以节省向每个相关进程发送 CONT 的时间。这是正确的吗?

编辑我从命令行调用并放在后台的主要应用程序是git …

linux kill background-process

1
推荐指数
1
解决办法
1793
查看次数

有没有办法配置 Linux OOM Killer 来杀死父进程而不是子进程?

有没有办法配置 Linux OOM Killer 来杀死父进程而不是子进程?当子进程被杀死时,父进程继续以不良状态运行。我可以检测子进程是否被杀死,然后退出,但我想知道是否有办法告诉 OOM 杀手杀死父进程而不是牺牲子进程。

linux kill signals

1
推荐指数
1
解决办法
1734
查看次数

为什么按名称调用的命令在按完整路径调用时表现不同?

我想kill --verbose ...在 bash 脚本中使用,但出现错误kill: -verbose: invalid signal specification。这很奇怪,因为它在鱼中工作得很好。我的调查使我出现了这种奇怪的行为:

$ which kill
/usr/bin/kill
$ sleep 5 & kill --verbose $!
[1] 33730
bash: kill: -verbose: invalid signal specification
... wait for sleep to finish ... 
[1]+  Done                    sleep 5
$ sleep 5 & /usr/bin/kill --verbose $!
[1] 33964
sending signal 15 to pid 33964
[1]+  Terminated              sleep 5
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?为什么不kill识别--verbose标志,但是/usr/bin/killwhich kill==时可以识别/usr/bin/kill

bash kill

1
推荐指数
1
解决办法
25
查看次数

为什么 kill 没有文件参数而不是端口号?

如果我想根据其 tcp 端口号或其文件或命名的可执行文件停止程序,我可以运行类似kill -tcpPortNumber $1参数$1为 tcp 端口号或kill -filename $1参数为文件名的程序吗?背景是以下问题中的一个问题:

/sf/ask/810849371/

这个问题在实践中确实发生过,我认为用户 Bepetersn 有一个看起来像我的意思的解决方案。 sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

但是我想要实现的是,kill 程序可以将 tcp 端口号和/或文件名作为任何用户(包括 sudo)的系统范围参数。那么是否可以将系统范围内的参数添加到像 kill 这样的系统程序中,以便 tcp 端口号和/或文件名可以作为参数,并且这种更改对于包括 ubuntu sudo 在内的任何用户都是永久性的?

shell networking process kill

0
推荐指数
2
解决办法
194
查看次数

在一行中杀死一个进程

有时我需要通过终端快速结束一个进程,但只是输入ps -e | grep firefox然后一直终止是很乏味的。我想alias在我的 .bashrc 中创建一个并输入killfirefox

我想会做到,但我并不真正了解一切。

所以我知道要么ps -e | grep firefox | sudo awk '{print $1}'pgrep firefox将返回我需要杀死进程的firefox的pid。我认为这可以完成这项工作:

pgrep firefox | sudo awk '{kill $1}'但它不起作用。它什么也没说,Firefox 仍在运行。然后我尝试了pgrep firefox | sudo awk '{system(sudo kill $1)}'但后来它返回“sh:1:27762:未找到”。

为什么我的方法不行?怎么了?

process kill

0
推荐指数
1
解决办法
3680
查看次数

kill &lt;pid&gt; 和 kill -s TERM &lt;pid&gt; 之间的区别

kill <pid>和之间究竟有什么区别kill -s TERM <pid>。最初我认为该$TERM变量包含一个信号编号,但是当我回显 TERM 时,它给了我

$echo $TERM
xterm-256color
Run Code Online (Sandbox Code Playgroud)

linux shell kill signals

0
推荐指数
1
解决办法
182
查看次数