Error[8]: Undefined offset: 2, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述目前我正在尝试做这样的事情: > 1个cron job backup_daily > 2 cron job backup_weekly > 3 cron job backup_monthly 所以,可能会发生的事情是,例如每天和每周将在同一天运行.由于应备份的文件被其他备份进程锁定,因此至少其中一个将失败.所以,一个简单的解决方案是在不同的时间运行作业.但是既然我们不能确切地说工作需要多长时间,那 目前我正在尝试做这样的事情:

> 1个cron job backup_daily
> 2 cron job backup_weekly
> 3 cron job backup_monthly

所以,可能会发生的事情是,例如每天和每周将在同一天运行.由于应备份的文件被其他备份进程锁定,因此至少其中一个将失败.所以,一个简单的解决方案是在不同的时间运行作业.但是既然我们不能确切地说工作需要多长时间,那就太难看了.

所以我在想的是一个代理脚本,所以我不会做上面的cron工作,而是会做类似的事情

> 1 cron job check_if_anybackup_is_running_and_run_backup_daily_else_wait_till_finished
> 2 cron job check_if_anybackup_is_running_and_run_backup_weekly_else_wait_till_finished
> 3 cron job check_if_anybackup_is_running_and_run_backup_monthly_else_wait_till_finished

那么我唯一关心的是他们从任何时候的偏移开始,所以他们不会互相阻挡.也应该明智地选择“等待”时间,以便他们不会在同一时刻“重新检查”并再次相互阻止(有3个过程我们可以使用每周过程的偏移1,每月过程2个,甚至/不均匀计数器重新检查时间)

但是,我不知道如何用linux脚本实现这一点.我不确定“正确”的程序是什么.使用在进程启动时创建的锁文件并检查?如果它被锁定会发生什么?是时候使用睡眠并在时间X后再次检查锁定文件的“好”方法?我不确定当我在linux线程上使用睡眠时会发生什么 – 我的意思是:“计数器”是否被安排并耗尽处理器电源,或者是某种中断,处理器将在一段时间后发送给进程等待X(比如“基于事件”?)
有没有你能想到的更好的方法?一些Linux脚本代码片段将是完美的,因为那不是我以前做过的事情

解决方法 我将所有三个脚本组合成一个具有不同参数的脚本.像do_backup.sh每天一样.

你使用相同的锁文件是正确的.我会更进一步,在这个锁文件中写入你的进程PID.这样,如果您的进程看到锁存文件存在,它不仅会挽救,而且检查是创建此文件仍在运行的进程.这种方式即使您的进程崩溃并且没有删除锁定文件 – 您的整个系统仍然是安全的.

以下是我在脚本中使用的示例,以确保只有一个副本同时运行:

#!/bin/shPID_file=
source pID.sh
.pID[ -f $PID_file ] && { pID=`cat $PID_file` ps -p $pID && { echo Already running... exit } rm -rf $PID_file}echo $$> $PID_file

然后在您的脚本中,您只需包含此文件

[+++] 总结

以上是内存溢出为你收集整理的linux – 让cron工作等到另一个工作完成全部内容,希望文章能够帮你解决linux – 让cron工作等到另一个工作完成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
linux – 让cron工作等到另一个工作完成_系统运维_内存溢出

linux – 让cron工作等到另一个工作完成

linux – 让cron工作等到另一个工作完成,第1张

概述目前我正在尝试做这样的事情: > 1个cron job backup_daily > 2 cron job backup_weekly > 3 cron job backup_monthly 所以,可能会发生的事情是,例如每天和每周将在同一天运行.由于应备份的文件被其他备份进程锁定,因此至少其中一个将失败.所以,一个简单的解决方案是在不同的时间运行作业.但是既然我们不能确切地说工作需要多长时间,那 目前我正在尝试做这样的事情:

> 1个cron job backup_daily
> 2 cron job backup_weekly
> 3 cron job backup_monthly

所以,可能会发生的事情是,例如每天和每周将在同一天运行.由于应备份的文件被其他备份进程锁定,因此至少其中一个将失败.所以,一个简单的解决方案是在不同的时间运行作业.但是既然我们不能确切地说工作需要多长时间,那就太难看了.

所以我在想的是一个代理脚本,所以我不会做上面的cron工作,而是会做类似的事情

> 1 cron job check_if_anybackup_is_running_and_run_backup_daily_else_wait_till_finished
> 2 cron job check_if_anybackup_is_running_and_run_backup_weekly_else_wait_till_finished
> 3 cron job check_if_anybackup_is_running_and_run_backup_monthly_else_wait_till_finished

那么我唯一关心的是他们从任何时候的偏移开始,所以他们不会互相阻挡.也应该明智地选择“等待”时间,以便他们不会在同一时刻“重新检查”并再次相互阻止(有3个过程我们可以使用每周过程的偏移1,每月过程2个,甚至/不均匀计数器重新检查时间)

但是,我不知道如何用linux脚本实现这一点.我不确定“正确”的程序是什么.使用在进程启动时创建的锁文件并检查?如果它被锁定会发生什么?是时候使用睡眠并在时间X后再次检查锁定文件的“好”方法?我不确定当我在linux线程上使用睡眠时会发生什么 – 我的意思是:“计数器”是否被安排并耗尽处理器电源,或者是某种中断,处理器将在一段时间后发送给进程等待X(比如“基于事件”?)
有没有你能想到的更好的方法?一些Linux脚本代码片段将是完美的,因为那不是我以前做过的事情

解决方法 我将所有三个脚本组合成一个具有不同参数的脚本.像do_backup.sh每天一样.

你使用相同的锁文件是正确的.我会更进一步,在这个锁文件中写入你的进程PID.这样,如果您的进程看到锁存文件存在,它不仅会挽救,而且检查是创建此文件仍在运行的进程.这种方式即使您的进程崩溃并且没有删除锁定文件 – 您的整个系统仍然是安全的.

以下是我在脚本中使用的示例,以确保只有一个副本同时运行:

#!/bin/shPID_file=
source pID.sh
.pID[ -f $PID_file ] && { pID=`cat $PID_file` ps -p $pID && { echo Already running... exit } rm -rf $PID_file}echo $$> $PID_file

然后在您的脚本中,您只需包含此文件

总结

以上是内存溢出为你收集整理的linux – 让cron工作等到另一个工作完成全部内容,希望文章能够帮你解决linux – 让cron工作等到另一个工作完成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1025954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存