linux 查看工程用什么工具,工程师工具包-Linux常用命令及常用操作-持续更新中...

Linux系统命令相关

系统相关

date

date 查看系统时间

$date

2017年 09月 18日 星期一 18:01:06 CST

date -R查看系统时间,并且在时间后面加上时区的显示

$date -R

Mon, 18 Sep 2017 17:57:30 +0800

磁盘操作相关

du

命令格式:

du [选项] [文件]

常用选项:

-h -以K,M,G为单位,提高信息的可读性

-L -把软链接的源文件大小也列出来。

常用命令:

du -h . //显示当前目录下所有文件及目录的大小,并以G,M等人类可理解的方式显示

网络相关

nslookup

nslookup是查询dns域名和ip解析的命令

nslookup github.com //查询github.com域名对应的ip

nslookup 202.xx.xx.xx //查询 202.xx.xx.xxIP对应域名

ifconfig

ping

netstat

ls

ls -l : 以详细列表的方式展示

ls -R : -R 分目录展示

ls -lt : -t表示用文件和目录的更改时间排序.

ls -ltr : 表示用文件和目录的更改时间倒序排序.

ls -lS : 表示用文件和目录的大小排序,注意是大写的S

ls -lSr : 表示用文件和目录的大小倒序排序

ls -lh : 显示文件大小时,以M,G等更人性化的单位显示。-h这个参数很有用

ls -lk:显示文件大小时,以K为单位显示。

-r表示是倒序排序

ps

查看系统中java线程

ps -ef|grep java

top

top

top查看对应pid的信息

第一行:top - 01:00:01 up 1064 days, 4:29, 2 users, load average: 0.25, 0.39, 0.47。

01:00:01为当前系统时间

1064 days 表示当前已经运行1064天。

2 users表示当前有两个用户在线。

load average: 0.25, 0.39, 0.47 表示当过去的1分、5分钟、15分钟的系统负载。

其中load的理解,load average表示系统处理的任务队列数。

对于一个cpu核心的,load值大于0表示超负荷运行。

如果对于4核心,则

第二行: Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie

显示当前系统的进程运行情况,目前总共有114个进程,其中1个正在运行,113个处于sleep状态。

第三行: Cpu(s): 1.8%us, 1.8%sy, 0.2%ni, 68.7%id, 27.4%wa, 0.0%hi, 0.0%si, 0.0%st显示的是cpu的信息。

id 为空闲时间时间占比

us 是指 用户空间占用 cpu 的时间百分比

sy 是指 系统空间占用 cpu 时间的百分比

st 这个项只有主机是虚拟机的时候,才会存在,全称为 steel ,意味着虚拟机从宿主机获取cpu时间片的耗时百分比,如果这个值过多,则需要查看宿主机的是否过多的分配虚拟机,引起资源不足.

在top命令界面里,按数字“1”,将显示每个cpu的信息,也可以看到现在系统有几颗cpu.

第四和第五行为内存信息

Mem: 3921732k total, 3483860k used, 437872k free, 102556k buffers

Swap: 0k total, 0k used, 0k free, 1808492k cached

第一行 Mem 显示的是机器的真实内存数

第二行 Swap 显示的是交换内存数

Mem中,total 显示的是内存的总量, 这里的单位是大K , 也就约是 4g 左右内存总数,used 表示已使用内存数,free 是空闲内存数,buffer 是 buffer 内存数,chache 为 cache 的内存数。

Swap 中, total ,used ,free 三个参数的表示内存交换空间中的总量,已使用内存与空闲内存。

接下来一个个来整理下, total 内存总数, used+free = total ,前三个很好理解,无论是真实内存还是交换空间内存都一样,我们重点来看下 buffers 和 cache 这块的内存占用如何说明。

used 的内存占了将近 3.3g ,并不意味着机器内存全部被耗完,windows 下用多少申请多少内存,但 linux 下则不然,内存总是不嫌多的,linux 会将读取过的数据都缓存起来,以便下次读取时减少读取的时间。即使你的程序运行结束后,内存也不会自动释放。这就会导致你在 linux 系统中程序频繁读写文件后,你会发现可用物理内存变少。

而 cache 与 buffer 就属于linux系统的缓存内存,这部分的缓存内存在其他程序真实需要使用内存的时候,则会释放。所以程序真实使用的内存数应该是 used - buffer - cache ,就上图而言,应该(粗暴的以g计算)是 3.48g - 0.1g - 1.8g 大约是 2.58g 左右。

最后一部分,列出系统中的所有进程

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

9813 root 20 0 989m 17m 2140 S 2.3 0.5 7927:13 /opt/xxxx

1640 admin 20 0 3665m 1.0g 26m S 1.3 27.6 2:41.70 /opt/xx/java/bin/java

15159 admin 20 0 21204 1328 1000 R 0.7 0.0 0:00.03 top

15284 root 31 11 178m 20m 752 S 0.7 0.5 0:00.04 /usr/bin/xx

PID 是进程的 进程号

USER 是启动进程的用户

pr 和 ni 都是与进程优先级相关的

ni 我们在之前已经讲过了,全称是 nice ,pr 的全称是 Priority

一个进程的整体运行优先级是 pr 值与 ni 值 相加

优先级 = ni + pr ,pr 默认值是20(默认权重因子) ,ni 的范围是-20至19,默认是 0

nice 的值可以按照命令或进程进行修改,使用 nice,renice 修改

优先级数值越小,优先级越高

VIRT 表示 Virtual Memory 虚拟内存

RES 表示 Resident Memory 驻留内存

SHR 表示 shared memory 共享内存

free -m

free -m查看内存信息

$ free -m

total used free shared buffers cached

Mem: 3829 3633 195 0 78 2085

-/+ buffers/cache: 1470 2359

Swap: 0 0 0

第一行 Mem 显示的是机器的真实内存数。

Mem中,total 显示的是内存的总量, 这里的单位是大M , 也就约是 4g 左右内存总数,used 表示已使用内存数,free 是空闲内存数,buffer 是 buffer 内存数,chache 为 cache 的内存数。

接下来一个个来整理下, total 内存总数, used+free = total ,前三个很好理解,无论是真实内存还是交换空间内存都一样,我们重点来看下 buffers 和 cache 这块的内存占用如何说明。

used 的内存占了将近 3.3g ,并不意味着机器内存全部被耗完,windows 下用多少申请多少内存,但 linux 下则不然,内存总是不嫌多的,linux 会将读取过的数据都缓存起来,以便下次读取时减少读取的时间。即使你的程序运行结束后,内存也不会自动释放。这就会导致你在 linux 系统中程序频繁读写文件后,你会发现可用物理内存变少。

而 cache 与 buffer 就属于linux系统的缓存内存,这部分的缓存内存在其他程序真实需要使用内存的时候,则会释放。所以程序真实使用的内存数应该是 used - buffer - cache ,就上图而言,应该(粗暴的以g计算)是 3.633g - 0.078g - 2.8g

上图中的第二行,第一列表示 used - cache - buffer ,第二列表示 free + cache + buffer

history

history查看用户的历史执行命令。

也可以通过less ~/.bash_history命令查看。

who/w

who或w可以查看当前系统在线的用户。

$ who

admin pts/1 2017-10-16 19:27 (30.20.80.139)

admin pts/2 2017-10-16 19:32 (30.55.80.67)

$ w

01:07:18 up 1064 days, 4:36, 2 users, load average: 0.33, 0.44, 0.47

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

admin pts/1 30.20.80.139 19:27 1:42m 0.04s 0.04s -bash

admin pts/2 30.55.80.67 19:32 0.00s 0.12s 0.00s w

less

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.

less命令使用格式:

less [参数] 文件

示例:

less -i -N systemx.log

常用参数:

-i 忽略搜索时的大小写

-N 显示每行的行号

常用命令

/ 字符串:向下搜索"字符串"的功能

? 字符串:向上搜索"字符串"的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

G:向下移动到最后一行

g:向上移动到第一行

b:往上(往后)翻一页

space(空格):往下(往前)翻一页

q:退出

tail

tail -f *.log //动态显示当前目录下所有以.log结尾的文件的内容

grep

grep全称是Global Regular Expression Print。grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.

使用格式:grep [options] ‘pattern’ filename

例:

grep -in 'searchtext' filex.log --col or grep -in --color=auto 'searchtext' filex.log //不区分大小写查询,输出行号,并且把结果高亮。

grep -c -i 'searchtext' * // 统计seachtext字符串在当前目录文件中分别出现多少行

grep -in --col searchtext * //不区分大小查询当前目录下所有的文件中出现searchtext出现的文件名、行号及所在行,并且高亮匹配的字符串。

grep -li -r searchtext *//不区分大小写的查询当前目录(子目录)的文件中包含searchtext的文件名

grep -B 5 --col searchtext * //查询匹配的后5行(最新的)。

grep -A 5 --col searchtext * //查询匹配的前5行(最老的)。

[options]主要参数:

-c:只输出匹配行的计数。

-i:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

sudo

find

find是文件查询命令。

最常用的格式:

find path -option

常用option:

-mtime n:根据文件内容最后修改时间查询,n表示以天的维度区间查询;

-mmin n:根据文件内容最后修改时间查询,n表示以分钟的维度区间查询;

-name pattern:按文件名匹配查询;

find . -size [+|-]n[G|M..]:按文件大小查询,n的单位可选,常用可选值为GorMor k

find . -type [d|f]:按文件类型查询,参数常用可选值为dorf,d表示目标,f表示文件。

示例:

find . -name 'my*' //查询当前目录下name是以my开头的所有文件。

find . -size +512k //查找当前目录下文件大小大于512k的文件

find . -size -512k //查找当前目录下文件大小小于512k的文件

find . -mmin -5 // 查找在当前目录下距离当前时间,5分钟内修改过的文件

find . -mtime -1 // 查询距离当前时间在24小时内里修改过的文件

find . -mtime +1 // 查询距离当前时间在24小时之前修改过的文件

find . -type f // 查询当前目录下的文件,不包括目录。

注1:

一般find和-exec一起使用

find . -mtime -1 -exec ls -l {} \;

find . -mtime -1 -exec grep -i xxx {} \;

注2:

1.mtime,ctime,atime区别:1)atime的意思是access file time; 2)ctime表示是change file time,ctime是指修改文件状态的时间,比如权限、分组等等,并不是修改文件内容;3)mtime表示修改文件内容的时间;

2.-mtime n、-mtime +n、-mtime -n的异别:1)-mtime:是针对文件内容修改时间进行查询,n,+n,-n三者查询时间区间完全不同; 2)-mtime n查询区间为,距离现在时间差在(n+1)*24hour ~ n*24hour 这个时间区间; 3) -mtime +n表示的查询区间是-∞ ~ n*24hour,即距离当前时间n24hour这个时间点之前的时间区间; 4)-mtime -n表示的查询区间是n*24hour ~ ∞,即距离当前时间n24hour这个时间点之后的时间区间

3.对于-mmin n,-mmin +n,-mmin -n的使用与-mtime n、-mtime +n、-mtime -n一样,区别是mmin搜索的时间维度是分钟。

stat

stat filename查看文件的相关信息。包括修改文件状态时间,最后一次进入时间,修改内容时间

exec

exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。

自己通常的用法是和find grep命令一起使用。

比如有这么一个场景,在/home/logs目录有很多日志文件,现在要查询一个错误日志,日志发生在昨天,但是具体不清楚在哪个文件里。

如果此时使用grep 'errorcodex' *在当前目录下查询所有文件的话将会很慢。

此时可使用如下命令

find . -mtime -1 -exec grep 'errorcodex' {}\;//此命令的作用是先用find查询出最近1天修改的文件,然后用exec调用grep命令在find查询出来的文件列表里查询(而不是查询全部的文件)。

注意:

1.这里的-exec后面的{} \; "空格" + “一对括号”+ \ + '空格'+ ;

2.花括号前面一定要有一个空格

3.最后一定要以分号结尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值