CTRL-C を使用してタスクを停止するプログラムを使用していますが、そのタスクを特定の時間実行した後、CTRL-C が押されたように停止させたいと考えています。ctrl+c が押されたように停止したい理由は、プログラムを強制終了して保存されたデータを失うのではなく、プログラムを停止すると自動保存されるためです。
編集; スクリプトを停止してプログラムにデータを保存させない限り、cron を使用したくありません。シェル スクリプト内でこれを実現したいと考えています。
トラップ ステートメントはこれらのシーケンスをキャッチし、これらのシグナルをキャッチするとコマンドのリストを実行するようにプログラムできます。
-#!/ビン/バッシュ
trap "echo 保存データ" SIGINT
while :
do sleep 60
done
トラップに関する情報: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html
次のことを試してください。
#!/bin/bash
set -m
/path/to/script.sh params &
set +m
bg_pid=$!
sleep 60
kill -2 $bg_pid
これにより、ジョブ制御とset ビルトインSIGINT
を使用してバックグラウンド プロセスに送信できるようになります。