pid进程相关操作

1.执行py文件生成进程的命令如下:

/data/anaconda3/envs/python_env36/bin/python /data/yzx/sale_predicts_allenv/rocketmq_file/task_consumer.py prod

2.未运行该文件,查看该文件相关进程:
可以看到含有一个pid为10754的查询进程,且该进程号随时变化,task_consumer.py文件并未运行

[root@node01 ~]# ps -ef|grep rocketmq_file/task_consumer.py
root     10754  3606  0 21:28 pts/0    00:00:00 grep --color=auto rocketmq_file/task_consumer.py

可以选择忽视掉查询进程,命令如下:

ps -ef|grep -v grep|grep rocketmq_file/task_consumer.py

3.运行该文件后,查看相关进程
可以看到,多了一个pid为6373的进程,该进程即task_consumer.py文件运行产生

[root@node01 ~]# ps -ef|grep rocketmq_file/task_consumer.py
root      6373  6281  1 21:19 pts/3    00:00:04 /data/anaconda3/envs/python_env36/bin/python /data/yzx/sale_predicts_allenv/rocketmq_file/task_consumer.py prod
root      7553  3606  0 21:24 pts/0    00:00:00 grep --color=auto rocketmq_file/task_consumer.py

4.删除查询得到的进程
获取查询得到的进程号,并删除相关进程(python进程会删除,grep查询进程依旧存在)

[root@node01 ~]# ps -ef|grep rocketmq_file/task_consumer.py |awk '{print $2}'|xargs kill -9

5.获取进程相关信息

import psutil
#获取pid对应的应用名
p = psutil.Process(PID)
print('Process name : %s' % p.name())

#获取进程bin路径
print('Process bin  path : %s' % p.exe())

#获取pid对应的路径
print('Process path : %s' % p.cwd())

#进程状态
print('Process status : %s' % p.status())

#进程运行时间
print('Process creation time : %s' % datetime.datetime.fromtimestamp(p.create_time()).strftime("%Y-%m-%d %H:%M:%S")) 

6.判断某python文件是否运行,如果未运行则启动

import subprocess as sb

# 筛选rocketmq_file/task_consumer.py相关进程(结果包含查询进程和可能正在运行的目标进程)
res = sb.getoutput("ps -ef|grep rocketmq_file/task_consumer.py")
print(res)
# 获取筛选进程对应的进程号,并转为list形式
pid_list = sb.getoutput("ps -ef|grep rocketmq_file/task_consumer.py |awk '{print $2}'")
print(pid_list.split())

# 如果查询到相关进程
if "rocketmq_file/task_consumer.py" in res and "python" in res:
    print("process is running!")
else:
    sb.getoutput("nohup /data/anaconda3/envs/python_env36/bin/python /data/yzx/sale_predicts_allenv/rocketmq_file/task_consumer.py prod &")
    print("process is stop and start now!")

注意:sb.getoutput()函数运行py文件和python命令行形式输出有差异(命令行形式缺少一些输出)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值