電子書籍の厳選無料作品が豊富!

下記のようなシェルスクリプトが最後の行まで実行されているかどうか確認する方法はありますか?

-----------
#!/bin/sh
cd /var/www/html/example.com/

php -f 1.php > result
php -f 2.php > result
php -f 3.php > result
php -f 4.php > result

exit
-----------

もし 
php -f 2.php > result
で止まってしまった場合、
php -f 3.php > result
php -f 4.php > result
が実行されないわけですが、そのような状況を把握することは可能でしょうか?

resultファイルをみればわかるのでしょうか?

A 回答 (3件)

まず、linux環境容量食って捨ててしまったので試せず、いい加減なこと言ってたらすみません。



>php -f 2.php > result
>で止まってしまった場合、
>php -f 3.php > result
>php -f 4.php > result
>が実行されないわけですが、そのような状況を把握することは可能でしょうか?

残念ですがこのシェルスクリプトは質問者様が考えている通りには動かず、途中で異常がおきても止まりません。
2.phpでコケても、3.php、4.phpは実行されるという意味です。
この書き方だと最後まで実行続けます。

なお、すみませんが、エラーで止める方法は確かあったはずですが、パっと出てこなかったので記載していません。

どこでコケたというのはphpの出力処理がどうなっているのかによりますので、resultを見れば、わかるかもしれませんし、わからないかもしれません。こちらではなんとも言えません。

ついでに

php -f 2.php > result

という書き方だと出力ファイルを毎回上書きします。つまり1.phpのあと2.phpが動くと1.phpの出力が消えます。

そのため以下の例のようにphpファイルごとにresultファイルを変更するなどしたほうがいいでしょう。


例:
php -f 1.php > result1
php -f 2.php > result2
php -f 3.php > result3
php -f 4.php > result4

一つのファイルに追記する方法もありますが、それはご自身で調べてください。大したことじゃないです。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2021/03/12 18:55

要所にechoを出しておけばざっくり分かる



詳細は、resultで確認するとして
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2021/03/12 18:55

まず, どのタイミングで「把握」したいのかな. シェルスクリプトを実行している途中で「あ, この前のコマンドの実行に失敗してる」と気付くことが必要なのか, それともシェルスクリプトが全部終わってから「あ, このコマンドで失敗してるや」とわかればいいのか.



そして, どういう手段を使うのかにもよると思う. 例えば, シェルスクリプトの標準出力 (または標準エラー) に出すのか, どこかのファイルに書き出すのかなど.

もちろん, ここで例にあがっている 1.php などの中身によっては「result を見る」ことで (シェルスクリプトが終わったときに) わかるかもしれない.
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2021/03/12 18:55

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