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的单位可选,常用可选值为G
orM
or k
find . -type [d|f]
:按文件类型查询,参数常用可选值为d
orf
,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.最后一定要以分号结尾