如何使用其他名称启动流程?


12

基本上,我想动态地启动一些可能创建自己的子进程的进程,也想杀死我刚刚创建的一组特定进程。

我能想到的一种方法是用一个名称启动进程(以一个组来区分),然后使用pkill该名称杀死它们。

问题是如何以一个名称开始一个进程,以便我可以使用pkill该名称杀死它们?我也欢迎其他解决方案。


您是否在问如何以不同于通常使用的名称启动进程?还是您只是问如何从命令行启动进程?
Eliah Kagan 2012年

在Linux中,默认情况下,进程名称显示为其文件名。我不想使用其默认文件名作为其进程名,也不想每次运行时都更改文件名。因此,我想使用所需的特定名称启动进程,以便可以使用'pkill -f MyOwnName'立即杀死刚启动的名为MyOwnName的所有进程。
缓存

Answers:


12

您可以使用exec内置的shell:

bash -c "exec -a MyUniqueProcessName <command> &"

<command>替换当前的shell,不创建任何新进程,这就是为什么我要启动一个新的shell进行调用的原因exec

然后,您可以使用以下方法终止该过程:

pkill -f MyUniqueProcessName

您可以使用相同的名称启动多个进程,然后pkill -f <name>将其全部杀死。


您如何撤消bash -c "exec -a MyUniqueProcessName <command> &"
VNVN

1
@VNVN,你不能。如果已运行命令,则该命令已运行。要“撤消”它,您需要确切地知道它做了什么,并在可能的情况下手动撤消它。运行命令时没有Ctrl + Z。
terdon

+1。我的观察是:用于的名称exec -a name sleep 100在我执行时显示,ps -ef但在执行时不显示pstree -p
Trevor Boyd Smith,

它不适用于融合。->bash -c "exec -a mymeld123 meld &"
Eduardo Lucio

0

AMItac / Solaris代理商

我有一个音频转码工具这种情况。(运行3次),但只有一个名称。

我照做了。从Shell工具到bin目录,将其复制3次,然后给它一个新的名称。tc-1,tc-2,tc-3(这是一个很小的工具,因此不会占用太多Harddisc空间(对于胖二进制文件,您不应使用其他提到的方式)

因此,该过程以唯一的名称开始,并且可以使用该唯一的名称杀死,而没有杀死我想要继续的其他转码过程的危险。

另一个技巧可能会起作用。

添加#bash脚本Name.sh,使其可执行。在此处输入命令,然后启动bash脚本本身。在Centos上,它使用的是您执行的Bashscript名称,而不是bin名称本身。

希望能有帮助的人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.