Shell脚本做定时任务停止和重复



我正在使用使用CTRL-C停止任务的程序,我想做的是运行该任务一定数量的分钟,然后让它停止,就像按下CTRL-C一样。我想让它像按ctrl+c一样停止的原因是,当你停止程序时,它会自动保存,而不是杀死它,可能会丢失保存的数据。

编辑;我不想使用cron,除非它停止我的脚本,它将有程序保存数据,我希望在shell脚本内完成此操作。

trap语句捕获这些序列,并可编程为在捕获这些信号时执行一系列命令。

- # !/bin/bash

trap "echo Saving Data" SIGINT

:
做睡眠60

关于陷阱的信息:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html

使用timeout命令60秒后发送SIGINT:

timeout --signal=INT 60 /path/to/script.sh params

如果您需要截取ctrl+c,您应该使用trap内置,如下所示:

cleanup(){ # do something...; }
trap 'cleanup' 2
# rest of the code
trap线上的

2ctrl+c发出的SIGINT信号,参见man 7 signals

尝试如下:

#!/bin/bash
set -m
/path/to/script.sh params &
set +m
bg_pid=$!
sleep 60
kill -2 $bg_pid

这应该允许您使用作业控制和内置设置将SIGINT发送到后台进程

相关内容

  • 没有找到相关文章

最新更新