アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在仕事でLinuxを使用しています。

それであるプログラムを5つ順次流すシェルスクリプトを実行しているのですが、それを強制終了したいのです。どうすればいいでしょうか?
『ctrl + C』でもダメ、『exit』でもダメ…

一応『ps -ef | grep シェルスクリプト名』でPIDを調べて、『killコマンド』で…と思ったのですが、調べるたびに随時プログラムが流れているためPIDが変わってしまいどうしたらいいか分かりません。

どなたかご存じの方よろしくお願いします。

A 回答 (6件)

No3の回答とコメントより:


> > そうだとすると、その「xxxx.sh」自体を繰り返し実行しているのだと思われます。
> > その実行元を止める必要があるのでは?
> その実行元の止め方をお聞きしたかったのです。

質問文には全く書かれていないのですが、上のやりとりからすると、
「あるプログラムを5つ順次流すシェルスクリプト」を実行しているのではなくて、
「『あるプログラムを5つ順次流すシェルスクリプト』を繰り返し実行するシェルスクリプト」を実行していると言うことでしょうか?
であれば、
「あるプログラムを5つ順次流すシェルスクリプトを繰り返し実行するシェルスクリプト」はどういう手段で実行しているのでしょうか?

端末から、シェルスクリプト名を指定して実行しているのであれば、その起動している端末で Ctrl-C で止まるので、それ以外の方法と言うことですよね?

シェルスクリプトの普通の実行の仕方は、端末からシェルスクリプト名を指定して実行するので、皆さんその前提で回答しています。
    • good
    • 0
この回答へのお礼

再度回答いただきありがとうございました。
確かに、「あるプログラムを5つ順次流すシェルスクリプト」は端末で名前を指定して実行しているのですが、「ctrl+C」でも止まらなかったので、お聞きしたかったのです。
私の説明等至らず、大変申し訳ありませんでした。
今後も色々と勉強していきたいと思います。

お礼日時:2023/11/09 10:18

https://ja.linux-console.net/?p=6878

普通は、呼び出し元が親プロセスとして設定されるので、各種コマンド等で調べることができます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2023/11/09 10:18

ご質問の意図からは離れてしまうかもしれませんが、元々のスクリプトにMS-DOSバッチファイルの"PAUSE"に相当するプロンプト表示を挿入したら如何でしょうか。



#! /bin/csh -f
echo "Call some script!"
echo -n "Press the Enter key to proceed: "
set Enter = $<

echo "Call some script!"
echo -n "Press the Enter key to proceed: "
set Enter = $<

echo "Call some script!"
echo -n "Press the Enter key to proceed: "
set Enter = $<

スクリプト実行...

$ ./test
Call some script!
Press the Enter key to proceed:
Call some script!
Press the Enter key to proceed:
Call some script!
Press the Enter key to proceed:

$
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
とりあえずこの度は私の退社時間もあったので、処理が終わるまでそのまま流して帰ることにしました。

お礼日時:2023/11/08 10:53

> 一応『ps -ef | grep シェルスクリプト名』でPIDを調べて、『killコマンド』で…と思ったのですが


> 調べるたびに随時プログラムが流れているためPIDが変わってしまいどうしたらいいか分かりません。

ねんのための確認ですが

xxxx.sh:
perl y1.pl
perl y2.pl
perl y3.pl
perl y4.pl
perl y5.pl

みたいなシェルスクリプトがあって
ps -ef | grep xxxx.sh
とやって出てくる「xxxx.sh」プロセスの PID が変わる、ということですよね?


そうだとすると、その「xxxx.sh」自体を繰り返し実行しているのだと思われます。
その実行元を止める必要があるのでは?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
その実行元の止め方をお聞きしたかったのです。
今回はこのまま流して終わるまで待つことにしましたが、もしよろしければ、その実行元の止め方を教えていただけるとありがたいです。

お礼日時:2023/11/08 10:53

強制終了させるのはシェルスクリプトで良いですか? pkillならPIDを調べる必要なく直接プロセスを終了できるので、それを試してください。


シェルスクリプトから起動しているプログラムは直ぐ終わるならスクリプトだけ強制終了すれば良いでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
調べてみたんですが、『×××.sh』を「pgrepコマンド」で確認してからと思ってやったんですが、まったくpidが出てこずとりあえずプログラムが流れ終わるまで待つことにしようかと思います。

お礼日時:2023/11/07 14:53

killでいいのでは?awkでPID抽出できるでしょう

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ただ「awk」の使い方が調べてもよくわかりません。
質問にあるように「×××.sh」というシェルスクリプトには5つのperlのプログラムが入っています。
それでそれぞれのプログラムがそこまで複雑なものではないのであっという間にプログラムが進んでいく状況にあります。
申し訳ないのですが、この辺りをふまえてどのようにしたらいいか教えていただけるとありがたいです。

お礼日時:2023/11/07 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A