Linux操作命令总结(六)

1.文件描述符

标准输入        standard input                   0        <,<<

标准输出        standard output                1        >,>>

标准错误输出  standard error output       2         2>,2>>

2>&1  将标准错误输出重定向到标准输出

command >/dev/null  2>&1    将标准输出和标准错误输出均重定向到/dev/null 。其中,/dev/null相当于一个只读文件,如果尝试从/dev/null读取内容是什么也读不到的,所有写入/dev/null的内容都会丢失。


2.&

当作业在前台运行时,终端会被作业占据。可以在命令后面加上&,让作业在后台运行,作业在后台运行还是会将结果输出到当前终端界面上,如果作业在后台运行过程中,有大量信息需要进行输出,则可以将输出内容重定向到某个文件中。

不要将需要与用户进行交互的命令放在后台执行,否则这个作业会一直处于等待状态。

command > out.file  2>&1    &    将command在后台执行,且将标准输出和标准错误输出均重定向到out.file


3.nohup

使用&可以将command在后台执行,但是如果当前控制台终端被关闭退出账户时,运行在后台的作业就会停止运行。如果需要在退出账户后,作业仍旧在后台继续执行,可以使用nohup,即no hang up

nohup command   &   进程在用户退出登录后仍旧继续执行,原程序的的标准输出被自动改向到当前目录下的nohup.out文件。

nohup command > out.file  2>&1    &    进程在用户退出登录后仍旧继续执行,,将标准输出和标准错误输出均指定了重定向文件out.file。

注意:使用nohup及&使command在后台运行并在退出当前账户时,仍然作业在后台执行,需要保证账户是使用exit正常退出终端的。否则,后台运行的作业会停止。


4.curl

curl是一个利用URL规则在命令行下的文件传输工具,可以说是一个强大的http命令行工具,支持文件的上传和下载。

curl  http://www.baidu.com    访问百度并将返回的信息显示到终端中。  通常可以用来测试某个Linux服务是否可以到达某一个网站

Linux操作命令总结(六)

curl http://www.baidu.com >> baidu.html   将返回的网页信息保存到baidu.html

Linux操作命令总结(六)

curl -o /dev/null -s -w %{http_code} www.baidu.com     获取访问网页返回的响应码

Linux操作命令总结(六)

curl -c cookie.txt http://www.baidu.com   将访问网页返回的cookie信息放到文件cookie.txt中

Linux操作命令总结(六)


5.source

读入指定目录的shell文件并依次执行文件中所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

source /etc/profile   若修改了/etc/profile,使其立即生效。

source读取并执行指定文件中的语句,是在当前的shell或者说当前的终端里,没有建立新的子shell,所有新建、改变的变量在当前的终端中有效。

Linux操作命令总结(六)

6. sh与./

sh a.sh   在当前终端的基础上要重新建立一个子shell,在子shell中执行脚本中的内容,这个子shell继承父shell即当前终端的环境变量,而子shell中改变的变量不会被带回父shell,除非使用export

./ a.sh   需要具有a.sh的执行权限,在当前shell或者说当前的终端执行脚本。

sh与source均不需要脚本的执行权限,而./需要脚本的执行权限


7.export

将变量设置为环境变量或者说全局变量,使其它在当前终端获取该变量或者使用sh xx.sh执行过程中建立的子shell中仍然可以获取该变量。

a.sh

#!/bin/sh

var='beijing'

export var

b.sh

#!/bin/sh

echo  $var

Linux操作命令总结(六)


8.top

监控Linux的系统状况,如CPU、内存总体情况,各进程的CPU、内存等使用情况。top监控的最小单位是进程。

Linux操作命令总结(六)

18:06:05   当前系统时间

13 min      系统已经运行的时间,格式为时:分

1 user       当前有1个用户登录到本Linux系统

load average : 0.00, 0.05, 0.08     系统在最近的1分钟、5分钟、15分钟的负载情况。  这些load average系统负载数据是每隔5秒钟检查一次活跃的进程数,按照特定算法计算出来的。如果这些系统平均负载数据除以CPU处理器的核心的数量,若结果高于5,则表明系统在超负荷运转。

Tasks

129 total    系统当前总的进程数

1 running   系统当前处于运行状态的进程数

128 sleeping    系统当前处于休眠状态的进程数

0 stopped     系统当前处于停止状态的进程数

0 zimbie    系统当前处于僵尸状态的进程数

Cpu(s)

0.3%us   用户空间占用CPU的百分比

0.3%sy   内核空间占用CPU的百分比

0.0%ni    改变过优先级的进程占用CPU的百分比

99.0%id     空闲CPU百分比

0.0%wa     IO等待占用CPU的百分比

0.0%hi      硬中断占用CPU百分比

0.3%si      软中断占用CPU百分比

Mem

1938548k   total    物理内存总量

700560k   used    已使用的内存总量。即纳入内核管控的内存总量,这些纳入内核管控的内存总量不一定都在使用中。其中还包括过去被使用但现在不再使用,而可以被重复使用的内存,这些内存不会被归还到free中。因此,free的内存总量会越来越少,但也不必为此过于担心。

1237988k  free    空闲内存总量。即未纳入内核管控的内存总量

29688k   buffers    缓存内存总量

Swap

2736124k   total   交换空间总量

0k   used   已使用的交换空间总量。 在进行内存监控时,需要关注本参数值的变化。若已使用交换空间在不断变化,说明内核在不断进行内存和swap的数据交换 ,即说明真正的内存已不够用了。

2736124k   free   空闲交换空间总量

326256k cached  缓冲交换空间总量

Linux服务器当前的可用内存近似值计算公式=Mem(free)+Mem(buffers)+Swap(cached)

进程相关

PID   进程id

USER   进程所有者

PR   进程优先级

NI    负值表示高优先级,正值表示低优先级

VIRT   进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

SWAP  进程使用的虚拟内存中,被换出的大小,单位kb。

RES   进程使用的未被换出的物理内存大小,单位kb。RES=CODE+DATA

CODE   可执行代码占用的物理内存大小,单位kb。

DATA     可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

SHR  共享内存大小

S   进程状态。R:运行状态   S:睡眠状态   D:不可中断的睡眠状态   T:跟踪状态   Z:僵尸状态

%CPU  上次更新到现在的CPU时间占用百分比。默认进入top后,各个进程按照CPU的占用量来由高到低排序。

%MEM   进程使用的物理内存百分比

TIME   进程使用的CPU时间总计,单位秒

TIME+   进程使用的CPU时间总计,单位1/100秒

COMMAND   进程名称


由于top命令监控的最小单位是进程,若关心的是更为细节的Java线程数或客户连接数。则可使用下面指令,通过调整grep的参数,来进行更加细致的监控

ps -eLf | grep java | wc -l    监控java线程数

netstat  -n | grep tcp | grep 端口号 | wc -l   监控网络客户连接数

在系统根目录/proc中,每一个数据目录的名字都是运行中的进程PID,进入任一个PID进程目录,可以通过其中文件或目录来观察进程的各项运行指标,如task目录就是用来描述进程中的线程的。因此,也可使用下面一行指令来获取指定进程的线程数量。

ls  /proc/PID/task | wc -l 

Linux操作命令总结(六)


9.uptime

记录当前系统在过去1分钟、5分钟、15分钟的平均负载。

Linux操作命令总结(六)

01:06:11   当前系统时间

4:03      系统已经运行的时间,格式为时:分

2 users       当前有2个用户登录到本Linux系统

load average : 0.00, 0.00, 0.00     系统在最近的1分钟、5分钟、15分钟的负载情况。 假设Linux系统存在一个单核的处理器,若负载数值为1.0,表示刚好在系统处理的正常承受范围内,此时已经没有剩余的资源去处理过多的任务 ,在实际情况中,系统管理员通常将其数值划设在0.70,若在实时监控中该Linux服务器的负载数值在1.0左右则需要考虑系统的性能优化问题,一旦服务器负载超过5.00,则系统已严重超负荷运转。相对于过去1分钟的负载数据,更应该关注过去5分钟、15分钟的系统负载数据。注意:在多处理器系统中,负载均值是基于内核的数量决定的,即负载数值1.0在拥有2个内核的Linux系统中表示还存在50%的剩余系统资源,而2.0才表示负载在100%。物理的处理器个数并不重要,重要的是CPU的总核心个数。

cat   /proc/cpuinfo    获取Linux系统中每个处理器的信息

Linux操作命令总结(六)

grep 'model name' /proc/cpuinfo | wc -l      获取当前Linux系统的核心数

Linux操作命令总结(六)


10.free

free -m  以M字节为单位,显示当前内存的使用情况

Linux操作命令总结(六)

上图Swap交换空间中,已使用0M,空闲2671M。在查看或者衡量Linux内存是否够用时,如果Swap的used数值很大的话,就要考虑添加物理内存了。若如上图中used为0M,则不用担心内存不够使用。