热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c/c++开发分享如何知道一个进程是否已经启动但是在Linux中崩溃了

请考虑以下情况:–我正在使用Linux。我怀疑我的应用程序崩溃了。我没有启用核心转储。日志中没有信息。我怎么能确定,在系统重启后我的应用程序启动了,但现在它没有运行,因为它已经崩溃

请考虑以下情况: – 我正在使用Linux。 我怀疑我的应用程序崩溃了。 我没有启用核心转储。 日志中没有信息。

我怎么能确定,在系统重启后我的应用程序启动了,但现在它没有运行,因为它已经崩溃了。

我的应用程序配置为服务,用C / C ++编写。

在某种程度上: 如何获得自系统启动以来执行的所有进程/服务名称? 它甚至可能吗?

我知道,我可以启用日志记录并再次启动进程以获取崩溃。

    标准做法是为您的守护程序(/var/run/$NAME.pid)提供一个pid文件,您可以在其中找到其进程ID,而无需手动解析进程树。 然后,您可以检查该进程的状态,或让您的守护进程响应信号(通常为SIGHUP),并报告其状态。 确保此pid仍然属于您的进程是一个好主意,最简单的方法是检查/ proc / $ PID / cmdline。

    附录:如果你只使用较新的fedora或ubuntu,你的init系统是新手 ,它具有内置的监控和触发function。

    正如@ emg-2所指出的那样,BSD进程会计是可用的,但我不认为这是这种情况的正确方法。

    此function包含在Linux内核中。 它被称为: BSD流程会计。

    我建议您写下这样一个事实,即您开始使用某种日志文件,或者是在每次启动时被覆盖的私有文件,或者是通过syslogd覆盖的日志文件。

    此外,您可以记录时间戳心跳,以便确切知道崩溃的时间。

    你可能可以制作一个诱饵,即一个应用程序或shell脚本,它只是真正的应用程序的包装器,但添加了一些日志记录,如“应用程序启动”。 然后,您更改原始应用程序的名称,并将原始名称提供给您的诱饵。

    正如JimB所提到的,你让守护进程写了一个PID文件。 您可以通过kill(2)系统调用或kill(1)程序向它发送信号0来判断它是否正在运行。 返回状态将告诉您是否存在具有该PID的进程。

    守护进程应始终:1)使用getpid()(man getpid)或您的语言的等效命令将当前运行的实例的进程写入/var/run/$NAME.pid。 2)将标准日志文件写入/var/log/$NAME.log(对于当前运行的日志,较大的日志文件应分解为.0.log,对于其他日志,应将.X.log.gz分解为其中,其中X为更低版本更新)3)/应该/有一个LSB​​兼容的运行脚本至少接受启动停止状态和重启标志。 状态可用于检查守护程序是否正在运行。

    我不知道获取已执行的所有进程名称的标准方法; 然而,使用SystemTap可能有一种方法。

    如果您只是想监视您的进程,我建议在fork之后使用waitid(man 2 wait)而不是分离和守护进程。

    如果您的应用程序已崩溃,则无法区分“您的应用程序从未启动过”,除非您的应用程序在系统日志中写入。 syslog(3)是你的朋友。

    要找到您的应用,您可以尝试一些想法:

      以上就是c/c++开发分享如何知道一个进程是否已经启动但是在Linux中崩溃了相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(编程笔记)。


      推荐阅读
      • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
      • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
      • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
      • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
        本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
      • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
        本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
      • STM32与FPGA的对比及学习建议
        本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
      • 一次上线事故,30岁+的程序员踩坑经验之谈
        本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
      • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
      • LINUX学习之centos7营救模式
        今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
      • 开发笔记:Python脚本优化Zabbix多行日志监控
        篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python脚本优化-----Zabbix多行日志监控相关的知识,希望对你有一定的参考价值。通过使用z ... [详细]
      • 【laravel5.6】yii  Process class relies on proc_open, which is not available on your PHP installation.
        部署服务器的时候,使用composer来安装依赖。遇到了从错误提示信息中可以看到是因为关闭了PHP的proc_get_status()函数,那么如何解决 ... [详细]
      • 示例代码packagemainimport("net""os"&am ... [详细]
      • ubuntu下nginx启动配置文件
        2019独角兽企业重金招聘Python工程师标准在https:github.comJasonGiedyminnginx-init-ubuntu获得的nginx配置文件其中一些 ... [详细]
      • IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题)
        IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题) ... [详细]
      • 查看电脑重启日志_详解各个系统主机日志及数据库日志收集AIX、redhat、HPUX等...
        概述今天主要针对主机和数据库日志的一些收集做一下记录总结,下面一起来看看吧~一、主机系统日志收集:创建主机日志收集目录:--UnixLinux创建存放系 ... [详细]
      author-avatar
      ayo
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有