如何在3个独立的java进程之间传递cron作业的值?
我每天早上都在服务器上运行cron作业,它基本上连续运行三个不同的java程序(都有一个main方法),让我把它们命名为P1、P2和P3 第一个流程P1和最后一个流程P3速度非常快,但第二个流程P2有时会耗费大量时间(有时会运行一天以上),因为它执行一些复杂的业务逻辑 业务计算非常复杂,并且基于客户参与该流程的周期性 假设在第一天我必须处理100万客户,因为他们在第一天注册 在第2天我有更少的客户说1000个客户 现在,当第二个进程P2运行时,它将客户机处理详细信息存储在数据库中,状态为PENDING,因为最后一个进程p3完成时,它将更改为SUCCESS 现在我的问题是: 第1天如何在3个独立的java进程之间传递cron作业的值?,java,cron,Java,Cron,我每天早上都在服务器上运行cron作业,它基本上连续运行三个不同的java程序(都有一个main方法),让我把它们命名为P1、P2和P3 第一个流程P1和最后一个流程P3速度非常快,但第二个流程P2有时会耗费大量时间(有时会运行一天以上),因为它执行一些复杂的业务逻辑 业务计算非常复杂,并且基于客户参与该流程的周期性 假设在第一天我必须处理100万客户,因为他们在第一天注册 在第2天我有更少的客户说1000个客户 现在,当第二个进程P2运行时,它将客户机处理详细信息存储在数据库中,状态为PEND
我知道这看起来很混乱。但是,如果我能进一步澄清,请告诉我。简单的方法是让P1测试/创建一个标志文件,P3完成后删除标志文件。实际上,最好在运行P1/P2/P3的包装器脚本中执行此操作
您需要处理的一个复杂问题是可能出现某些故障,给您留下一个标志文件。。。但没有运行P1/P2/P3。可以使用的一个技巧是将(比如)运行包装器脚本的shell的PID存储在标志文件中。然后使用\u文件中的
kill 0$the \u PID\u检查上一个脚本是否仍然有效。(使用信号为零的kill
命令测试是否存在进程。)您能指导我在包装器中处理此问题吗?@Abu-具体来说,您想问什么?您提到最好在包装器脚本中执行此操作,我正在考虑创建一个日期字符串,并将其传递给特定日期的所有三个进程,并将此日期存储在数据库中,以便我可以区分特定日期的记录,因此可以在包装器脚本中进行,或者是否有其他方法可以实现此目的。您可以在脚本中创建一个日期字符串。阅读man 1日期
。此外,您可能还应该阅读有关编写shell脚本的教程。