怎样监测一个程序是否正在运行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mathzhaoliang
V2EX    问与答

怎样监测一个程序是否正在运行

  •   mathzhaoliang 2019 年 3 月 4 日 2673 次点击
    这是一个创建于 2527 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我现在要写一个监测程序,目的是判断系统中某个特殊的程序 /进程是否正在运行。我所知道的是用 pgrep 命令查看某个程序名的所有进程名字,但是这样是否太笨了?而且无法判断哪个是主进程。请问有什么好的方法没有?

    PS: 系统可以理解为 linux。

    11 条回复    2019-03-04 14:06:12 +08:00
    ic2y
        1
    ic2y  
       2019 年 3 月 4 日
    强制要求所有的程序内嵌 http 服务,进行 状态检测和 负载信息收集。
    mathzhaoliang
        2
    mathzhaoliang  
    OP
       2019 年 3 月 4 日
    @ic2y 做不到。比如我要监测的是某个硬件传感器是否启动了呢?
    aibangjuxin
        3
    aibangjuxin  
       2019 年 3 月 4 日
    /usr/bin/pgrep -o <process_name>
    where '-o' is the oldest (least recently started) of the matching processes
    JamesR
        4
    JamesR  
       2019 年 3 月 4 日
    “某个特殊的程序”是你自己的程序吗?让它连接你的数据库,定时新增记录即可。
    或者用现成的进程监视工具,网上一搜有。
    mathzhaoliang
        5
    mathzhaoliang  
    OP
       2019 年 3 月 4 日
    @JamesR 比如说我写一个车辆自动驾驶的系统,我要在系统启动时检测车载摄像头是否开始工作了,然后再去读取数据。
    kernel
        6
    kernel  
       2019 年 3 月 4 日 via Android
    写个.service 文件,systemctl status
    tt67wq
        7
    tt67wq  
       2019 年 3 月 4 日
    watchdog 监控日志可否?
    Lax
        8
    Lax  
       2019 年 3 月 4 日
    去掉“比如”,把真正的需要说清楚吧,大家这么猜需求也不是办法。场景一变,方案就不适用了,你说是车载系统估计 1 楼也不会推荐内嵌 http。有子进程的时候可以 setprocname,参考 nginx。另外可以通过 ppid 来查看是否有父进程来判断
    fxxkgw
        9
    fxxkgw  
       2019 年 3 月 4 日
    kill -0
    JamesR
        10
    JamesR  
       2019 年 3 月 4 日
    @mathzhaoliang #5 这种一般只能是自己写脚本了吧,简陋点没关系,先能工作用起来。
    xomix
        11
    xomix  
       2019 年 3 月 4 日   1
    这种需求常见两种解决方案:

    1、心跳方案:
    定时将心跳信息保存到指定位置(单独服务端 /数据库 /文件等,这里只是方便查询程序可以快速定位心跳信息,位置你自己按照需求定),查询方查询心跳信息发现无心跳信息即视为离线。

    2、被动回复方案:
    开启指定的查询返回方法( web/pipe/socket 等,这里的查询返回方法你自己和查询方确认即可。),查询方主动发起查询请求,返回结果,超时未返回视为离线。

    也有很多这两种方案结合的方案等,具体你需要根据自己的需求和实际资源去做。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     959 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:14 PVG 05:14 LAX 13:14 JFK 16:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86