作业控制:如何使用作业 ID 终止 sudo 作业

S1l*_*0rm 9 bash

如果我运行作业,sudo我不能运行kill %1它们(不允许操作)。我的第一个想法是sudo kill %1改用,但这当然也不起作用,因为它不会使用 bash builtin kill。有什么技巧可以使这项工作?

// 我知道如何通过它的 PID 杀死一个进程。问题具体是关于如何使用作业 ID 来终止 sudo 作业。

Par*_*hot 6

sudo kill "$(jobs -p %1)"
Run Code Online (Sandbox Code Playgroud)

注意:从技术上讲,这里不需要双引号,因为我们知道 的输出jobs将是一个 PID,因此在$IFS. 然而,引用变量始终是一个好习惯。为了确保您始终如一地使用高质量的编码实践,它们必须是根深蒂固的习惯。$(...)用于反引号,因为反引号是旧的做事方式,它们不太明显。$(...)相对来说是新热。在这种情况下,新的热点已经有几十年的历史了。

  • 我希望有一个优雅的解决方案来解决这个问题。显然,这并不优雅。试图为此找到一个优雅的解决方案有什么问题?我认为必须为此内置一些东西,但似乎我必须为此定义一个别名。 (2认同)