天津市网站制作 公司,做网站与网店运营,网站建设属于哪个专业,企业网站seo怎么做问题
用python监控进程占用硬件资源时#xff0c;手动执行正常运行#xff0c;定时任务执行出错 在centos的定时任务中#xff0c;用python的os模块执行top命令时终端没有输出
cmd top -d 1 -n 1 -p {} | grep -E PID|{}|%Cpu|buff/cache .format(process_id…问题
用python监控进程占用硬件资源时手动执行正常运行定时任务执行出错 在centos的定时任务中用python的os模块执行top命令时终端没有输出
cmd top -d 1 -n 1 -p {} | grep -E PID|{}|%Cpu|buff/cache .format(process_id, process_id, )
sys_out os.popen(cmd)
sys_out sys_out.read()修复
top -n 1不能在 crontab中使用要加一个参数top -b -n 1用 /bin/top 代替 top 命令
cmd /bin/top -b -d 1 -n 1 -p {} | grep -E PID|{}|%Cpu|buff/cache .format(process_id, process_id, )sys_out os.popen(cmd)
sys_out sys_out.read() 引用
https://blog.51cto.com/zdz8207/3552214
源代码 def record_process_occupy(process_id0, process_log_file, ):记录一条这个进程的资源占用情况:param process_id: 进程的ID:param log_file: 保存top输出的文件:return: Nonecmd /bin/top -b -d 1 -n 1 -p {} | grep -E PID|{}|%Cpu|buff/cache .format(process_id, process_id, )sys_out os.popen(cmd)print(cmd)sys_out sys_out.read()sys_out sys_out.replace(\x1b[7m, )sys_out sys_out.replace(\x1b(B\x1b[m\x1b[39;49m\x1b(B\x1b[m\x1b[39;49m\x1b[K, )sys_out sys_out.replace(\x1b(B\x1b[m\x1b[39;49m\x1b[K, )sys_out sys_out.replace(\x1b(B\x1b[m\x1b[39;49m, )sys_out sys_out.replace(\x1b(B\x1b[m, )sys_out sys_out.replace(\x1b[1m, )sys_out sys_out.split(\n)assert len(sys_out) 4# print(sys_out)first_line time,first_line us,sy,ni,id,wa,hi,si,st,first_line total, free, used, buff/cache,first_line PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME,COMMANDline ,.join([datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S),,.join([x for x in sys_out[0].replace(,, ).split( ) if x.replace(., ).isdigit()]), # cpu,.join([x for x in sys_out[1].replace(,, ).split( ) if x.replace(., ).isdigit()]), # mem,.join([x for x in sys_out[3].split( ) if x]), # 进程])# print(first_line)# print(line)print(process_log_file, process_log_file)if not process_log_file:process_log_file os.path.join(BACKUP_PATH, process_{}_resource_occupy.csv.format(process_id))print()print(process_log_file:, process_log_file)is_new_file not os.path.exists(process_log_file)with open(process_log_file, a) as f:if is_new_file:f.write(first_line \n)f.write(line \n)return True