获取文件创建的PID

Dra*_*scu 6 bash shell-script pid

我正在编写一个 bash 脚本,该脚本创建 5 个扩展名为“.P”的文件,并向其中写入一行“某物”。“P”代表一个数字,它是创建文件的进程的 PID。你怎么能这样做?我正在创建我的文件并像这样写入:echo "something" > file_name

use*_*ser 7

如果您想知道当前正在运行的 bash 会话的 PID(很可能是运行您的 shell 脚本的会话,而不是其他任何会话),您可以使用$$或${BASHPID}. 它们相似但又略有不同;引用 GNU bash 4.2 手册页,“外壳变量”部分:

BASHPID

扩展到当前 bash 进程的进程 ID。这与$$某些情况下不同,例如不需要重新初始化 bash 的子 shell。

您也可能会发现${PPID}有帮助;它保存当前 bash 会话的父进程的进程 ID。如果你想更进一步,你将不得不编写一些代码来遍历进程树,这几乎肯定是依赖于操作系统的。

试着echo "something" > file_name.$$在你的shell为例。如果您正在做任何严肃的事情,请始终引用任何涉及您自己未设置为已知安全值的环境变量的内容。

如果您想要的是最初创建文件的进程的 PID,如标题所示,我怀疑这是可能的(尽管这将取决于您正在运行的操作系统)。在一般情况下,它不会是一条有用的信息来存储,因为 PID 既可以重复使用,又通常或多或少是随机的。在繁忙的多用户系统,他们为所有意图和目的将是随机的任何给定的用户。