
如果是要监听的服务端口,我觉得用 l 参数比较好。
然后如下三种方式请参考。
netstat -nlp | grep -w 端口号 | sed -r 's# ()/#\1#'
netstat -nlp | sed -nr '/端口号/s# ()/#\1#p'
netstat -nlp | awk -F'[ /]' '/端口号/{print $(NF-2)}'
@echo off
for /f "tokens=2 delims= " %%a in('tasklist^|find /i "RavMonDexe"') do (
taskkill /f /pid %%a
ntsd -c q -p %%a
)
上面这个能自动查找RavMonDexe进程的PID,并通过2种方式结束此进程
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0 );
PROCESSENTRY32 procentry=sizeof(PROCESSENTRY32);
BOOL bFlag=Process32First( hSnapShot, &procentry ) ;
while( bFlag )
{
if(stricmp(procentryszExeFile, "你的程序名 ")==0)
processid=procentryth32ProcessID; //找到
bFlag=Process32Next(hSnapShot,&procentry);
}
注意一个程序可能有几个实例同时运行,所以可能同时找到几个ID。
性能评估-disk IO
一、磁盘原理
设备又名I/O设备,泛指计算机系统中除主机以外的所有外部设备。
11 计算机分类
111 按照信息传输速度分:
1低速设备:每秒传输信息仅几个字节或者百个字节,如:键盘、鼠标等
2中速设备:每秒传输信息数千个字节或者数万个字节,如:打印机
3高速设备:每秒传输信息数数10万个字节,如:磁盘
112 按照信息交换单位分
1字符设备:以字符为输入/输出信息的单位,如:键盘,显示终端
2块设备:以数据块为单位输入/输出信息,如:磁盘
注:何为数据块:磁盘中常以一个扇区作为一个数据块,一个扇区就是一个读写单位
一、磁盘性能指标
1、测试磁盘性能,使用命令:dd
因数据写入磁盘,可能是缓存写,直接写(不经过缓冲区直接写入磁盘),顺序io,随机io的区别所以,这种dd测试并不是很准确。
这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估
在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO
通过以上方法就可以大致知道,磁盘的性能了。
从这条命令中:我们知道:IOPS(每秒io请求数)是:691。当前读速率是:044MB/s 写速率是:036MB/s
得出结论有:
每秒共有80个IO请求(IOPS=r/s+w/s),以写为主
io服务时间为156毫秒,平均等待服务时间为353毫秒
io队列深度为:24个
1、vmstat Block in /out
bi+bo过大,而且vmstat cpu wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
2、IOwait time
iostat iowait% 小于25%,说明IO性能处于良好的状态;
3、util 磁盘使用率
一秒中有百分之多少的时间用于 I/O *** 作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)
(1)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
(2)idle小于70% IO压力就较大了,一般读取速度有较多的wait。
(3)同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
4、await 平均等待时间
平均每次设备I/O *** 作的等待时间 (毫秒)即 delta(ruse+wuse)/delta(rio+wio)
await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。
(1)await 的参数要多和 svctm 来参考。差的过高就一定有 IO 的问题。
(2)如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
(3)如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用。
5、avgqu-sz 平均I/O队列长度
(1)如果avgqu-sz比较大,也表示有大量io在等待。
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次 *** 作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如果数据拿的大,IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是讲,读写速度是这个来决定的。
由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。
里面最重要的参数,actual disk read 和actual disk write 分别代表实际磁盘读写速度
然后下面,我们可以根据每一列进行io排序,就能知道io具体消耗是哪个进程导致的。
注意:TID代表的是线程号,如果是多线程的话,可以借助command 判断是哪个进程,也可以根据ps -eLf | grep TID 来获取到他的父进程号。
221 topas 获取是否存在io等待
仔细观察 “Wait”(在 CPU 部分的上部),如果改值较大则表示io可能存在瓶颈
222 获取io队列、IOPS、响应时间等
登录 AIX *** 作系统,输入 topas,然后按 D,会出现如下界面:
在上图中,hdisk2 的TPS 即为磁盘的 IOPS(每秒发出的io请求数),为 655;KBPS 即为磁盘每秒的吞吐量,为 1639M;尤其是应该检查 ART/AWT 和 MRT/MWT,它们表示磁盘读写 *** 作的平均和最大等待时间。比较高的值表明磁盘非常忙。AQW 表示对 I/O 设备的每个请求的平均等待队列数量。同样,比较高的值表明磁盘的速度无法跟上请求的速度。
223 查看产生瓶颈的原因
1可以使用其他工具(如 filemon、fileplace、lsof 或 lslv)帮助确定究竟是哪个进程、适配器或者文件系统导致了瓶颈。
2可以使用ps -ef | grep "pid" 来查看当前进程所在执行的任务
find -type f -size +100M -print0 | xargs -0 du -h | sort -nr
1理解
uid:uid 对于 应用来说其实就是指我们当前应用是在那个 group 组内
就是指这个shareuserid,一个组内的uid相同,,并且具有相同的uid的应用才能共享用户内存
pid:是指每个进程在liunx下的 进程的id 是唯一的。
2获取
获取uid:
PackageManager pm = getPackageManager();
ApplicationInfo ai = pmgetApplicationInfo("comspeedsoftwarerootexplorer", PackageManagerGET_ACTIVITIES);
Logd("!!", "!!" + aiuid);
获取pid:
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List<ActivityManagerRunningAppProcessInfo> list = activityManagergetRunningAppProcesses();
for(ActivityManagerRunningAppProcessInfo runningAppProcessInfo : list){
if(runningAppProcessInfopid == pid){
processName = runningAppProcessInfoprocessName;
}
}
以上就是关于linux shell编程 根据端口获取进程pid 直接用命令netstat -anp |grep 端口号 在shell中如何获取PID全部的内容,包括:linux shell编程 根据端口获取进程pid 直接用命令netstat -anp |grep 端口号 在shell中如何获取PID、高手回答 弄个批处理 自动获取PID 结束进程、c++中怎样根据进程名得到进程pid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)