在项目过程中发现有人在kill我的进程。查找起来太麻烦了。。所以就想了一个办法,在系统的killall基础上封装一层。
原理:
用python脚本写一个兼容性的killall
把系统原来的killall放到/bin/sys/killall里面
使用方式
tail -f /var/log/killall_log
脚本内容如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import sys
from time import strftime,gmtime
if os.path.exists('/var/log/killall_log') and int(os.path.getsize('/var/log/killall_log'))>1024*1024*1024:
killall_log=open('/var/log/killall_log', 'w')
else:
killall_log=open('/var/log/killall_log', 'a+')
killall_str=open("/proc/"+str(os.getppid())+"/cmdline").read()+" exec killall"
killall_cmd="/bin/sys/killall"
for i in range(1, len(sys.argv)):
killall_cmd=killall_cmd+" "+str(sys.argv[i])
killall_str=killall_str+" "+str(sys.argv[i])
killall_str=killall_str+" ->"+strftime("%Y-%m-%d %H:%M:%S", gmtime())+"\n"
killall_log.write(killall_str)
killall_log.close()
os.system(killall_cmd)
主要知识背景
python如何获取自己的父pid。。系统调用就OK了
/proc文件中根据pid找到进程的命令行参数(/proc/pidxx/cmdline)