LoginSignup
12
10

More than 5 years have passed since last update.

シェルスクリプトで複数プログラムを並列で動かしてCtrl-Cでまとめて終了させる

Last updated at Posted at 2017-08-03

誤解というか、様々な意味に取られそうなタイトルですが、
私がやりたかったことは以下のようなケースです。

・tcpdumpのような延々と続く動作を複数動作させたい
・でも終了させるときは Ctrl-C で一発で全部消したい

要は、並列で複数プロセスを動作させるのでバックグラウンドで起動して、
それらを一発で終了させたいという要望です。

#!/bin/bash
trap killall SIGINT

killall(){
  echo 'good bye'
  kill 0
}

hello () {
    echo 'hello'
    sleep 1
    hello
}

yeah () {
    echo 'yeah'
    sleep 1
    yeah
}

chao () {
    echo 'chao'
    sleep 1
    chao
}

hello &
yeah &
chao &

wait

結論としては、 Ctrl-C で送信される SIGINT をトラップして kill 0 に差し替える、ということでした。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10