リモートLinux bashスクリプトで実行されているプログラムのPIDを取得する方法

リモートLinux bashスクリプトで実行されているプログラムのPIDを取得する方法

SSHを介してMacコンピュータからLinuxコンピュータにシミュレーションを実行しました。現在、複数のコマンドを並列に実行しており(バックグラウンドに配置)、操作が完了したら、関心のあるファイルを抽出してから、すべてのコマンド出力を削除して再実行します。

必要なファイルを自動的に抽出し、同じコマンドを再実行できるように、PIDを使用してこれらの操作が完了したことを確認できるかどうか疑問に思います。 ssh -cを介して実行されるコマンドのPIDを取得する方法を学ぶために、ここにメッセージを投稿します。これは私がしたことではありません(リモートLinuxにあるため)。

私はで示された解決策を試しました。起動したばかりのプロセスのPIDを取得する方法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

これが完了したら、次を使用します。

#!/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

その後、これら2つのループを5回繰り返しました。コンピュータの前に立たなくても自動的に5回繰り返すことができるのか気になりました。

誰もが良いアイデアを持っている場合:)

PS:確かに申し上げますが、英語は私の母国語ではありません。こんにちは

ベストアンサー1

GNU Parallelを構築しています:)

--transfer --return --cleanup が目的のタスクを実行しています。

第8章を読んでください。https://zenodo.org/record/1146014

おすすめ記事