スクリプト終了時にbashスクリプトでバックグラウンドプロセスを終了する

スクリプト終了時にbashスクリプトでバックグラウンドプロセスを終了する

tailファイルにスクリプトがあります右上に時計も表示されます。。オンラインで時計部分を持ってきたのはうまくいきます。スクリプト全体は次のとおりです(単純化しました)。

while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
tail -f mylog.log

すべて大丈夫ですが、問題は私がスクリプトを停止したとき時計の使用はCTRL+C私のコンソールで実行されます(残りのbashプロセスを手動で終了するまで)。だから、スクリプトを終了するときにプロセスを停止する方法はありますか?

以下のコードを試しましたが、うまくいきません。

while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
CLOCK_PID=$!
tail -f mylog.log
kill -9 $CLOCK_PID

bashに閉じ込められる方法を検索しましたが、CTRL+Cこれが正しい方法であるかどうかわかりません...

答え1

CLOCK_PID=$!
trap 'kill -9 $CLOCK_PID' EXIT
tail -f mylog.log

答え2

あなたのニーズに合うかもしれませんwatch。デフォルトでは、現在の時刻が印刷されます。それは次のとおりです。

$ watch tail -n 30 /var/log/syslog

関連情報