1. ホーム
  2. bash

bashスクリプトからcontrol+cを送信するには?

2023-08-08 15:40:20

質問

私はbashスクリプトでいくつかの画面を起動し、djangoの runserver コマンドを実行しています。プログラム的にそれらすべてを停止できるようにしたいのですが、それには Control+crunserver .

bashスクリプトからこれらのキーストロークを送信するにはどうすればよいですか?

どのように解決するのですか?

Ctrl+C SIGINT シグナルを送信します。

kill -INT <pid> が送信する SIGINT 信号も送ります。

# Terminates the program (like Ctrl+C)
kill -INT 888
# Force kill
kill -9 888

仮定の話 888 はプロセスIDです。


注意点として kill 888SIGTERM シグナルを送ります。これは少し違いますが、プログラムの停止を要求するものです。ですから、もしあなたが何をしているのか知っているならば(ハンドラをバインドしていない SIGINT にバインドされたハンドラがない) 場合は、単純な kill で十分です。

スクリプトの中で最後に起動されたコマンドの PID を取得するには $! :

# Launch script in background
./my_script.sh &
# Get its PID
PID=$!
# Wait for 2 seconds
sleep 2
# Kill it
kill $PID