如何终止 ping <dest> &

Vin*_*eet 10 command-line

命令

ping <dest> &
Run Code Online (Sandbox Code Playgroud)

导致 ping 进入后台。但是,它仍然将输出打印到终端。Ctrl-C 并没有阻止它,只是引入了一个新的提示。如何从终端停止它?

Rav*_*ina 24

首先进入fg您的ping命令正在运行的同一个终端(它将进程带到前台),然后按Ctrl+c停止进程。

在此处输入图片说明

  • @phillipsk 这是 GIF,这就是 GIF 的工作原理...... (3认同)

muc*_*lux 14

如果这是您唯一的后台工作,您可以使用kill %1. 如果不确定,您可以列出所有后台作业,jobs并使用kill %<n>ping 作业编号替换 n 的位置。

  • 此外,我发现 n 与运行命令时打印在方括号中的数字相匹配。 (4认同)

Dan*_*Dan 7

当您将进程发送到后台时,无论是使用ctrl-z还是&在命令的末尾,您都会获得以下格式的输出:[index] process-id. 如果将多个进程发送到后台,则索引每次都会不断增加。

例如:

$ sleep 100 &
[1] 41608
$ sleep 101 &
[2] 41609
$ sleep 102 &
[3] 41610
$ sleep 103 &
[4] 41611
$ sleep 104 &
[5] 41612
$ sleep 105 &
[6] 41613
$ sleep 106 &
[7] 41614
Run Code Online (Sandbox Code Playgroud)

为了停止特定的,您可以使用kill <process-id>或使用fg <index>后跟ctrl-c

使用先前输出的示例:

$ kill 41614
Run Code Online (Sandbox Code Playgroud)

或者

$ fg 7
sleep 106
^C
Run Code Online (Sandbox Code Playgroud)