スクリプトを変更したり名前を変更しなくても、bashスクリプトがまだ実行されていることを確認する方法はありません。

スクリプトを変更したり名前を変更しなくても、bashスクリプトがまだ実行されていることを確認する方法はありません。

私たちは、ほとんどすべてのことができるさまざまなクライアントbashスクリプトを見つけました。その機能が何であるかは関係ありませんが、.shスクリプトが完了したか、または数分かかることがあることをまだ実行しているかどうかを簡単に確認する方法が必要です。スクリプトは変更、名前変更、または移動できません。また、スクリプトが出力するすべてをstdoutとして出力できる必要があるため、> nullも持つことはできません。

この問題に関するさまざまな投稿を見つけましたが、回避策はありません。スクリプトが絶対に停止しないように、「Hello World」とfor doループをエコーする単純なスクリプトを作成しようとしましたが、はい、スクリプトがまだtest.sh実行中であることを知らせる動作するソリューションが見つかりませんでした。ソリューションは、シングルライニングなど、できるだけ単純でなければなりません。私はいくつかの簡単なものを試しました。

if $? -eq 0 then script finished successfully

ただし、$?一部の数値は常に返されますが、実行が完了したかどうかはわかりません。

pgrep -l ./test.sh or pgrep -x ./test.sh

他の人のためのソリューションとして公開されましたが、私には効果がありません。出力を印刷せずにコマンドプロンプトに移動します。

私が作成したスクリプトtest.shもプロセスとして表示されません。ただディスプレイのようです-bash。 Unix/Linux で作業するために必要です。

スクリプトがまだ実行中で、まだコマンドプロンプトに戻っていないことを確認するにはどうすればよいですか?

アップデート:たぶんこれは私の問題をよりよく説明するかもしれません。 SSHターミナルセッションを開いて完了するのに2分または20分かかることがあるスクリプトを実行すると、コマンドプロンプトが再び表示されたときに完了したことがわかります。したがって、プロンプトが表示されるまで、次のコマンドを入力しないでください。単純な。

しかし、人間の助けを借りずにどうやって同じことをすることができますか? Linuxにどのように通知できますか?

  1. Windows PCからリモートPCへSSHセッションを開き、
  2. 実行し./script.sh
  3. whoami2)が正常に完了した場合にのみコマンドを実行しますか?

別のスクリプトを作成して実行したり、手順2でスクリプトを変更することなく、これらすべてを実行できますか?つまり、コマンドプロンプトでのみ可能です。それでは、まだ複数のLinuxコマンドを使用できますか?;または、可能であれば保存せずにコマンドラインにスクリプトを作成してから、このコマンドを実行できますか(ENTERキーを押します)?これを説明するのは少し難しいですが、今はもっと理解できることを願っています。

関連情報