在没有cron的情况下递归执行脚本
Execute script recursively without cron
我有 shell 必须递归执行的脚本。
Note :-
我不知道执行脚本需要多少时间,如果我安排 crontab 作业,那么冲突将 occur.please 帮助我解决这个问题。
您可以在后台执行带有 while 循环的脚本 运行。
#!/bin/bash
while true; do
<Your commands Start>
.
.
.
<Your commands End>
sleep 60 ## Comment this line if you dont want to wait for 60 seconds for
## your next execution.
done
运行 这个脚本在后台。
$ ./script &
如果您从 cron 安排它,则它不是递归的。如果你想让脚本递归地 运行 ,那么答案是不言而喻的:它应该调用自己。只需添加:
exec [=10=] "$@"
在脚本的末尾,并确保在 运行 期间不要更改位置参数。 (如果更改它们,则需要保存它们的原始值,以便可以使用它们调用脚本。)
编辑——现在问题已在评论中得到澄清。
如果您希望收到一个数字参数并希望在每个 运行 上将其递增 10,请执行以下操作:
exec [=11=] $(expr + 10)
作为脚本的最后一行。但是递归地执行此操作似乎有些愚蠢,因为在脚本中简单地执行一个循环更有意义。
我有 shell 必须递归执行的脚本。
Note :-
我不知道执行脚本需要多少时间,如果我安排 crontab 作业,那么冲突将 occur.please 帮助我解决这个问题。
您可以在后台执行带有 while 循环的脚本 运行。
#!/bin/bash
while true; do
<Your commands Start>
.
.
.
<Your commands End>
sleep 60 ## Comment this line if you dont want to wait for 60 seconds for
## your next execution.
done
运行 这个脚本在后台。
$ ./script &
如果您从 cron 安排它,则它不是递归的。如果你想让脚本递归地 运行 ,那么答案是不言而喻的:它应该调用自己。只需添加:
exec [=10=] "$@"
在脚本的末尾,并确保在 运行 期间不要更改位置参数。 (如果更改它们,则需要保存它们的原始值,以便可以使用它们调用脚本。)
编辑——现在问题已在评论中得到澄清。
如果您希望收到一个数字参数并希望在每个 运行 上将其递增 10,请执行以下操作:
exec [=11=] $(expr + 10)
作为脚本的最后一行。但是递归地执行此操作似乎有些愚蠢,因为在脚本中简单地执行一个循环更有意义。