python检测linux进程 - CSDN
精华内容
参与话题
  • python 判断linux进程,并杀死进程

    千次阅读 2018-05-22 09:49:07
    ''' @author: Jacobpc ''' import os import sys import subprocess def get_process_id(name): child = subprocess.Popen(["pgrep"...,name],stdout=subprocess.PIPE,shell=False) response = child.co....
    '''
    
    @author: Jacobpc
    '''
    import os
    import sys
    import subprocess
    
    def get_process_id(name):
        child = subprocess.Popen(["pgrep","-f",name],stdout=subprocess.PIPE,shell=False)
        response = child.communicate()[0]
        return response
    
    pid = get_process_id("python socialbanklog.py")
    print pid
    if not pid:
        print "no target pid to kill,please check"
        sys.exit(1)
      
    result=os.system("kill -9 "+pid)
    if result==0:
        print "execute kill success"
    else:
        sys.exit(1)
    

    展开全文
  • python脚本检测linux进程是否运行

    千次阅读 2011-10-21 09:57:58
    原文:http://www.91python.com/archives/317 ...前天服务器突然不能访问了,ssh是能连上去,不过网站打不开了 ...在服务器上查了下进程,发现nginx没有启动,也不知道其中的原因。...说到在linux


    原文:http://www.91python.com/archives/317


    前天服务器突然不能访问了,ssh是能连上去,不过网站打不开了
    在服务器上查了下进程,发现nginx没有启动,也不知道其中的原因。
    这让我想起来当初现在使用的这个vps也有过不能访问的情况,也是由于nginx终止了运行
    就想写一个脚本进去放到crontab里去定时监控

    说到在linux里要监控一个进程是否运行也有很多的方法,可以使用ps看进程里是否有相关进程
    不过在linux里每个进程都有一个pid文件对它对应,在程序运行时该文件就会存在,查看它的内容为程序当前运行的进程号
    所以只要判断该文件是否存在就行了 我写的检测脚本如下

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import os
    pf ="/usr/local/nginx/logs/nginx.pid"
    if not(os.path.exists(pf)):
            os.system("/etc/init.d/nginx start")

    再说说crontab的设置,用户可以手动修改crontab来添加定时任务
    另外系统里有默认的定时任务,你会在/etc目录下发现有
    cron.daily cron.hourly cron.monthly cron.weekly 四个目录,看名字就知道它们分别是按天、小时、月、星期来执行目录下的脚本
    把上面的代码保存成nginx.py放到cron.hourly目录下,记得加执行权限

    chmod +x nginx.py

    每小时执行一次
    记得第一代码一定要加,否则将不能执行成功

    昨天发现当nginx意外停止时pid文件是存在的,所以上面的代码就有问题了,在nginx意外停止后是不会自动重启的
    不过也好修改,下面写出修改后的方案

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import os
    pf ="/usr/local/nginx/logs/nginx.lock" #不再读取pid
    os.system("ps -A|grep nginx>%s"% pf)  #将进程信息写入lock文件
    if not(os.path.getsize(pf)):          #判断文件大小,当nginx没有运行时上一步写入lock的内容为空
            os.system("/etc/init.d/nginx start")
            #这里可以加入发短信的代码

    有关短信发送的可参考 google的免费午餐–日历短信通知来监控服务器
    还有也修改了定时任务,一小时检测一次总感觉时间太长了,就缩小到五分钟执行一次
    这个要在crontab里手动编辑

    crontab -e
    0-59/5 * * * * /data/crontab/nginx.py #注意空格

    重启crontab服务

    /etc/init.d/crond restart


    展开全文
  • python判断进程是否存在

    万次阅读 2020-04-13 15:24:02
    1. 进程名 import psutil def judgeprocess(processname): pl = psutil.pids() for pid in pl: if psutil.Process(pid).name() == processname: print(pid) break els...

    1. 进程名 

    import psutil
    
    def judgeprocess(processname):
        pl = psutil.pids()
        for pid in pl:
            if psutil.Process(pid).name() == processname:
                print(pid)
                break
        else:
            print("not found")
            
    if judgeprocess('notepad++.exe') == 0:
        print('success')
    else:
        pass
    
    
    
    上面代码网友提出有问题,暂时没验证,记录下修改后的
    # coding:utf-8
    import psutil
     
    # pl = psutil.pids()
    # for pid in pl:
    #     if psutil.Process(pid).name() == 'notepad++.exe':
    #         print(pid)
     
     
    def checkprocess(processname):
        pl = psutil.pids()
        for pid in pl:
            if psutil.Process(pid).name() == processname:
                return pid
     
    # print(isinstance(checkprocess("notepad++.exe"),int))
     
    if isinstance(checkprocess("notepad++.exe"),int):
        print("进程存在")
    else:
        print("进程不存在")

     

     2. 进程ID

    import errno
    import os
    import sys
    
    
    
    def pid_exists(pid):
        """Check whether pid exists in the current process table.
        UNIX only.
        """
        if pid < 0:
            return False
        if pid == 0:
            # According to "man 2 kill" PID 0 refers to every process
            # in the process group of the calling process.
            # On certain systems 0 is a valid PID but we have no way
            # to know that in a portable fashion.
            raise ValueError('invalid PID 0')
        try:
            os.kill(pid, 0)
        except OSError as err:
            if err.errno == errno.ESRCH:
                # ESRCH == No such process
                return False
            elif err.errno == errno.EPERM:
                # EPERM clearly means there's a process to deny access to
                return True
            else:
                # According to "man 2 kill" possible error values are
                # (EINVAL, EPERM, ESRCH)
                raise
        else:
            return True

     

    展开全文
  • 我们经常需要在后台运行一些python脚本,来监控系统或者做一些其他事情;但是 由于各种各样的问题,不是python脚本代码的问题;脚本运行过程中会挂掉。手动重启 不现实,天天耗在上面等重启。。。所以我们写一个...

    我们经常需要在后台运行一些python脚本,来监控系统或者做一些其他事情;但是 由于各种各样的问题,不是python脚本代码的问题;脚本运行过程中会挂掉。手动重启 不现实,天天耗在上面等重启。。。

    所以我们写一个shell脚本来控制 python挂了之后 自动重启:

    shell脚本如下:非常简单:

    然后我们使用该shell脚本启动python程序:启动之后:我们来测试一下:

    在后台kill -9 杀掉python的进程;看python脚本自动重启了

     

    展开全文
  • Python——获取进程信息

    万次阅读 2015-11-13 14:16:20
    #/usr/bin/env python ...#进程检测程序 import psutil import types import datetime #获取用户输入的PID try:  PID = int(raw_input('Please input PID: ')) except Exception,e: #
  • python查看进程是否运行

    万次阅读 2017-11-03 18:42:35
    啥也不说了,直接上代码:#要先打开web服务器才能发推送消息 ...#查看进程是否存在,linux系统中,使用ps -ef|grep twistd来查看进程运行情况,使用axu时会出现twistd进程查不到的情况 def isTwistdRun
  • 最近遇到进程卡死的情况,但是自己调试的过程中并不一定能复现,都是需要运行一段时间某些条件下才会触发,对于这种运行着不能破坏现场的情况,我们可以使用gdb -p和strace -p来跟踪。 首先我们用ps auxf查看我们的...
  • Python最佳学习路线

    万次阅读 多人点赞 2019-03-26 17:16:24
    如何学习Python 最近开始整理python的资料,会陆续放到博客中存档。找了几个qq群,其中有一个群78486745。后面就没怎么加群了,还是需要看官方文档为主 python语言基础:(带你熟悉python语言的特性,学会使用...
  • Linux检测FTP服务并开启FTP服务

    万次阅读 2014-07-21 15:02:59
    Linux检测FTP服务并开启FTP服务   1. 检测FTP服务是否开启   通过查询提供FTP服务的进程是否存在 Shell代码 ps -ef | grep ftp   并未找到任何包含ftp关键字的进程信息,可判断服务...
  • linux python 安装 及更换python默认版本

    万次阅读 2016-12-30 10:16:19
    绝大多数linux distribution都内置安装了python,我们只要在liunx命令行下打入python就能看到了,但是版本有点低不是我们想要的。  1、下载python   到http://www.python.org/download/上下载python时注意可能是...
  • 最新Python全栈工程师学习路线(初级+高级+大神)

    万次阅读 多人点赞 2018-11-23 13:34:44
    IT行业,技术要比学历、年龄、从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础、Python web开发、Python爬虫、Python数据分析这四大方面。 零基础学习需要要从如下几...
  • Python最佳学习路线图

    万次阅读 多人点赞 2018-08-07 18:21:48
    python语言基础 (1)Python3入门,数据类型,字符串 (2)判断/循环语句,函数,命名空间,作用域 (3)类与对象,继承,多态 (4)tkinter界面编程 (5)文件与异常,数据处理简介 (6)Pygame实战飞机大战,2048 ...
  • 四、Python Signal 信号

    万次阅读 2014-04-25 09:55:25
    信号的概念 信号(signal)-- 进程之间通讯的方式,是一种软件中断。...SIGINT 终止进程 中断进程 (control+c) SIGTERM 终止进程 软件终止信号 SIGKILL 终止进程 杀死进程 SIGALRM 闹钟信号  
  • python实现linux下的简单进程监控

    千次阅读 2017-07-21 20:03:38
    python确实很强大哦~,要想学好python就得自己多动手堆代码! 无聊写了一个进程监控的脚本,就当做是练习。其实最终实现的功能也很简单。 记录如下: 0x00: 首先这种写法要学会哦,虽然不知道具体有什么用吧,...
  • 实例1: 点击(此处)折叠或打开 #!/usr/bin/env python import subprocess import datetime import re import sys
  • linux shell脚本监控进程崩溃自动重启

    千次阅读 2017-06-08 16:13:52
    linux shell脚本监控进程崩溃自动重启,由于目前有Python实现的通讯组件时不时会异常中断,在还没有找到问题的解决办法时先暂时用shell监控并自动重启处理。 # ! /bin/shbasepath=$(cd `dirname $0`; pwd)while true...
  • 这里借助python的psutil这个包可以很方便的监控指定进程号(PID)的cpu和内存使用情况 代码 process_monitor.py import sys import time import psutil # get pid from args if len(sys.argv) &l...
  • 解决Linux关闭终端(关闭SSH等)后运行的程序自动停止

    万次阅读 多人点赞 2016-10-10 15:00:20
    `我关闭这个SSH之后,该服务不可用,再次登入到服务器,已经没有这个python进程为此我写了一个测试程序来描述此问题///////////////////// // hello.c ///////////////////// #include #include <stdlib.h>#...
  • stackoverflow上有一段脚本:
1 2 3 4 5 ... 20
收藏数 22,701
精华内容 9,080
关键字:

python检测linux进程