获取在同一命令行中启动的进程的 PID
Get the PID of a process launched in the same command line
我想在 bash 中启动一个 hello.sh
脚本,它可以做很多事情(写入文件、在屏幕上打印),但我想获取其 PID 并将其转储到文件中,但我想在同一个命令行中执行此操作,因为我可以对同一文件进行不同的处理(启动了许多 hello.sh
)。
所以,我想要类似(伪代码)的东西:sh hello.sh > get_pid > pid_to_log
。谢谢
你可以做到这一点
./myscript.sh & echo $! >> log.pid
然后您将把您的PID 存储在一个文件中。但也许您还需要存储日期和时间。
./sleep.sh & echo $! `date` >> log.pid
例子
$ more sleep.sh
sleep 10
$ ./sleep.sh & echo $! `date` >> log.pid
[1] 9588
$ ./sleep.sh & echo $! `date` >> log.pid
[2] 9640
$ ./sleep.sh & echo $! `date` >> log.pid
[3] 9646
$ cat log.pid
9588 Wed Jul 8 14:03:19 CEST 2020
9640 Wed Jul 8 14:03:22 CEST 2020
9646 Wed Jul 8 14:03:23 CEST 2020
我想在 bash 中启动一个 hello.sh
脚本,它可以做很多事情(写入文件、在屏幕上打印),但我想获取其 PID 并将其转储到文件中,但我想在同一个命令行中执行此操作,因为我可以对同一文件进行不同的处理(启动了许多 hello.sh
)。
所以,我想要类似(伪代码)的东西:sh hello.sh > get_pid > pid_to_log
。谢谢
你可以做到这一点
./myscript.sh & echo $! >> log.pid
然后您将把您的PID 存储在一个文件中。但也许您还需要存储日期和时间。
./sleep.sh & echo $! `date` >> log.pid
例子
$ more sleep.sh
sleep 10
$ ./sleep.sh & echo $! `date` >> log.pid
[1] 9588
$ ./sleep.sh & echo $! `date` >> log.pid
[2] 9640
$ ./sleep.sh & echo $! `date` >> log.pid
[3] 9646
$ cat log.pid
9588 Wed Jul 8 14:03:19 CEST 2020
9640 Wed Jul 8 14:03:22 CEST 2020
9646 Wed Jul 8 14:03:23 CEST 2020