shell脚本做定时任务停止并重复?

时间:2013-04-03 17:46:40

标签: bash shell timeout

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

编辑;我不想使用cron,除非它停止我的脚本它会让程序保存数据,我希望在shell脚本中完成这个。

4 个答案:

答案 0 :(得分:1)

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

- #!/斌/庆典

陷阱“echo Saving Data”SIGINT

while:
做         睡60年 完成

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

答案 1 :(得分:1)

在60秒后使用timeout command发送SIGINT

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

答案 2 :(得分:0)

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

cleanup(){ # do something...; }

trap 'cleanup' 2

# rest of the code
2行上的

trap ctrl + c 发出的SIGINT信号,请参阅man 7 signals < / p>

答案 3 :(得分:0)

尝试以下方法:

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

bg_pid=$!

sleep 60

kill -2 $bg_pid

这应该允许您使用Job Controlset builtin

SIGINT发送到后台流程