获取命令 PID 并发送到另一个

获取命令 PID 并发送到另一个

我想知道是否可以从终端执行命令,并且在命令启动后立即将其 PID 发送到另一个要监视的命令。

我需要做这样的事,

dd if=/path/of/file of=/path/of/destination

然后我需要使用 来监视它的执行pidstat,但是pidstat需要一个 pid,我不知道如何让一个将 pid 发送给另一个。

我需要监控磁盘使用情况、内存使用情况、CPU 使用情况和经过的时间。有谁知道一种方法可以做到这一点?

答案1

在bash(可能还有其他shell)中,您可以使用shell变量以编程方式捕获最后一个后台进程的PID $!,即应该可以执行类似的操作

dd if=/path/of/file of=/path/of/destination & pidstat -p $!

这个类似的askubuntu问题

答案2

您可以通过在命令末尾添加 & 来完成此操作。

dd if=/path/of/file of=/path/of/destination &

当你执行上面的命令时,它会给你一个pid,你可以使用pid来监控。

测试

cat infinite.sh
#!/bin/bash
while :
do
        echo "Press [CTRL+C] to stop.."
        sleep 1
done

现在,在第一个终端中,我运行上述命令,如下所示。

-bash-3.2$ ./s.sh &
[1] 25666
-bash-3.2$ Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..

现在,我可以打开第二个终端并用来kill -9 25666停止此过程。在您的情况下,您可以打开第二个终端以dd使用pid您在第一个终端中获得的命令来监视命令。

相关内容