当前位置: 首页 > 面试题库 >

在Linux上防止多个流程实例

朱承载
2023-03-14
问题内容

在Linux平台上,用于进程(C ++应用程序)检查其实例尚未运行的最佳方法是什么?


问题答案:

执行此操作的标准方法是在某个地方创建一个pidfile,通常包含程序的pid。

您无需将pid放在其中,只需在其上放置排他锁即可。如果您打开它进行读/写并使用LOCK_EX
LOCK_NB,如果文件已被锁定,它将失败。这是无竞争条件的,如果程序崩溃,该锁将自动释放。

通常,您希望按用户进行操作,因此用户的主目录是放置文件的好地方。

如果是守护程序,则最好使用/ var / run之类的地方。



 类似资料:
  • 我有一个大致如下的事件流: 在每次命中时,我都要使用mongoose在数据库中查找哈希 有时,我会遇到一堆共享相同哈希的事件,当前它会触发一堆调用,这些调用基本上返回相同的内容。 如果哈希相同,我如何优化此过程并防止被多次调用。

  • 问题内容: 防止Linux程序/守护程序在给定时间多次执行的最佳方法是什么? 问题答案: 最常见的方法是创建PID文件:定义文件将要到达的位置(在/ var / run内部很常见)。成功启动后,您会将PID写入此文件。在决定是否启动时,请阅读文件并检查以确保所引用的进程不存在(或者如果存在,则它不是守护程序的实例:在Linux上,您可以查看)。关机时,您可以删除文件,但这不是绝对必要的。 有一些脚

  • 我正在运行一个spark作业,流上下文每60秒运行一次。问题是一批处理时间太长(由于计算和保存RDD和Parquet到云存储),一批无法在1分钟内完成。它结束于下一批继续进入并成为活动的(状态=处理)。过了一段时间,我有10个活动批处理,而第一个已经完成。结果,它明显减慢,没有一批能够完成。是否存在严格限制一次活动批处理的数量为1。 多谢了。

  • 我的进程在linux服务器上被杀,无需人工干预。我已经验证了以下场景。 用户或管理员均未进行手动干预以杀死 该进程占用16.5GB的虚拟内存,其中RAM为16GB,交换为50GB。 任务:总共393个,2个跑步,387个睡觉,4个停止,0个僵尸 Cpu:12.8%us,0.5%sy,0.0%ni,86.7%id,0.0%wa,0.0%hi,0.0%si,0.0%st 内存:总共16015M,使用8

  • 本文向大家介绍C#简单实现防止多个程序运行的方法,包括了C#简单实现防止多个程序运行的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#简单实现防止多个程序运行的方法。分享给大家供大家参考,具体如下: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#面向对象程序设计入门教程》、《C#常见控件用法教程》、《C#程序设计之线程使用技巧总结》及《C#数据结构与算法教程》 希望本文所述

  • 问题内容: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程?我正在用户模式下编程。简单地锁定互斥锁是否可以完成此操作?我想防止执行某些功能时调度进程中的其他线程。它们会阻塞,我会用上下文切换浪费CPU周期。我希望任何执行该功能的线程都能够完成执行而不会中断,即使超出了线程的时间片。 问题答案: 您如何告诉Linux中的线程调度程序不因任何原因中断您的线程? 无法真正完成,您需要一个实