监控系统资源有如下几个命令:前端
free:观察内存(memory)使用状况。shell
uname:查阅系统与核心相关信息。vim
uptime:观察系统启动时间与工做负载。缓存
netstat:网络监控。bash
vmstat:侦测系统资源变化,CPU/内存/磁盘输入输出状态。服务器
free:观察内存使用状况。网络
[root@localhost ~]# free [-b|-k|-m|-g] [-t]
-b:直接输入free时,显示的单位是bytes,咱们可使用b(bytes)、m(Mbytes)、k(Kbytes) 及g(Gbytes)来定义显示单位。部分云主机供应商可能会优化出一个-h的选项,与ls -h显示的方式同样。但系统本来是不提供这样显示的方式。ssh
-t:在输出的最终结果时,显示物理内存与swap的总量。tcp
显示目前系统的内存容量:学习
[root@localhost ~]# free total used free shared buffers cached Mem: 1012352 318528 693824 0 23592 113208 -/+ buffers/cache: 181728 830624 Swap: 2031608 0 2031608
Mem一行显示的是物理内存的量;Swap显示的是虚拟内存的量。
total是总量、used是已被使用的量、free则是剩余可用的量、shared共享内存、buffers将写磁盘的内容、cached已写磁盘或者已从磁盘读出的内容。
uname:查阅系统与核心相关信息。
uname [-asrmpi]
-a:全部系统相关的信息,包括如下的数据都会被列出来。
-s:系统内核名称。
-r:内核版本。
-p:CPU的类型,与-m相似,是显示的是CPU的类型。
-m:本系统的硬件名称,例如i686或x86_64等。
-i:硬件的平台(ix86)。
简单记忆方法:
uname as rpm -ivh
全部系统内核版本cpu系统硬件平台安装软件。
输出系统的基本信息:
[root@localhost ~]# uname -a Linux localhost 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
uptime:观察系统启动时间与工做负载。
[root@localhost ~]# uptime 08:05:08 up 3:10, 2 users, load average: 0.00, 0.00, 0.00
显示目前系统当前时间、已经开机多长的时间、用户数、以及一、五、15分钟的平均负载。
netstat:网络(network)监控。
netstat -[atunlp]
-a:将目前系统上全部的已经链接、监听、Socket数据都列出来。
-t:列出tcp网络包的信息。
-u:列出udp网络包的信息。
-n:以端口(port number)方式来显示(不以程序的服务名称)。
-l:列出目前正在监听(listen)的服务。
-p:列出该网络服务的进程id(PID)。
[root@localhost ~]# netstat -atp #全部tcp协议的连接,并输出pid号 [root@localhost ~]# netstat -antp [root@localhost ~]# netstat -lntp
Proto:网络的封包协议,主要分为TCP与UDP封包。
Recv-Q:接收消息缓存区,远端进程发送而来,还没有被当前进程处理 的信息数,单位:字节。
Send-Q:发送消息缓存区,向远端进程发送,还没有被其接收的消息数,单位:字节。
Local Address:本地地址:端口号。
Foreign Address:与当前本端网络地址(IP:port)程进行行通讯的远程进程的网络地址(IP:port)(远程通讯主机)。
State:网络链接状态,主要有创建(ESTABLISED)及监听(LISTEN)。
PID/Program name:显示此服务的PID号码以及程序的命令名称。
目前系统上已在监听的网络连接以及PID:
[root@localhost ~]# netstat -lntp |head -n 10
防火墙的启动、状态查看、关闭!!(建议我的学习研究时关闭)
# service iptables start # service iptables status # service iptables stop # service iptables restart
以上状态的修改,在服务器重启前生效。
#永久关闭: chkconfig iptables off #永久开启: chkconfig iptables on
在服务状态并无发生改变。服务器重启后生效,防火墙会恢复到服务器重启以前的状态。
vmstat:侦测系统资源变化(必须记住)。
动态的了解一下系统资源的运做,CPU/内存/磁盘输入输出状态。
-a:使用inactive/active(活跃与否)取代buffer/cache的内存输出信息。
-f:开机到目前为止,系统复制(fork)的进程数。
-s:将一些事件(开机至目前为止)致使的内存变化状况列表说明。
-S:后面能够接单位,让显示的数据有单位。例如以K、M展现的形式取代bytes展现。
-d:列出磁盘的读写总量统计表。
-p: 后面列出磁盘分区,可显示该磁盘分区的读写总量统计。
统计目前主机CPU状态,每秒一次,共计四次:
[root@localhost ~]# vmstat 1 4 procs -----------memory---------- --swap-- --io--- --system-- -------cpu--------- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 690740 25596 113444 0 0 4 1 15 20 0 0 100 0 0 0 0 0 690716 25596 113472 0 0 0 0 36 41 0 0 100 0 0 0 0 0 690716 25596 113472 0 0 0 0 27 35 0 0 100 0 0 0 0 0 690716 25596 113472 0 0 0 0 32 41 0 0 100 0 0
procs(进程字段)
r:等待运行的进程数量。
b:不可被唤醒的进程数量。
这两个项目越多,表明系统越忙碌(由于系统太忙,因此不少进程就没法被执行或一直在等待而没法被唤醒)。
memory(内存字段)
swpd:虚拟内存被使用的容量。
free:未被使用的内存容量。
buff/cache:用于缓冲的内存。
swap(交换分区字段)
重点记忆下si和so。
si:每秒从交换分区写到内存的数据量大小,由磁盘->内存。之内存为参照物。
so:每秒写入交换分区的内存数据量大小,由内存->磁盘。
若是si/so的数值太大,表示内存内的数据经常得在磁盘与主存储器之间传来传去,系统效能会不好。
io(磁盘读写字段)
bi:从块设备读入数据的总量(读磁盘)(每秒kb)。
bo:块设备写入数据的总量(写磁盘)(每秒kb)。
若是这部份的值越高,表明系统的I/O很是忙碌。
system(系统字段 )
in:每秒被中断的进程次数。
cs:每秒钟进行的事件切换次数。
这两个数值越大,表明系统与接口设备的通讯很是频繁。
CPU(cpu字段)
us:(user)非内核态的(用户进程)CPU使用状况。
sy:(system)内核态所使用(系统进程)的CPU状况。
id:(idle)闲置的CPU状况。
wa:(wait)等待I/O所耗费的CPU。
st:被虚拟机(virtual machine)所盗用的CPU(2.6.11 之后才支持)。
登陆bash以后,就会取得一个名为bash的进程(它有本身的PID)了。在这个环境中所执行的其余指令,几乎都是所谓的子进程。
在一个会话终端上:
[root@localhost ~]# ls … install.log … [root@localhost ~]# tail –F install.log #启动一个进程(用来跟踪日志文件)
在另一个会话终端上(链接同一台虚拟机):
[root@localhost ~]# pstree –Aup |-sshd(2928)-+-sshd(3332)---bash(3336)---tail(3460) | `-sshd(3440)---bash(3444)---pstree(3498)
在Windows中咱们常常会执行多个任务,例如打开qq和音乐。那么在通过几天的学习后,咱们发现Linux的命令行窗口只能作一个任务,好比咱们用vim编辑1.txt的时候没法去编辑2.txt (假设说存在)。但咱们又须要执行这么一个操做的时候怎么办?Linux能不能让某一个程序在执行的时候在后台运行呢?
能够控制与执行命令的bash环境称为前台进程。
在操做系统中自行运行,你没法使用[ctrl]+c终止,可以使用bg/fg命令操做的任务,能够经过jobs命令查看后台执行的任务(非系统进程)。
能够经过Ctrl+z将前台执行的任务放置后台(放置到后台,会暂停该任务)。
在当前bash执行多个任务,任务后面添加&符号便可将任务放置后台执行。
命令样式:cp file1 file2 &
重点在以上的这个“&”符号,他表示将file1这个文件复制为file2,同时将这个拷贝进程放到后台执行。也就是说执行这一个命令以后,在这一个终端仍然能够作其余的工做。拷贝任务执行完成后,系统将会在终端显示完成的消息。
举例来讲,咱们在登陆bash后,想要一边复制文件、一边进行编译。那么就须要任务管理。
Ctrl+z和&有什么区别:
Ctrl+z 将前台程序放置后台——状态为暂停。
在执行的命令后面追加“&”——状态为后台运行。
Vim编辑无论用那个方式转到后台,都是暂停状态。
在同一个会话终端上:
[root@localhost ~]# tail -F install.log & #启动一个后台进程 [1] 3517 #返回该后台进程的PID [root@tedu ~]# pstree –Aup |-sshd(2928)-+-sshd(3332)---bash(3336)-+-pstree(3518) | `-tail(3517) | `-sshd(3440)---bash(3444) #另一个终端进程 [root@localhost ~]# ps ax | grep tail 3517 pts/0 S 0:00 tail -f install.log 3523 pts/0 S+ 0:00 grep tail [root@localhost ~]#kill 3517 [root@localhost ~]# (敲回车) [1]+ Terminated tail -f install.log
直接将命令放到后台执行&,在叧有一个 bash 的环境下,若是想要同时进行多个工做,那么能够将某些工做接放到后台,用户能够继续操做前台任务。
举例:
将/etc/备份为/tmp/etc.tar.gz且不想要等待其完成。
[root@localhost ~]# tar -czPf /tmp/etc.tar.gz /etc & (将/etc目录压缩到/tmp/下命名为etc.tar.gz) [1] 3581
当job执行完成以后会显示Done(敲回车)。
[root@localhost ~]# [1]+ Done tar -czPf /tmp/lib.tar.gz /etc
其中中括号为job number。
将目前的工做丢到后台暂停:[ctrl]+z。
[root@localhost ~]# vim anaconda-ks.cfg #ctrl+z [1]+ Stopped vim anaconda-ks.cfg
说明:
在vim的通常模式下,按下[ctrl]+z,屏幕上会出现[1],表示这是第一个任务。+表明最近一个被放到后台的任务,且目前在后台预期会被取用的任务(调用切换到前台命令时会第一个被调用到)。
Stopped使用[ctrl]+z放到后台的任务都是暂停状态 。
[root@localhost ~]# vim install.log #ctrl+z [2]+ Stopped vim install.log [root@tedu ~]# pstree –Aup
观察后台任务。jobs查看当前工做状态。
-l:除了列出job number与指令串以外,同时列出PID的号码。
-r:仅列出正在后台run的任务。
-s:仅列出正在后台暂停(stop)的任务。
演示:
[root@localhost ~]# jobs #显示所有后台进程(不含PID) [root@localhost ~]# jobs –l#显示所有后台进程(含PID) [root@localhost ~]# jobs –r [root@localhost ~]# jobs -s
将后台拿到前台执行:fg(ForeGround)。
命令格式:fg %jobnumber
job number为任务号码(数字);%无关紧要。
示例:
fg 1
将任务号为1的进程调到前台执行。
[root@localhost ~]# jobs [1]+ Stopped vim anaconda-ks.cfg [2]- Stopped vim install.log
+做用“表示当前的”,若是命令fg后面没有跟任务号,默认将带+的进程调到前台执行。-表示+号对应的进程被调前台后,“-”对应的进程当即变为“+”。
让任务在后台中变成执行状态:bg。针对vim能够改变其前台调用的优先级。
bg 2执行后台进程中任务号为2的进程。
[root@localhost ~]#bg 2 [2]- vim install.log & [root@localhost ~]# jobs -l [1]+ Stopped vim anaconda-ks.cfg [2]- Stopped (tty output) vim install.log
发现任务号2仍然是Stopped的,缘由是vim没有前端(tty output),因此没法在后台running,但此时若是执行fg的话会优先打开2(vim install)。
[root@localhost ~]# tail -f test & [root@localhost ~]# jobs [4]+ Stopped tail -f test& [root@localhost ~]#bg 4 #jobs: [4] Running tail -f test &
终止job只能使用kill命令,来将进程杀掉。
[root@localhost ~]#jobs -l [2]- 3716 Stopped (tty output) vim install.log [3]+ 3775 Stopped vim anaconda-ks.cfg [4] 3790 Running tail -f test & [root@localhost ~]#kill -9 3775 #kill vim进程须要 -9 [root@localhost ~]# jobs -l [2]- 3716 Stopped (tty output) vim install.log [3]+ 3775 Killed vim anaconda-ks.cfg [4] 3790 Running tail -f test & [root@localhost ~]#kill 3716 #缺省为 -15,发现vim进程kill不掉,须要强制执行。 [root@localhost ~]#kill 3790 #普通进程是能够kill 掉的
jobs –l查看: [4]- 3790 Terminated tail -f test,稍后该记录被清掉。
此方式不经常使用。
nohup 可让你在脱机或注销后(好比exit退出当前shell),还可以让工做继续进行。
nohup [命令与参数] 在当前终端前台执行。
nohup [命令与参数] & 在后台执行。
[root@localhost ~]# nohup tail -F test & [1] 3877 [root@localhost ~]# exit [root@localhost ~]# ps ax |grep tail 3877 ? S 0:00 tail -f test
上一篇:Linux基础之进程
下一篇:Linux基础之vim