在我的 Linux 服务器上,我需要同步多个用 BASH 和 PHP 编写的脚本,以便其中只有一个能够启动系统关键作业,这是一系列 BASH/PHP 命令,如果由两个或多个脚本同时执行。根据我在 C++ 中使用多线程的经验,我熟悉互斥锁的概念,但是如何为在不同进程中运行并且当然不是用 C++ 编写的一堆脚本实现互斥锁?
好吧,想到的第一个解决方案是确保每个脚本最初都创建一个“锁定标志”文件,让其他脚本知道该作业已“锁定”,然后在完成作业后删除该文件。但是,正如我所看到的,文件写入和读取操作必须是完全原子的,才能让这种方法以 100% 的概率起作用,并且同样的要求也适用于任何其他同步方法。而且我很确定文件写入/读取操作不是原子的,它们至少在所有现有的 Linux/Unix 系统中都不是原子的。
那么同步并发 BASH和PHP 脚本最灵活可靠的方法是什么?