我有一个每 5 分钟运行一次以从远程系统获取数据的 cron 脚本,它按预期工作。我的问题是,有时任务需要超过 5 分钟,这意味着我在旧任务完成之前开始了新任务。所以我想知道我是否可以检查,如果可以,在我开始新工作之前,旧工作是否仍在运行。我猜基本 id 会去创建一个文本文件,并在其中有一个值,比如 true 或 false,然后在我运行它之前检查它是 true 还是 false,如果 false 更新为 true 并运行,如果 false 终止并等待直到下一次运行
我有一个每 5 分钟运行一次以从远程系统获取数据的 cron 脚本,它按预期工作。我的问题是,有时任务需要超过 5 分钟,这意味着我在旧任务完成之前开始了新任务。所以我想知道我是否可以检查,如果可以,在我开始新工作之前,旧工作是否仍在运行。我猜基本 id 会去创建一个文本文件,并在其中有一个值,比如 true 或 false,然后在我运行它之前检查它是 true 还是 false,如果 false 更新为 true 并运行,如果 false 终止并等待直到下一次运行
您不必在文件中输入任何值。一个空文件就可以了。只需检查文件是否存在。如果文件存在,则退出脚本。否则创建文件,获取数据,并在所有数据获取完成后删除文件。
示例代码
如果它的另一个实例正在运行,则下面的脚本将退出。这是通过创建一个仅在脚本运行时存在的临时“锁定文件”来完成的。
脚本的第一部分检查锁定文件是否存在,如果锁定文件存在则停止而不做任何其他事情。
脚本的第二部分完成了所有工作。
注意,如果脚本被Ctrl+中断C或脚本正常结束,trap 命令将删除锁定文件。
此示例脚本不获取任何数据。它只显示“获取数据”字样,等待一分钟,然后显示“完成获取数据”。要使其真正发挥作用,请将以下几行替换为您自己的行:
希望这可以帮助