1

CTRL-C を使用してタスクを停止するプログラムを使用していますが、そのタスクを特定の時間実行した後、CTRL-C が押されたように停止させたいと考えています。ctrl+c が押されたように停止したい理由は、プログラムを強制終了して保存されたデータを失うのではなく、プログラムを停止すると自動保存されるためです。

編集; スクリプトを停止してプログラムにデータを保存させない限り、cron を使用したくありません。シェル スクリプト内でこれを実現したいと考えています。

4

4 に答える 4

1

トラップ ステートメントはこれらのシーケンスをキャッチし、これらのシグナルをキャッチするとコマンドのリストを実行するようにプログラムできます。

-#!/ビン/バッシュ

trap "echo 保存データ" SIGINT

while :
do sleep 60
done

トラップに関する情報: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html

于 2013-04-03T18:14:00.423 に答える
0

次のことを試してください。

#!/bin/bash
set -m
/path/to/script.sh params &
set +m

bg_pid=$!

sleep 60

kill -2 $bg_pid

これにより、ジョブ制御set ビルトインSIGINTを使用してバックグラウンド プロセスに送信できるようになります。

于 2013-04-03T19:16:15.450 に答える