首页 文章 精选 留言 我的

精选列表

搜索[上下文信息],共10023篇文章
优秀的个人博客,低调大师

python监控服务器信息

本文转载自http://www.linuxtone.org/thread-29256-1-1.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 #coding:utf-8 #by_wangyi #by:QQ917611 #QQ群:251289157 import psutil import time import os import sys import re stats = [ 0 , 1 ] stoptimes = 2 if len (sys.argv)> 1 : interface = sys.argv[ 1 ] else : interface = 'eth0' class Monitor: def __init__( self ,user_uid,stoptime): self .user_uid = user_uid self .stoptime = stoptime if user_uid = = 0 : print "请使用root用户运行此脚本" exit() def meminfo( self ,used_vm,free_vm,buffers,cached): total = psutil.virtual_memory().total / 1024 / 1024 used = used_vm - (buffers + cached) free = total - used print "totalmem:%sM" % total print "usedmem:%sM" % used print "freemem:%sM" % free def diskinfo( self ): list = [] for i in psutil.disk_partitions(): list .append(i[ 1 ]) for k in range ( len ( list )): total = "%-15s分区\ttotal:%s" % ( list [k],psutil.disk_usage( list [k]).total / 1024 / 1024 / 1024 ) used = "used:%s" % (psutil.disk_usage( list [k]).used / 1024 / 1024 / 1024 ) free = "free:%s" % (psutil.disk_usage( list [k]).free / 1024 / 1024 / 1024 ) print "%sG\t%sG\t%sG" % (total,used,free) def cpuinfo( self ): with open ( '/proc/loadavg' )asf: loadavg = f.read() print "5分钟cpuload:%s" % (loadavg.split()[ 0 ]) print "10分钟cpuload:%s" % (loadavg.split()[ 1 ]) print "15分钟cpuload:%s" % (loadavg.split()[ 2 ]) print "当前运行proc:%s" % (loadavg.split()[ 3 ].split( '/' )[ 0 ]) print "最后运行pid:%s" % (loadavg.split()[ 4 ]) print '当前cpu%s' % (psutil.cpu_percent()) def flowinfo( self ): f = open ( '/proc/net/dev' , 'r' ).readlines() for i in f: if re.search(interface,i): rx = i.split( ':' )[ 1 ].split()[ 0 ] tx = i.split()[ 8 ] stats[ 0 ] = rx stats[ 1 ] = tx used_vm = psutil.virtual_memory().used / 1024 / 1024 free_vm = psutil.virtual_memory().free / 1024 / 1024 buffers = psutil.virtual_memory().buffers / 1024 / 1024 cached = psutil.virtual_memory().cached / 1024 / 1024 if __name__ = = '__main__' : user_uid = os.geteuid() stoptime = 2 task = Monitor(user_uid,stoptime) print "servermeminfo:\n" task.meminfo(used_vm,free_vm,buffers,cached) print "==================================" print "serverdiskinfo:\n" task.diskinfo() print "===================================" print "servercpuinfo:\n" task.cpuinfo() print "===================================" print "serverflowinfo:\n" task.flowinfo() RX_one = float (stats[ 0 ]) TX_one = float (stats[ 1 ]) time.sleep(stoptimes) task.flowinfo() RX_two = float (stats[ 0 ]) TX_two = float (stats[ 1 ]) RX_rate = round ( float (RX_two - RX_one) / 1024 , 2 ) TX_rate = round ( float (TX_two - TX_one) / 1024 , 2 ) print time.strftime( "%Y-%m-%d%H:%M:%S" ), 'RXbytes=' ,RX_rate, 'KB' print time.strftime( "%Y-%m-%d%H:%M:%S" ), 'TXbytes=' ,TX_rate, 'KB'

优秀的个人博客,低调大师

android用户界面-提示信息Toast

在程序中创建toast的步骤说明如下 1、调用toast的静态方法makeText()添加现实文本和时长。 2、调用toast的show()显示。 实例如下: /Chapter04_UI_Toast/src/com/amaker/test/MainActivity.java 代码 packagecom.amaker.test; importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.Toast; publicclassMainActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ privateButtonb1,b2; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); b1=(Button)findViewById(R.id.Button01); b2=(Button)findViewById(R.id.Button02); finalintl=Toast.LENGTH_LONG; finalints=Toast.LENGTH_SHORT; finalStrings1="我多显示一会儿!"; finalStrings2="我少显示一会儿!"; b1.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ Toastt1=Toast.makeText(getApplicationContext(),s1,l); t1.show(); } }); b2.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ Toastt2=Toast.makeText(getApplicationContext(),s2,s); t2.show(); } }); } } 本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1080701

优秀的个人博客,低调大师

Android 得到照片位置信息

目前Android SDK定义的Tag有: TAG_DATETIME时间日期 TAG_FLASH闪光灯 TAG_GPS_LATITUDE纬度 TAG_GPS_LATITUDE_REF纬度参考 TAG_GPS_LONGITUDE经度 TAG_GPS_LONGITUDE_REF经度参考 TAG_IMAGE_LENGTH图片长 TAG_IMAGE_WIDTH图片宽 TAG_MAKE设备制造商 TAG_MODEL设备型号 TAG_ORIENTATION方向 TAG_WHITE_BALANCE白平衡 String sFileName="/sdcard/DCIM/Camera/1.JPG"; try{ ExifInterface exif = new ExifInterface(sFileName); String sModel=exif.getAttribute(ExifInterface.TAG_MODEL); Toast.makeText(PhotoCatActivity.this,"1.JPG Exif:"+sModel, Toast.LENGTH_SHORT).show(); } catch(Exception ee){ } 经纬度得到的数据格式是 "num1/denom1,num2/denom2,num3/denom3",如何得到真正的经纬度呢? public Location exif2Loc(String flNm) { String sLat = "", sLatR = "", sLon = "", sLonR = ""; try { ExifInterface ef = new ExifInterface(flNm); sLat = ef.getAttribute(ExifInterface.TAG_GPS_LATITUDE); sLon = ef.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); sLatR = ef.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); sLonR = ef.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); } catch (IOException e) {return null;} double lat = dms2Dbl(sLat); if (lat > 180.0) return null; double lon = dms2Dbl(sLon); if (lon > 180.0) return null; lat = sLatR.contains("S") ? -lat : lat; lon = sLonR.contains("W") ? -lon : lon; Location loc = new Location("exif"); loc.setLatitude(lat); loc.setLongitude(lon); return loc; } //------------------------------------------------------------------------- double dms2Dbl(String sDMS){ double dRV = 999.0; try { String[] DMSs = sDMS.split(",", 3); String s[] = DMSs[0].split("/", 2); dRV = (new Double(s[0])/new Double(s[1])); s = DMSs[1].split("/", 2); dRV += ((new Double(s[0])/new Double(s[1]))/60); s = DMSs[2].split("/", 2); dRV += ((new Double(s[0])/new Double(s[1]))/3600); } catch (Exception e) {} return dRV; } 如何根据经纬度得到具体的地址? public final String getAddress(double latitude, double longitude) { Geocoder gc = new Geocoder(this, Locale.getDefault()); StringBuilder sb = new StringBuilder(); try { List add = gc.getFromLocation(latitude, longitude, 1); if (add.size() > 0) { Address ad = add.get(0); sb.append(ad.getAddressLine(0)); sb.append(ad.getAddressLine(1)); sb.append(ad.getAddressLine(2)); } } catch (Exception e) { } return sb.toString(); } 本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/p/7279984.html ,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册