如何获取远程Linux bash脚本中执行的程序的PID

Bah*_*mut 6 bash process ssh shell-script

我在 Mac 计算机上通过 ssh 访问 Linux 计算机来运行模拟。我目前正在并行运行多个命令(我将它们放在后台 & 中),当它们完成时,我提取感兴趣的文件,然后删除所有命令输出并重做它。

我想知道是否可以使用 PID 检查这些任务是否完成,以便自动提取所需的文件并再次启动完全相同的命令。我在这里发布一条消息,以了解如何获取通过 ssh -c 执行的命令的 PID,这不是我完成的(因为我在远程 Linux 中)。

我尝试了how-to-get-pid-of-just-started-process中所示的解决方案来获取PID,但都没有$! ssh -c 和 jobs -p 都没有给我正确的 PID。我想知道它是否不起作用,因为我正在远程访问(htop 中出现的命令是 ssh -c ...)或者我只是做得很糟糕。

这是我的第一个 bash 脚本:

#!/bin/bash

./createFiles.sh $1 # create the needed $1 folders

for i in $(seq 1 $1)
do
    cd $i
    myCommand &
    cd ..
done
Run Code Online (Sandbox Code Playgroud)

当这个完成后,我使用:

#!/bin/bash

for i in $(seq 1 $1)
do
    cd $i
    cp output/file.txt ../file_$2_$i.txt # $2 is the number of the run
    cd ..
done

./deleteFiles.sh $2 # delete the needed $1 folders to start anew
Run Code Online (Sandbox Code Playgroud)

然后我将这两个循环循环 5 次。我想知道是否可以自动循环 5 次而不需要我站在电脑前。

如果你们中的任何人有任何想法,那就太好了:)

PS:我希望说清楚,英语不是我的母语嗨嗨

Ole*_*nge 6

您正在构建 GNU Parallel :)

--transfer --return --cleanup 正在做您想做的事情。

阅读第 8 章: https: //zenodo.org/record/1146014