当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪有关lsof 命令的一些知识      lsof命令 可以列出被进程所打开的文件的信息。 被打开的文件可以是: 1.普通的文件 2.目录 3.网络文件系统的文件 4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链接 8.底.........
    ▪linux下的下载利器wget的使用      介绍: wget是一个下载文件的工具,它用在命令行下。 对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。 如果我们使用.........
    ▪ps查看各个进程的内存使用情况      ps查看各个进程的内存使用情况,有需要的朋友可以参考下。 首先,看下/proc/PID/stat文件的内容: [root@localhost ~]# cat /proc/6873/stat 6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5.........

[1]有关lsof 命令的一些知识
    来源: 互联网  发布时间: 2013-12-24

lsof命令
可以列出被进程所打开的文件的信息。

被打开的文件可以是:
1.普通的文件
2.目录
3.网络文件系统的文件
4.字符设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在里面,大部分的东西都是被当做文件的…..还有其他很多

如何使用lsof(我们以案例的形式来介绍lsof 命令的使用)

1.列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

2. 查看谁正在使用某个文件
lsof /filepath/file

3.递归查看某个目录的文件信息
lsof +D /filepath/filepath2/
备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法
lsof | grep ‘/filepath/filepath2/’

5. 列出某个用户打开的文件信息
lsof -u username
备注: -u 选项,u其实是user的缩写

6. 列出某个程序所打开的文件信息
lsof -c mysql
备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了

7. 列出多个程序多打开的文件信息
lsof -c mysql -c apache

8. 列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql

9. 列出除了某个用户外的被打开的文件信息
lsof -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

10. 通过某个进程号显示该进行打开的文件
lsof -p 1

11. 列出多个进程号对应的文件信息
lsof -p 123,456,789

12. 列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1

13 . 列出所有的网络连接
lsof -i

14. 列出所有tcp 网络连接信息
lsof -i tcp

15. 列出所有udp网络连接信息
lsof -i udp

16. 列出谁在使用某个端口
lsof -i :3306

17. 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80

18. 列出某个用户的所有活跃的网络端口
lsof -a -u test -i

19. 列出所有网络文件系统
lsof -N

20.域名socket文件
lsof -u

21.某个用户组所打开的文件信息
lsof -g 5555

22. 根据文件描述列出对应的文件信息
lsof -d description(like 2)

23. 根据文件描述范围列出文件信息
lsof -d 2-3


    
[2]linux下的下载利器wget的使用
    来源: 互联网  发布时间: 2013-12-24

介绍:
wget是一个下载文件的工具,它用在命令行下。
对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。

如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。

wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。

本文以实例的形式为大家介绍如何使用wget命令,希望对大家有所帮助。

1、使用wget下载单个文件
以下的例子是从网络下载一个文件并保存在当前目录
wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

2、使用wget -O下载并以不同的文件名保存
wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。
错误:下面的例子会下载一个文件并以名称download.php?id=1080保存
wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
即使下载的文件是zip格式,它仍然以download.php?id=1080命令。

正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:
wget -O http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz

3、使用wget –limit -rate限速下载
当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。
wget –limit-rate=300k http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz

4、使用wget -c断点续传
使用wget -c重新启动下载中断的文件:
wget -c http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。

5、使用wget -b后台下载
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。
wget -b http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
Continuing in background, pid 1840.
Output will be written to `wget-log’.

可以使用以下命令来察看下载进度
tail -f wget-log

6、伪装代理名称下载
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。
wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接

7、使用wget –spider测试下载链接
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。
wget –spider URL

如果下载链接正确,将会显示
wget –spider URL
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled — not retrieving.
这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误

wget –spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 404 Not Found
Remote file does not exist — broken link!!!
你可以在以下几种情况下使用spider参数:

定时下载之前进行检查
间隔检测网站是否可用
检查网站页面的死链接

8、使用wget –tries增加重试次数
如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。
wget –tries=40 URL

9、使用wget -i下载多个文件
首先,保存一份下载链接文件
cat > a.txt
a1
a2
a3
a4
接着使用这个文件和参数-i下载
wget -i a.txt

10、使用wget –mirror镜像网站
下面的例子是下载整个网站到本地。
wget –mirror -p –convert-links -P ./LOCAL URL
–miror:开户镜像下载
-p:下载所有为了html页面显示正常的文件
–convert-links:下载后,转换成本地的链接
-P ./LOCAL:保存所有文件和目录到本地指定目录

11、使用wget –reject过滤指定格式下载
你想下载一个网站,但你不希望下载图片,你可以使用以下命令。
wget –reject=gif url

12、使用wget -o把下载信息存入日志文件
你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:
wget -o download.log URL

13、使用wget -Q限制总下载文件大小
当你想要下载的文件超过5M而退出下载,你可以使用以下命令:
wget -Q5m -i filelist.txt
注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。

14、使用wget -r -A下载指定格式文件
可以在以下情况使用该功能:
下载一个网站的所有图片
下载一个网站的所有视频
下载一个网站的所有PDF文件
wget -r -A.pdf url

15、使用wget FTP下载
你可以使用wget来完成ftp链接的下载。
使用wget匿名ftp下载:
wget ftp-url

使用wget用户名和密码认证的ftp下载:
wget –ftp-use


    
[3]ps查看各个进程的内存使用情况
    来源: 互联网  发布时间: 2013-12-24

ps查看各个进程的内存使用情况,有需要的朋友可以参考下。

首先,看下/proc/PID/stat文件的内容:
[root@localhost ~]# cat /proc/6873/stat
6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0 0 0 0 17 0 0 0 [root@localhost ~]#

参数 解释
pid=6873 进程(包括轻量级进程,即线程)号
comm=a.out 应用程序或命令的名字
task_state=R 任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead
ppid=6723 父进程ID
pgid=6873 线程组号
sid=6723 c该任务所在的会话组ID
tty_nr=34819(pts/3) 该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号
tty_pgrp=6873 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
task->flags=8388608 进程标志位,查看该任务的特性
min_flt=77 该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
cmin_flt=0 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
maj_flt=0 该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
cmaj_flt=0 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
utime=1587 该任务在用户态运行的时间,单位为jiffies
stime=1 该任务在核心态运行的时间,单位为jiffies
cutime=0 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime=0 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority=25 任务的动态优先级
nice=0 任务的静态优先级
num_threads=3 该任务所在的线程组里线程的个数
it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time=5882654 该任务启动的时间,单位为jiffies
vsize=1409024(page) 该任务的虚拟地址空间大小
rss=56(page) 该任务当前驻留物理地址空间的大小
Number of pages the process has in real memory,minu 3 for administrative purpose.
这些页可能用于代码,数据和栈。
rlim=4294967295(bytes) 该任务能驻留物理地址空间的最大值
start_code=134512640 该任务在虚拟地址空间的代码段的起始地址
end_code=134513720 该任务在虚拟地址空间的代码段的结束地址
start_stack=3215579040 该任务在虚拟地址空间的栈的结束地址
kstkesp=0 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip=2097798 指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
pendingsig=0 待处理信号的位图,记录发送给进程的普通信号
block_sig=0 阻塞信号的位图
sigign=0 忽略的信号的位图
sigcatch=082985 被俘获的信号的位图
wchan=0 如果该进程是睡眠状态,该值给出调度的调用点
nswap 被swapped的页数,当前没用
cnswap 所有子进程被swapped的页数的和,当前没用
exit_signal=17 该进程结束时,向父进程所发送的信号
task_cpu(task)=0 运行在哪个CPU上
task_rt_priority=0 实时进程的相对优先级别
task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程

然后我们知道进程的内存分为虚拟和物理内存两部分,因此可以如下查看:
ps -p 21530 -o rss,vsize | awk 'NR==2{printf "RES:%.2fm,VIR:%.2fm\n", $1/1024,$2/1024}'
假设一个进程的PID为21530,这样就能查看他占用的物理内存和虚拟内存了。
然后要查看所有进程的内存排名的话,可以封装一个脚本,如下:
 

代码如下:

#!/bin/bash
function show ()
{
    ps aux  | awk '{printf "%s %d %d\n", "/proc/"$2"/cmdline", $5/1024, $6/1024}' | while read name vm res
    do
        if [ $vm -eq 0 ]
        then
            continue
        fi
  
        if [ $res -eq 0 ]
        then
            continue
        fi

        if [ -f $name ]
        then
            cmd=`cat $name`
            echo "$cmd@$vm@$res"
        fi
    done
}

show
 

保存成txt文件,然后进行sort就可以按照虚拟内存或者物理内存查看排名了,或者用windows的excel打开排序都行。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3