如何列出脚本中分离的进程?

Posted

技术标签:

【中文标题】如何列出脚本中分离的进程?【英文标题】:How to list processes detached in a script? 【发布时间】:2014-01-15 11:01:06 【问题描述】:

我有:

$ cat ./test
#!/bin/bash

gulp dev &

然后运行它:

$ ./test
...

(.. 按回车键获取命令提示符) 脚本中的命令启动node 进程。但我在后台进程中没有:

$ jobs -p

打印空列表。因此,目标是能够列出/杀死(多个)在单个脚本中启动和分离的进程。怎么做?

【问题讨论】:

【参考方案1】:

您的交互式 shell 只管理它启动的作业。当您将脚本作为命令运行时,后台进程由子 shell 启动,而不是原始 shell。

您需要 source 脚本,以便它可以由您的交互式 shell 运行:

source ./test

【讨论】:

太好了,它有效!一个相关的问题: alias seskill='kill $(jobs -p)' 不起作用(而是打印 kill 使用情况)。如何治愈? $(...) 在子shell中运行,因此无法列出当前shell的作业。 那么是否可以创建一个快捷方式来终止所有会话的后台进程? 这个问题unix.stackexchange.com/questions/43527/… 说你的命令应该有效。 您的别名对我有用。如果我没有后台作业,我只会收到使用消息。

以上是关于如何列出脚本中分离的进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Go 中列出所有匹配的进程? [关闭]

在 Python 中分析子进程 Popen 调用

如何在 JPA 中分离关联对象

linux下如何从FIT镜像(*.itb)中分离出内核根文件系统和设备树?

DDL 和 DML 脚本的分离 - Flyway

如何列出正在运行的屏幕会话?