Linux命令大全

Linux命令大全

参考:《鸟哥Linux的私房菜》

# 目录

1. 系统资源查看命令

2. 文件与进程相关命令

3. 网络与进程相关命令

4. 磁盘相关命令

5. 压缩、ACL控制等工具命令


1. 系统资源查看命令

一.查看系统整体负载:w,uptime,top
[root@ScuCloud2532_15:33:30 /root]#w
15:44:13 up 202 days,  1:09,  1 user,  load average: 0.06, 0.13, 0.08
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/2    202.115.52.214   15:33    5.00s  0.06s  0.01s w
[root@ScuCloud2532_15:44:13 /root]#uptime
15:48:06 up 202 days,  1:13,  1 user,  load average: 0.28, 0.14, 0.09

1.Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。
2.负载在3左右说明负载均衡,大于5负载过高,load average反应1,5,15分钟负载平均值。

#top提供了比w、uptime更多的信息,能够查看CPU/内存/IO的实时负载情况

二.free命令查看内存详细内存负载情况
[root@ScuCloud2532_15:59:40 /root]#free
          total        used        free      shared  buff/cache   available
Mem:        3881056     3349956      135324        1768      395776      196552
Swap:      16777212     3372768    13404444

1.free命令用来查看内存使用情况,包括物理内存和虚拟内存(swap)
2.total是总大小,used是已使用大小,free是空余大小,buff/cache是内存缓冲区大小,available表示还可以被应用程序使用的物理大小
3.free和available的区别是:free 是真正尚未被使用的物理内存数量,available是从应用程序的角度看到的可用内存数量,available = free + buff/cache。

三. iostat查看更加具体的IO负载情况
[root@ScuCloud2532_15:59:42 /root]#iostat
Linux 3.10.0-862.9.1.el7.x86_64 (ScuCloud2532)     06/30/2019     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.97    0.00    0.66    0.02    0.00   98.34

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
fd0               0.00         0.00         0.00         16          0
sdb               0.00         0.00         0.00       1803       2093
sda               3.68        11.55        26.95  201612820  470560389
sdc               0.00         0.00         0.00       1040          0
dm-0              1.36         3.07         2.35   53645104   41103892
dm-1              0.00         0.00         0.00        599       209

1. 关注iowait(cpu等待输入输出时间百分比)和idle(cpu空闲时间百分比),前者高说明硬盘存在IO瓶颈。后者高说明cpu较空闲
2. 下面是每块硬盘的使用情况,可以看出sda和dm-0使用较多,参数分别显示了每块硬盘的读写速度以及读写总数

四. netstat查看网络情况
参考1:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html(详细但啰嗦)
参考2:https://linux.cn/article-2434-1.html (直接告诉有哪些用法)

五. 查看Linux机器信息
参考:https://my.oschina.net/hunterli/blog/140783 (作查询使用)

2. 文件与进程相关命令

1. 常用命令
参考:https://blog.csdn.net/Evankaka/article/details/49227669 (不是特别详细,有的命令需要自己找)
#ls/ll(ll可以查看文件更详细信息)
#cd
#cp
#mkdir
#rm/rmdir(删除空目录)
#mv(移动)
#du(显示目前目录所占磁盘空间)
#df(显示当前磁盘剩余空间)
#cat(除了显示文件还可以合并两个文件到一个文件)
#more(可以向后翻页),less(可以向前也可以向后翻页,比more强大)
#tail(只看后n行,甚至可以实时监控某个文件)
#head(只看前n行)
#pwd
#clear
#grep(查找关键词)
#find(满足各种奇葩的文件查找需求)
#awk(比grep更强大,面试中常见)
#touch(修改文件时间或创建新文件)
#lsof(列出被进程所打开的文件名)


2. find命令
参考:https://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html (find和grep的详细用法)
#用法:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件
#常用表达:find [path...] [expression]
#参数解释:
- path:find命令所查找的目录路径
- expression:限制条件和用来处理的shell(所以使用这个命令最好掌握一些shell脚本的写法)
#使用举例:find ./ -size 0 -exec rm {} \;(删除大小为0的文件)
#可以用作筛选条件的选项:文件名、文件权限、所属用户、文件更改时间、文件大小、文件类型等。

3. grep命令
#用法:grep能够使用正则表达式搜索文本并把匹配的文本行打印出来
#常用表达:grep [OPTIONS] PATTERN [FILE...]
grep的使用基础是正则表达式,学习这个命令最好的办法是创建一个文件,然后实际操作一遍。

4. awk命令
参考:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html (还挺详细的)
#用法:awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
暂时不分析了,学完shell再来分析

5. ps命令(非常常用的进程查看命令)
#列出系统当前运行的进程快照
#常用表达:ps [操作],如ps -aux(通常会用一个管道符|结合grep查找某一个进程的pid)
#使用举例:查找名为java的进程相关信息,ps -ef | grep java

5. 查看某个执行命令某个进程相关的信息
[root@ScuCloud2532_09:21:59 /root]#ps -ef|grep python
root      1142     1  0  2018 ?        00:29:22 /usr/bin/python -Es /usr/sbin/tuned -l -P
root      5516  2240  0 09:22 pts/2    00:00:00 grep --color=auto python
[root@ScuCloud2532_09:22:07 /root]#ll /proc/1142
total 0
dr-xr-xr-x 2 root root 0 Jul  1 09:21 attr
-rw-r--r-- 1 root root 0 Jul  1 09:21 autogroup
-r-------- 1 root root 0 Jul  1 09:21 auxv
-r--r--r-- 1 root root 0 Jul  1 09:21 cgroup
--w------- 1 root root 0 Jul  1 09:21 clear_refs
-r--r--r-- 1 root root 0 May 29 09:32 cmdline
-rw-r--r-- 1 root root 0 Jul  1 09:21 comm
-rw-r--r-- 1 root root 0 Jul  1 09:21 coredump_filter
-r--r--r-- 1 root root 0 Jul  1 09:21 cpuset
lrwxrwxrwx 1 root root 0 Jul  1 09:21 cwd -> /
-r-------- 1 root root 0 Jul  1 09:21 environ
lrwxrwxrwx 1 root root 0 Jul  1 09:21 exe -> /usr/bin/python2.7
...

- 首先通过ps命令找到属于python的进程pid
- 然后用在/proc目录下找到1142这个pid的相关信息

6. lsof命令
#用法:lsof可以列出当前进程打开的文件
#常用实例:
- lsof 文件名:查看哪个进程再使用指定文件
- lsof -p pid:查看指定进程打开了哪些文件
- lsof -i:80:显示所有打开80端口的进程

3. 网络与进程相关命令