总览:入门级常用指令
Linux命令非常多,工作中遇到某个场景需要处理时,只需上网查询,或在终端通过man命令或--help参数查询,掌握常见指令即可完成对目录和文件的基本操作。


一、查看路径的相关指令(pwd,tree)
Linux中经常需要频繁切换目录,为确保在目标目录下操作,需要知道如何查询当前路径。
pwd列出从根目录起的绝对路径

tree命令,树状展示(“ . ”表示当前目录," .. "表示上层目录)的目录与文件,-a参数显示隐藏文件,目录下如有子目录或子文件会进一步展开,并在末尾统计目录与文件的总数。

二、查找与归档的指令(find, tar)
find 查询目录中的指定内容
例:find -name '*.txt',查找的txt文件以当前当前目录" . "起始的所有目录下的txt文件(*通配符)

tar 用于执行文件归档,实际常用来打包和解包文件,特别是tar.gz后缀的包
tar -cvf 包名 文件1 文件2 把文件1和文件2组合打包
tar -xvf 包名 在当前目录解压缩


tar -zcvf 包名.tar.gz 文件1 文件2 把文件1和文件2组合打包成tar.gz格式的包
tar -zxvf 包名.tar.gz 在当前目录下解压缩 tar.gz的包

tar -zxvf,解压tar.gz的包
tar --help 和man tar 可以查询该命令的详细使用说明
参数含义:c归档,x提取,v列出详细信息,f常规文件,z过滤gzip格式

三、查看进程的指令(ps,ss)
通过ps和ss指令可以查看linux系统的进程运行情况,类似于windows的进程管理器

ps 展示当前正在运行的进程(PID,进程ID; TTY,teleprinter抽象设备,bash是一种shell程序)
ps -A 展示所有进程
ps -u root 展示当前用户的进程
terminal,模拟终端,是人机交互的窗口
shell程序负责从终端获取指令并传递给linux内核,bash就是一种shell程序,开机即运行
有关terminal、TTY、shell、bash的区别与联系,详见参考链接。

ps -u root,显示指定用户的进程
ps -ef 查看所有进程并了解进程背后的程序,支持| grep过滤

ps -ef | grep ssh 查找ssh的相关进程(grep负责做文本筛查)
ps -ef | grep mysql 查找mysql的相关进程


ss ,Socket Statistics的缩写,该指令用于查看套接字(进程间通信的接口,包含源ip目标ip端口的数据结构,分为TCP于UDP套接字)统计信息,比netstat指令更快

ss -t -a,显示所有tcp套接字
ss -u -a ,显示所有udp套接字
ss -lp | grep 22 ,显示所有监听状态的套接字进程信息,端口22

四、查看文档的指令(cat, head)
cat 文件名,查看指定文件的内容
cat -n 1.txt > 11.txt,把1.txt每行标行号并写入11.txt
head 文档文件,默认显示文档前10行
head -n 文件 展示文件前n行的信息


head 11.txt,显示11.txt前10行
五、文档的排序与去重(sort,uniq)
sort seqnum.txt 按照每行首列字符的ASCII码(空字符0,0~9对应49~57,A~Z对应65~90,a~z对应97~122)升序排列
如下图所示,seqnum.txt中包含了若干数字,执行sort并不是按照数字大小排序,而是按照第一列的ASCII码排序,若首列相同,比如1和18,再比较第二列的ASCII,数字的ASCII大于空字符。
如果要按照数字大小执行排序,需要添加-n的参数。
参数:
-n 按照数字排序,-u 升序排列并去重,-r 降序排列

sort -n seqnum.txt 按照数字大小排序
uniq指令可以对文本去重,但是只能去重相邻行的重复项,常搭配sort指令使用
uniq seq.txt 只关心相邻行的去重
sort seq.txt | uniq
sort seq.txt | uniq -c 列出重复项出现的次数
sort seq.txt | uniq -d 列出重复项
六、网络抓包分析(tcpdump)
tcpdump 主机 目的网站域名
输入tcpdump host blog.csdn.net,查看本机与csdn网站的通信情况,在另建终端(ctrl+Alt+T)中,ping csdn,csdn IP123.129.226.59,ping通表示可以正常通信,tcpdump界面显示正在监听enp0s3网卡,本机request,csdn reply,更深入的网络抓包分析在此不探讨。

七、内存、性能查看(top, htop, free)
查看机器是否在正常运行,类似于在windows中调用任务管理器


第一行表示,当前时间16:06,系统已运行两个半小时,一位用户在线,平均负载情况。
重点关注 load average(1min/5min/10min的平均负载)
单核CPU负载为1表示正常跑满,以通行能力为十辆车的桥梁为例,5辆车可以顺畅同行,20辆车需要排队。通常认为单核0.7负载正常(4核就对应2.8,8核对应5.6,以此类推),超过1需要关注,超过5则系统接近死机,需要寻找解决方案。
表头含义
PID ,进程ID
USER,用户(超级用户、普通用户、进程用户)
PR,优先级
VIRT,虚拟内存的使用总量
RES,未使用的物理内存总量
SHR,共享内存总量

free 简要显示内存使用量 -m以M兆为单位输出内存的用量


参考链接:
ASCII码对照表,ASCII码一览表(非常详细) - C语言中文网
(4 封私信 / 6 条消息) 大佬们,可不可以通俗的说一下什么是套接字? - 知乎
Linux 黑话解释:TTY 是什么? | Linux 中国 - 知乎