バックグラウンドで実行されているbashシェルスクリプトを終了する
多くの場合、bashシェルスクリプトを使用して、さまざまなファイルに対して簡単なコマンドを実行します。例えば、私は次があるとbash呼ばれるシェルスクリプト、script.shプログラム/コマンドを実行し、foo3つのテキストファイルには"a.txt"、"b.txt"、"c.txt": #!/bin/bash for strname in "a" "b" "c" do foo $strname".txt" done また、それfoo $strname".txt"が遅いと仮定すると、スクリプトの実行には長い時間がかかります(たとえば、数時間または数日)。このためnohup、端末が閉じられたり切断されたりしても実行が継続されるように使用したいと思います。また、スクリプトをすぐにバックグラウンドに移動させたいので、&演算子を使用します。したがって、次のコマンドを使用して呼び出しますscript.sh。 nohup bash script.sh & これは、スクリプトをバックグラウンドでハングアップせずに実行する場合には正常に機能しますが、何らかの理由である時点で実行を終了したいとします。これどうやってするの? 私が遭遇した問題は、を見るとtop、にfoo対応するものだけが見えること"a.txt"です。そのfoo呼び出しを終了することはできますが、foo対応する"b.txt"が呼び出されると、その呼び出しも終了する必要があります。forループで指定された数十または数百のテキストファイルの場合、すべてfooを1つずつ終了するのは面倒です!そのため、代わりにシェルスクリプトから発行された特定の呼び出しではなく、シェルスクリプト自体を代わりに終了する必要があります。 コマンドを入力するとき ps -u myusername myusernameユーザー名はどこにあるのか、実行中のプロセスのリストを取得します。しかし、という2つの異なるプロセスIDが表示されbashます。これらのプロセスがあれば、どのプロセスが元の呼び出しに対応しているかを知るにはどうすればよいnohup bash script.sh &ですか?