現在のコマンドが完了する前に、次のコマンドを実行します。

現在のコマンドが完了する前に、次のコマンドを実行します。

私は単純なbashスクリプトを書いています。スクリプトは command1、command2 などのコマンドを順次実行します。しかし、ある時点では、コマンドを実行したいのですが、そのコマンドの処理中にそのコマンドを終了したいと思います。次の例で説明します。

#!/bin/bash
.
.
command24
kill $(pidof command24)
command26
.
.

私のスクリプトがcommand24に達すると、完了するのに約5〜7分かかります。しかし、2〜3分後にこのコマンド24を終了し、コマンド26を実行し続けたいと思います。問題は、このスクリプトが順番に動作すると、command24が完了するまで「kill」コマンドを実行できないことに注意してください。command24の処理中に「kill」コマンドを開始したいということです。このシナリオをよく説明できたらと思います。これに関してご案内ください。

ベストアンサー1

バックグラウンドでこのコマンドを実行し、スクリプトに数分間スリープモードを指示してから終了します。

command24 &
sleep 3m
kill $(pidof command24)
command26

または、より安全に使用するには、$!バックグラウンドで実行された最後のコマンドのPIDを取得します。

command24 &
sleep 3m
kill $!
command26

おすすめ記事