获取脚本的pid在shell中运行 - $!没有给任何东西

时间:2017-10-10 04:06:10

标签: bash

我正在编写一个使用包含参数的nohup运行程序的脚本,因此我将命令包装到shell命令中。 我试图获得该计划的pid,但遇到了困难。 这就是我想要运行的:

nohup bash -c '../command --dir /mnt/raid/test/test.txt  "https://www.google.com/" > temp.txt 2>&1 &'; APP_PID=$! | {
            #APP_PID=$!
            echo "the pid is ${APP_PID}"
}

此脚本的结果显示如下的空pid:

the pid is

我尝试了很多变种,并搜索了Stack Overflow但找不到任何相关内容。

问题是我做错了什么?

1 个答案:

答案 0 :(得分:1)

正在创建后台进程作为shell的大孩子(bash -c),并且您无法从外壳获取大孩子的PID。你可以这样做:

nohup bash -c '../command --dir /mnt/raid/test/test.txt  "https://www.google.com/" > temp.txt 2>&1'& APP_PID=$! && {
            echo "the pid is ${APP_PID}"
}

在这里,nohup在后​​台运行,你得到它的PID。