经常使用Linux 服务器命令--各类性能指标命令

 

 

若是你想知道你的服务器正在作干什么,你就须要了解一些基本的命令,一旦你精通了这些命令,那你就是一个专业的 Linux 系统管理员。java

监控命令##

iostat###

iostat命令用来显示存储系统的详细信息,一般用它来监控磁盘 I/O 的状况。要特别注意 iostat 统计结果中的 %iowait 值,太大了代表你的系统存储系统性能低下。linux

命令: iostat -m -x 1 1000ios

能够观察对应的CPU中的%iowait数据,除此以外iostat还提供了一些更详细的I/O状态数据,好比比较重要的有:nginx

  1. **avgqu-sz : ** The average queue length of the requests that were issued to the device. (磁盘队列的请求长度,正常的话2,3比较好。能够和cpu的load同样的理解)。
  2. **await : **The average time (in milliseconds) for I/O requests issued to the device to be served. (表明一个I/O操做从wait到完成的总时间)。
  3. svctm和%util都是表明处理该I/O请求花费的时间和CPU的时间比例。 判断是否瓶颈时,这两个参数不是主要的。
  4. r/s w/s 和 rMB/s wMB/s 都是表明当前系统处理的I/O的一些状态,前者是咱们常说的tps,后者就是吞吐量。这也是评价一个系统的性能指标。

meminfo 和 free###

Meminfo 可以让你获取内存的详细信息,你可使用 cat 和 grep 命令来显示 meminfo 信息:web

另外你可使用 free 命令来显示动态的内存使用信息,free 只是给你大概的内存信息,而 meminfo 提供的信息更加详细。ubuntu

mpstat###

mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看全部CPU的平均情况信息,并且可以查看特定CPU的信息。windows

mpstat的语法以下:mpstat [-P {|ALL}] [internal [count]],参数的含义以下:安全

-P {|ALL} 表示监控哪一个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一块儿使用
当没有参数时,mpstat则显示系统启动之后全部信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。

命令:mpstat -P ALL 1 1000ruby

 

CPU 处理器IDbash

user 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100

nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100

system 在internal时间段里,核心时间(%) (system/total)*100

iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100

irq 在internal时间段里,硬中断时间(%) (irq/total)*100

soft 在internal时间段里,软中断时间(%) (softirq/total)*100

idle 在internal时间段里,CPU除去等待磁盘IO操做外的由于任何缘由而空闲的时间闲置时间(%)(idle/total)*100

intr/s 在internal时间段里,每秒CPU接收的中断的次数intr/total)*100

CPU总的工做时间=total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq

user=user_cur – user_pre

total=total_cur-total_pre

其中_cur 表示当前值,_pre表示interval时间前的值。上表中的全部值可取到两位小数点。

注意:这里面的%iowait列,CPU等待I/O操做所花费的时间。这个值持续很高一般多是I/O瓶颈所致使的。经过这个参数能够比较直观的看出当前的I/O操做是否存在瓶颈。

netstat###

Netstat 和 ps 命令相似,是 Linux 管理员基本上天天都会用的工具,它显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些经常使用的参数:

 

nmon###

Nmon, 是 Nigel's Monitor 的缩写,是一个使用很广泛的开源工具,用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具:

 

要运行 nmon,你能够在命令行中启动它,而后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也能够使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于往后分析。-----在每日的监控工做中,我发现 nmon 是我最经常使用的工具。

pmap###

pmap 命令用来报告每一个进程占用内存的详细状况,可用来看是否有进程超支了,该命令须要进程 id 做为参数

ps 和 pstree###

ps 和 pstree 命令是 Linux 系统管理员最好的朋友,均可以用来列表正在运行的全部进程。 ps 告诉你每一个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可使用 kill 来杀掉它。
 
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid

这个命令的做用,主要是能够获取到对应一个进程下的线程的一些信息。 好比你想分析一下一个java进程的一些运行瓶颈点,能够经过该命令找到全部当前Thread的占用CPU的时间,也就是这里的最后一列。

 

好比这里找到了一个 TID : 6603,所占用的TIME时间最高。经过 printf "%x\n" 6603 首先转化成16进制, 继续经过 jstack命令dump出当前的jvm进程的堆栈信息。 经过 Grep命令便可以查到对应16进制的线程id信息,很快就能够找到对应最耗CPU的代码块在哪。

简单的解释下,jstack下这一串线程信息内容:"qtp812487918-32" prio=10 tid=0x00007f69b4430000 nid=0x19cb waiting on condition [0x00007f69a5b86000]

pidstat###

命令: pidstat -p pid -u -d -t -w -h 1 1000

至关实用的一个命令,能够 基于当个进程分析对应的性能数据,包括CPU,I/O,IR , CS等,能够方便开发者更加精细化的观察系统的运行状态。不过pidstat貌似是在2.6内核的一些较新的版本才有,须要安装sysstat包。在ubuntu下,能够经过 sudo apt-get install sysstat进行安装。
 
pidstat强大之处在于它不只能够 监视进程的性能状况,也能够 监视线程的性能状况
命令:pidstat -p 3287 -r 1 1000 查看进程内存监控

dstat###

命令:dstat -y --tcp 1 1000

 

经过dstat --tcp能够比较方便的看到当前的tcp的各类状态,不须要每次netstat -nat去看

tcpdump###

tcpdump 是一个简单、可靠的网络监控工具,用来作基本的协议分析,看看那些进程在使用网络以及如何使用网络。固然,若是你要获取跟详细的信息,你应该使用 Wireshark。

top###

top 命令显示当前的活动进程,默认它是按消耗 CPU 的厉害程度进行排序,每5秒钟刷新一次列表,你也能够选择不一样的排序方式,例如 m 是按内存占用方式进行排序的快捷键。

 命令:top -Hp pid

 

能够实时的跟踪并获取指定进程中最耗cpu的线程。再用ps命令中提到的jstack方法提取到对应的线程堆栈信息。

默认状况下,Top 被调用时使用交互模式。在此模式下,Top 无限期运行,并能够经过按键从新定义 Top 的运行方式。可是,有时你须要对 Top 的输出进行后续处理,但这在此模式下难以实现。解决方法?使用批处理模式。

命令:top -b

哈,等等,它是不断重复运行的,同交互模式同样。不用担忧,你可使用 -n 限制重复数量。因此,若是你但愿得到一次性结果,键入:

命令:top -b -n 1

这一模式的真正优点在于你能够很容易的与 at 或 cron 命令结合。它们的结合,使得 Top 能够在特定时间对资源使用状态进行快照。例如,使用 at ,咱们能够设定 top 在一分钟以后运行。

细心的读者可能会问“在建立新任务时,为何我须要在调用 Top 以前设置环境变量 TERM?”。答案是,Top 运行时须要此变量,但“at”在定时调用时并不会保留它。同上面那样简单的设置能够确保 Top 正常运行。

如何监控制定进程
有时,咱们只对几个进程感兴趣,可能只是所有进程中的4个或5个。例如,若是你想要监测进程标识(PID)为4360和4358的进程,你须要键入:top -p 19647,10065

看起来很简单,只须要使用 -p 列出全部须要的 PID,并使用逗号间隔或简单的屡次使用 -p便可。

另外一种多是监测拥有特定用户标识(UID)的进程。应对此需求,你可使用 -u 或 -U 选项。假设用户“johndoe”的 UID 为500,键入:top -u taomk

或:top -U taomk

结论是,你既能够纯使用用户名,也可以使用数字 UID。“-u,-U?这二者不一样?”是的。同多数其它 GNU 工具同样,选项是大小写敏感的。-U 意味着 Top 将会搜索有效的、真实的、被保存的以及文件系统的 UID 进行匹配,而 -u 仅匹配有效的用户id。要知道,每个 Linux 进程在运行时都是用有效用户标识(effective UID),而其中有些并不等同真实用户标识。多数状况是,对相似文件系统权限或操做系统功能这项的有效用户标识感兴趣的人将会检查它,而不是 UID。

不一样于 -p 仅用于命令行选项,-U 和 -u 均可以在交互模式中使用。同你猜想的同样,键入‘U’或‘u’能够依据用户名过滤进程。一样的规则依然适用,‘u’为有效用户标识,‘U’为 真实/有效/保存/文件系统用户名。你将被要求键入用户名或数字 UID。

sar###

sar命令也是Linux系统中重要的性能监测工具之一,它能够周期性地对内存和CPU使用状况进行采样

命令:sar -u 1 3 查看CPU使用率

命令:sar -r 1 3 查看内存使用率

命令:sar -b 1 3 查看I/O使用率

uptime###

uptime 命令告诉你这台服务器从开机启动到如今已经运行了多长时间了。同时也包含了从启动到如今服务器的平均负载状况:

vmstat###

你能够使用 vmstat 来监控虚拟内存,通常 Linux 上的开发者喜欢使用虚拟内存来得到最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告能够用于平衡系统负载活动。系统范围内的这些统计信息(全部的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

vmstat:能够查看内存,交互区分,I/O操做,上下文切换,时钟中断以及CPU的使用状况。

命令:vmstat 1 3

其余命令###

CPU命令##

查看系统内核信息###

命令:uname -a

命令:uname -r

查看系统发行版信息###

命令:cat /etc/issue

命令:cat /proc/version

查看系统CPU逻辑核数###

命令:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

查看系统CPU物理核数###

命令:cat /proc/cpuinfo | grep physical | uniq -c

 

命令:grep "model name" /proc/cpuinfo

查看系统CPU运行位数###

命令:getconf LONG_BIT

说明:当前CPU运行在64bit模式下

查看系统CPU是否支持64位计算###

命令:cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

 

说明:结果大于0, 支持64bit计算. lm指long mode, 支持lm则是64bit

查看系统Shell脚本###

cat /proc/cpuinfo命令###

  1. processor:逻辑处理器的id。
  2. physical id:物理封装的处理器的id。
  3. core id:每一个核心的id。
  4. cpu cores:位于相同物理封装的处理器中的内核数量。
  5. siblings:位于相同物理封装的处理器中的逻辑处理器的数量。

查看物理CPU的个数:cat /proc/cpuinfo |grep "physical id"|sort |uniq| wc -l

查看逻辑CPU的个数:cat /proc/cpuinfo |grep "processor"|wc -l

查看CPU是几核:cat /proc/cpuinfo |grep "cores"|uniq

查看CPU的主频:cat /proc/cpuinfo |grep MHz|uniq

日期时间##

date命令###

查看当前系统时间:date

修改当前系统时间:date -s "2009-07-28 15:32:00"

解压缩命令##

tar解压###

find命令##

列出当前目录的文件树

find . -print 2 > /dev/null | awk '!/\.$/ {for (i=1;i<NF;i++){d=length($i);if ( d < 5 && i != 1 )d=5;printf("%"d"s","|")}print "---"$NF}' FS='/'

who命令##

查看用户所在哪些终端:who | awk '{print $1 "\t" $6}'

查看硬件配置##

uname -a:查看内核/操做系统/CPU信息
head -n 1 /etc/issue:查看操做系统版本
cat /proc/cpuinfo:查看CPU信息
hostname:查看计算机名
lspci -tv:列出全部PCI设备
lsusb -tv:列出全部USB设备
lsmod:列出加载的内核模块
**env **:查看环境变量资源

free -m:查看内存使用量和交换区使用量
df -h:查看各分区使用状况
du -sh <目录名>:查看指定目录的大小
grep MemTotal /proc/meminfo:查看内存总量
grep MemFree /proc/meminfo:查看空闲内存量
uptime:查看系统运行时间、用户数、负载
cat /proc/loadavg:查看系统负载磁盘和分区

mount | column -t:查看挂接的分区状态
fdisk -l:查看全部分区
swapon -s:查看全部交换分区
hdparm -i /dev/hda:查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE:查看启动时IDE设备检测情况网络

ifconfig:查看全部网络接口的属性
iptables -L:查看防火墙设置
**route -n **:查看路由表
netstat -lntp:查看全部监听端口
netstat -antp:查看全部已经创建的链接
**netstat -s **:查看网络统计信息进程

ps -ef:查看全部进程
top:实时显示进程状态用户
w:查看活动用户
id <用户名>:查看指定用户信息
last:查看用户登陆日志
cut -d: -f1 /etc/passwd:查看系统全部用户
cut -d: -f1 /etc/group:查看系统全部组
crontab -l:查看当前用户的计划任务服务

chkconfig --list:列出全部系统服务
chkconfig --list | grep on:列出全部启动的系统服务程序

rpm -qa:查看全部安装的软件包

重启命令##

shutdown###

shutdown命令安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。由于linux与windows不一样,其后台运行着许多进程,因此强制关机可能会致使进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。

而在系统关机前使用shutdown命令﹐系统管理员会通知全部登陆的用户系统将要关闭。而且login指令会被冻结﹐即新的用户不能再登陆。直接关机或者延迟必定的时间才关机都是可能的﹐还可能重启。这是由全部进程〔process〕都会收到系统所送达的信号〔signal〕决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则能够正常地离开等等。

shutdown执行的工做是送信号〔signal〕给init程序﹐要求它改变runlevel。Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来从新激活〔reboot〕系统﹐而runlevel 1则是被用来让系统进入管理工做能够进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者从新开机〔reboot〕过程当中作了哪些动做﹐你能够在这个文件/etc/inittab里看到这些runlevels相关的资料。

shutdown 参数说明:

[-t] 在改变到其它runlevel以前﹐告诉init多久之后关机。
[-r] 重启计算器。
[-k] 并不真正关机﹐只是送警告信号给每位登陆者〔login〕。
[-h] 关机后关闭电源〔halt〕。
[-n] 不用init﹐而是本身来关机。不鼓励使用这个选项﹐并且该选项所产生的后果每每不老是你所预期获得的。
[-c] cancel current process取消目前正在执行的关机程序。因此这个选项固然没有时间参数﹐可是能够输入一个用来解释的讯息﹐而这信息将会送到每位使用者。
[-f] 在重启计算器〔reboot〕时忽略fsck。
[-F] 在重启计算器〔reboot〕时强迫fsck。
[-time] 设定关机〔shutdown〕前的时间。
命令:shutdown -r -t 0:0就是当即关机,若是设置为7,则是7秒钟以后关机

halt###

halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操做完成后就会中止内核。

halt 参数说明:

[-n] 防止sync系统调用﹐它用在用fsck修补根分区以后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。
[-w] 并非真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
[-f] 没有调用shutdown而强制关机或重启。
[-i] 关机〔或重启〕前﹐关掉全部的网络接口。
[-p] 该选项为缺省选项。就是关机时调用poweroff。

reboot###

reboot的工做过程差很少跟halt同样﹐不过它是引起主机重启﹐而halt是关机。它的参数与halt相差很少。

init###

init是全部进程的祖先﹐它的进程号始终为1﹐因此发送TERM信号给init会终止全部的用户进程﹑守护进程等。shutdown 就是使用这种机制。

init定义了8个运行级别(runlevel), init 0为关机﹐init 1为重启。关于init能够长篇大论﹐这里就再也不叙述。另外还有 telinit命令能够改变init的运行级别﹐好比﹐telinit -i S可以使系统进入单用户模式﹐而且得不到使用shutdown时的信息和等待时间。

apt-get使用##

“起初GNU/Linux系统中只有.tar.gz。用户必须本身编译他们想使用的每个程序。在Debian出现之後,人们认为有必要在系统中添加一种机制用来管理安装在计算机上的软件包。人们将这套系统称为dpkg。至此着名的‘package’首次在GNU/Linux上出现。不久之後红帽子也开始着手创建本身的包管理系统‘rpm’。

“GNU/Linux的创造者们很快又陷入了新的窘境。他们但愿经过一种快捷、实用并且高效的方式来安装软件包。这些软件包能够自动处理相互之间的依赖关系,而且在升级过程当中维护他们的配置文件。Debian又一次充当了开路先锋的角色。她独创了APT(Advanced Packaging Tool)。这一工具後来被Conectiva 移植到红帽子系统中用于对rpm包的管理。在其余一些发行版中咱们也能看到她的身影。”

"同时,apt是一个很完整和先进的软件包管理程序,使用它可让你,又简单,又准确的找到你要的的软件包, 而且安装或卸载都很简洁。 它还可让你的全部软件都更新到最新状态,并且也能够用来对ubuntu进行升级。"

"apt是须要用命令来操做的软件,不过如今也出现了不少有图形的软件,好比Synaptic, Kynaptic 和 Adept。"

apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您须要按期运行这一命令以确保您的软件包列表是最新的。
apt-get install packagename——安装一个新软件包(参见下文的aptitude)。
apt-get remove packagename——卸载一个已安装的软件包(保留配置文件)。
apt-get --purge remove packagename——卸载一个已安装的软件包(删除配置文件)。
dpkg --force-all --purge packagename——有些软件很难卸载,并且还阻止了别的软件的应用,就能够用这个,不过有点冒险。
apt-get autoclean——apt会把已装或已卸的软件都备份在硬盘上,因此若是须要空间的话,可让这个命令来删除你已经删掉的软件。
apt-get clean——这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
apt-get upgrade——更新全部已安装的软件包。
apt-get dist-upgrade——将系统升级到新版本。
apt-cache search string——在软件包列表中搜索字符串。
dpkg -l package-name-pattern——列出全部与模式相匹配的软件包。若是您不知道软件包的全名,您可使用“ package-name-pattern”。
aptitude——详细查看已安装或可用的软件包。与apt-get相似,aptitude能够经过命令行方式调用,但仅限于某些命令——最多见的有安装和卸载命令。因为aptitude比apt-get了解更多信息,能够说它更适合用来进行安装和卸载。
apt-cache showpkg pkgs——显示软件包信息。
apt-cache dumpavail——打印可用软件包列表。
apt-cache show pkgs——显示软件包记录,相似于dpkg –print-avail。
apt-cache pkgnames——打印软件包列表中全部软件包的名称。
dpkg -S file——这个文件属于哪一个已安装软件包。
dpkg -L package——列出软件包中的全部文件。
apt-file search filename——查找包含特定文件的软件包(不必定是已安装的),这些文件的文件名中含有指定的字符串。apt-file是一个独立的软件包。您必须先使用apt-get install来安装它,然後运行apt-file update。若是apt-file search filename输出的内容太多,您能够尝试使用apt-file search filename | grep -w filename(只显示指定字符串做为完整的单词出如今其中的那些文件名)或者相似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文件,若是您要查找的是某个特定的执行文件的话,这样作是有帮助的)。
apt-get autoclean——按期运行这个命令来清除那些已经卸载的软件包的.deb文件。经过这种方式,您能够释放大量的磁盘空间。若是您的需求十分迫切,可使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。大多数状况下您不会再用到这些.debs文件,所以若是您为磁盘空间不足而感到焦头烂额,这个办法也许值得一试。

wget下载##

wget是在Linux下开发的开放源代码的软件,做者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有如下功能和特色:

(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,如今,Wget也可使用此功能,那些网络不是太好的用户能够放心了;
(2)同时支持FTP和HTTP下载方式;尽管如今大部分软件可使用HTTP方式下载,可是,有些时候,仍然须要使用FTP方式下载软件;
(3)支持代理服务器;对安全强度很高的系统而言,通常不会将本身的系统直接暴露在互联网上,因此,支持代理是下载软件必须有的功能;
(4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,可是,命令行在设置上其实有更多的优势,最少,鼠标能够少点不少次,也不要担忧是否错点鼠标;
(5)程序小,彻底免费;程序小能够考虑不计,由于如今的硬盘实在太大了;彻底免费就不得不考虑了,即便网络上有不少所谓的免费软件,可是,这些软件的广告却不是咱们喜欢的;

wget http://soft.deepvps/web/nginx/nginx-0.8.0.tar.gz:下载远程服务器上的文件到本身的服务器,连上传都省了,服务器不是100M就是1000M的带宽,下载一个2-3兆的MT还不是几十秒的事;

wget -c http://soft.deepvps/web/nginx/nginx-0.8.0.tar.gz:继续下载上次未下载完的文件;

wget参数说明
-t,--tries=NUMBER 是否下载次数(0表示无穷次)
-O --output-document=FILE保存下载日志到文件FILE
-nc, --no-clobber 不要覆盖已经存在的文件
-N,--timestamping只下载比本地新的文件
-T,--timeout=SECONDS 设置超时时间
-Y,--proxy=on/off 关闭代理

1)下载整个http或者ftp站点:wget http://place.your.url/here
这个命令能够将http://place.your.url/here 首页下载下来。使用-x会强制创建服务器上如出一辙的目录,若是使用-nd参数,那么服务器上下载的全部内容都会加到本地当前目录。

2)递归下载 :wget -r http://place.your.url/here
这 个命令会按照递归的方法,下载服务器上全部的目录和文件,实质就是下载整个网站。这个命令必定要当心使用,由于在下载的时候,被下载网站指向的全部地址同 样会被下载,所以,若是这个网站引用了其余网站,那么被引用的网站也会被下载下来!基于这个缘由,这个参数不经常使用。能够用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。

3)制做镜像站点,那么可使用-m参数,例如:wget -m http://place.your.url/here
这时wget会自动判断合适的参数来制做镜像站点。此时,wget会登陆到服务器上,读入robots.txt并按robots.txt的规定来执行。

4)断点续传,例如:wget -c http://the.url.of/incomplete/file
当文件特别大或者网络特别慢的时候,每每一个文件尚未下载完,链接就已经被切断,此时就须要断点续传。wget的断点续传是自动的,只须要使用-c参数,使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如须要重试100次,那么就写-t 100,若是设成-t 0,那么表示无穷次重试,直到链接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒链接不上就算超时。

**5)批量下载,例如:wget -i download.txt **
若是有多个文件须要下载,那么能够生成一个文件,把每一个文件的URL写一行,例如生成文件download.txt,而后用命令:wget -i download.txt 这样就会把download.txt里面列出的每一个URL都下载下来。(若是列的是文件就下载文件,若是列的是网站,那么下载首页)

6)选择性的下载,例如:wget -m –reject=gif http://target.web.site/subdirectory
能够指定让wget只下载一类文件,或者不下载什么文件。例如:wget -m –reject=gif http://target.web.site/subdirectory 表示下载http://target.web.site/subdirectory, 可是忽略gif文件。–accept=LIST 能够接受的文件类型,–reject=LIST拒绝接受的文件类型。

7)密码和认证
wget只能处理利用用户名/密码方式限制访问的网站,能够利用两个参数:

对于须要证书作认证的网站,就只能利用其余下载工具了,例如curl。

8)利用代理服务器进行下载
若是用户的网络须要通过代理服务器,那么可让wget经过代理服务器进行文件的下载。此时须要在当前用户的目录下建立一个.wgetrc文件。文件中能够设置代理服务器:

http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分别表示http的代理服务器和ftp的代理服务器。若是代理服务器须要密码则使用:

这两个参数。
使用参数–proxy=on/off 使用或者关闭代理。

附录:命令格式:

wget [参数列表] [目标软件、网页的网址]

-V,–version 显示软件版本号而后退出;
-h,–help显示软件帮助信息;
-e,–execute=COMMAND 执行一个 “.wgetrc”命令

-o,–output-file=FILE 将软件输出信息保存到文件;
-a,–append-output=FILE将软件输出信息追加到文件;
-d,–debug显示输出信息;
-q,–quiet 不显示输出信息;
-i,–input-file=FILE 从文件中取得URL;

-t,–tries=NUMBER 是否下载次数(0表示无穷次)
-O –output-document=FILE下载文件保存为别的文件名
-nc, –no-clobber 不要覆盖已经存在的文件
-N,–timestamping只下载比本地新的文件
-T,–timeout=SECONDS 设置超时时间
-Y,–proxy=on/off 关闭代理

-nd,–no-directories 不创建目录
-x,–force-directories 强制创建目录

-http-user=USER设置HTTP用户
-http-passwd=PASS设置HTTP密码
-proxy-user=USER设置代理用户
-proxy-passwd=PASS设置代理密码

-r,–recursive 下载整个网站、目录(当心使用)
-l,–level=NUMBER 下载层次

-A,–accept=LIST 能够接受的文件类型
-R,–reject=LIST拒绝接受的文件类型
-D,–domains=LIST能够接受的域名
-exclude-domains=LIST拒绝的域名
-L,–relative 下载关联连接
-follow-ftp 只下载FTP连接
-H,–span-hosts 能够下载外面的主机
-I,–include-directories=LIST容许的目录
-X,–exclude-directories=LIST 拒绝的目录

lsof使用##

lsof filename 显示打开指定 文件的全部进程
lsof -a 表示两个参数都必须知足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符的进程全部打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程状况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,可是会搜索目录下的全部目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程状况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
 
查看22端口如今运行的状况:lsof -i :22

查看所属root用户进程所打开的文件类型为txt的文件:lsof -a -u root -d txt

相关文章
相关标签/搜索