防止Linux程序/守护程序在给定时间多次执行的最佳方法是什么?
最常见的方法是创建PID文件:定义文件将要到达的位置(在/ var /
run内部很常见)。成功启动后,您会将PID写入此文件。在决定是否启动时,请阅读文件并检查以确保所引用的进程不存在(或者如果存在,则它不是守护程序的实例:在Linux上,您可以查看/proc/$PID/exe
)。关机时,您可以删除文件,但这不是绝对必要的。
有一些脚本可以帮助您做到这一点,您可能会发现start-stop- daemon
它很有用:它可以使用PID文件,甚至可以全局检查可执行文件的存在。它是专门为完成此任务而设计的,旨在帮助人们正确完成任务。
问题内容: 目前,我试图阻止脚本多次运行: 并且有一个cron作业每分钟执行一次以上脚本: 它可以工作一段时间。几天后,当我这样做时: 我发现有 两个 实例正在运行!不是三个或更多,不是一个。我杀死了其中一个实例。几天后,又有 两个 实例。 代码有什么问题?还有其他替代方法来限制onlytask.php的一个实例正在运行吗? PS我的文件夹没有清理。显示锁定文件是在第一天创建的: 问题答案: 现在
问题内容: 当用户单击登录或注册按钮时,我试图阻止多个请求。这是我的代码,但是不起作用。只是第一次工作正常,然后返回false。 有任何想法吗?谢谢! 问题答案: 问题在这里: 不再指向按钮。
问题内容: 在Linux平台上,用于进程(C ++应用程序)检查其实例尚未运行的最佳方法是什么? 问题答案: 执行此操作的标准方法是在某个地方创建一个pidfile,通常包含程序的pid。 您无需将pid放在其中,只需在其上放置排他锁即可。如果您打开它进行读/写并使用LOCK_EX LOCK_NB,如果文件已被锁定,它将失败。这是无竞争条件的,如果程序崩溃,该锁将自动释放。 通常,您希望按用户进行
问题内容: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?我正在用户模式下编程。简单地锁定互斥锁是否可以完成此操作?我想防止执行某些功能时调度进程中的其他线程。它们会阻塞,我会用上下文切换浪费CPU周期。我希望任何执行该功能的线程都能够完成执行而不会中断,即使超出了线程的时间片。 问题答案: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程? 无法真正完成,您需要一个实
问题内容: 我想防止在php应用程序中多次登录。 首先,我在用户表中创建登录状态(活动,非活动)。 当用户A登录时,用户状态将设置为“活动”,如果用户注销,则状态将设置为“非活动”。当另一个客户端尝试使用相同的用户帐户登录时,我检查用户表。如果用户仍处于活动状态,则将错误登录发送给用户。 发生问题,如果用户关闭浏览器,则可以更新用户表中的状态,因为用户没有单击注销。 您对此有什么建议吗? 问题答案
问题内容: 我有几个使用相同的JNI库的类,称为“ jni”。在每个此类中,我在该类的静态初始值设定项中都有一个System.loadLibrary()调用: 唯一的问题是,我只希望System.loadLibrary()被调用一次,因为这可能需要一段时间。有没有一种简便的方法来防止同一库的多次加载? 问题答案: 如果已经加载了库,则随后的任何加载相同库的调用都将被忽略。 : 加载由libname