回答
变量'$$'包含PID。
使用$BASHPID
或$$
更多信息,请参见manual,包括两者之间的差异。
您可以使用$$
变量。
PID存储在$$
。例如:kill -9 $$
将终止它从中调用的shell实例。
'kill -9'(带有“-9”标志)被认为是是有害的,只有在绝对必要时才能使用)。 – 2015-09-15 15:01:34
它被认为是“危险的”,因为这个过程没有机会对信号作出反应(并且可能在自身之后进行清理)。做'kill -9 $$'只会做1件事。它杀死了**当前的shell进程**。如果你在shell会话中做了一些你不想写入'.bash_history'的东西,这很有用。例如:'docker run -e PASSWORD = hunter2 ircbot' – 2017-10-19 04:05:26
除了通过Jefromi引用的Advanced Bash Scripting Guide给出的例子,这些例子表明管道如何创建子shell:
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
你能解释一下“<<<”是什么意思?谢谢。 – 2014-03-29 20:27:14
它将一个字符串重定向到循环中(或读取“stdin”的任何内容)。该字符串被称为“这里字符串”。 – 2014-03-29 21:29:57
请注意,$$和BASHPID并不总是同样的事情 - 手动提到这里有一个更具体的例子:http:区别可能非常重要,因为许多bash构造都在子壳中运行。 – Cascabel 2010-03-22 16:00:07
@Jefromi - 指出。这是我与手册相关的原因之一。 – tvanfosson 2010-03-22 16:14:42
需要注意的是'BASHPID'是BASH 4的新增功能。如果您使用的是BASH 3.x,则必须使用'$$' – 2017-10-19 03:59:22