我正在编写一个使用包含参数的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但找不到任何相关内容。
问题是我做错了什么?
答案 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。