Linux基础概述
Linux基础目录
Linux没有盘符这个概念, 只有一个顶级根目录 /
, 所有文件都在它下面
- 在Windows系统中路径之间的层级关系使用
/
来表示 - 在Linux系统中路径之间的层级关系使用
/
来表示,出现在开头的/
表示根目录,/home/a.txt
表示根目录下的home文件夹内有a.txt文件
home目录存放每个Linux操作用户在Linux系统的个人专属工作目录(HOME目录),普通用户的HOME目录在/home/用户名
,root用户的HOME目录在/root
- Linux系统的命令行终端在启动的时候默认会把工作目录设置到home目录下的当前用户的HOME目录
命令和命令行
命令和命令行的概念
命令行
: 即Linux终端,可以提供字符化的操作页面去执行各种字符化命令从而对系统发出操作指令命令
: 一个命令就是一个Linux程序,命令没有图形化界面而是以字符化的形式去使用,执行命令在终端会得到字符化的反馈
命令基础格式: command [-options] [parameter]
command
: 命令本身-options
:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter
:[可选,非必填]命令的参数,多数用于命令的指向目标等
查看命令的帮助
Linux中的命令它们所拥有的选项都是非常多的,我们只需要了解一些常见选项的作用即可
命令 --help
: 查看命令选项的帮助手册
man 命令
:查看命令的详细手册
- 大多数手册都是全英文的,可以通过重定向符man ls > ls-man.txt输出手册到文件,然后通过翻译软件翻译内容查看
常见快捷键
命令 | 作用 |
---|---|
ctrl + a | 跳到命令开头 |
ctrl + e | 跳到命令结尾 |
ctrl + 键盘左键 | 向左跳一个单词 |
ctrl + 键盘右键 | 向右跳一个单词 |
ctrl + l | 清空终端内容(执行命令clear也可以) |
ctrl + c
: 强制停止
ctrl + d
: 退出或登出(不能用于退出vi/vim)
history
: 查看历史输入过的命令
! 命令前缀
: 自动执行上一次匹配前缀的命令,在历史命令中从下往上去匹配然后执行ctrl + r
: 输入关键字去匹配历史命令,回车键可以直接执行,键盘左右键可以得到此命令但不执行等待修改
路径与特殊符
相对路径不需以/
开头以当前目录作为起点, 绝对路径以/
开头表示以根目录作为起点
- 如test/a.txt表示当前工作目录内的test文件夹内的a.txt文件
- 如/test/a.txt表示根目录下的test文件夹内的a.txt文件
特殊路径符
.
表示当前目录,比如./a.txt表示当前文件夹内的a.txt文件..
表示上级目录,比如…/表示上级目录,…/…/表示上级目录的上级目录~
表示用户的HOME目录,比如cd ~
可切回用户的HOME目录
文件和目录的常用命令
命令语法格式 | 功能 |
---|---|
ls [-l -h -a] [可选参数] | 列出文件夹信息 |
pwd | 展示当前所在的工作目录 |
cd [目标目录的路径] | 切换目录 |
mkdir [-p] 参数 | 创建一级或者多级文件夹 |
touch 参数 | 创建文件 |
cat 参数 | 查看文件(直接将内容全部显示出来) |
more 参数 | 查看文件内容(将文件内容按页展示, 空格键翻页,q退出查看) |
cp [-r] 参数1 参数2 | 复制文件或文件夹 |
mv 参数1 参数2 | 移动文件或文件夹,也有重命名的效果 |
rm [-r -f] 参数...参数 | 删除多个文件或文件夹 |
which 参数 | 查看命令的程序文件路径 |
find 搜索的起始路径 -name "参数" | 按文件名搜索文件(文件名是个字符串) |
find 搜索的起始路径 -size +或-n[KMG] | 按文件大小查照文件 |
查看文件/目录命令
ls [-l -h -a] [参数]
:表示以平铺形式列出当前工作目录下的内容(选项和参数可以组合使用,如ls -lah,ls -al /bin)
-l选项(list)
: 以列表形式查看文件夹的内容,并展示更多细节(ls -l 可以简写为 ll
)-h选项
: 以更加人性化的方式显示文件的单位(如K,M,G),必须和-l选项搭配使用(单独使用没用)-a(all)选项
: 列出全部文件(包含以"."开头的隐藏文件/文件夹)参数
: 指定要查看的文件夹路径,不提供参数表示查看当前工作目录的内容
cd [目标目录的路径]
: 切换目录
- 参数: 指定要切换到的目录, 如果不使用参数表示回到用户的HOME目录
pwd
: 查看当前所在的工作目录
- 无选项无参数
cat 参数
: 查看文件(直接将内容全部显示出来)
- 参数表示被查看的文件路径, 相对、绝对、特殊路径符都可以使用
more 参数
: 查看文件内容(将文件内容按页展示, 空格键翻页,q退出查看)
- 参数表示被查看的文件路径, 相对、绝对、特殊路径符都可以使用
tail [-f -num] 参数
: 可以查看文件尾部内容,跟踪文件的最新更改
-f 选项
: 持续跟踪文件的修改(开启两个连接,第一个连接中创建一个test.txt文件并持续跟踪文件更改, 第二个连接中向test.txt文件中追加内容,观察跟踪情况)-num 选项
: 表示查看尾部多少行,不填默认10行参数
:表示被查看/跟踪的文件路径
head [-n] 参数
: 查看文件头部内容
-n选项
: 查看头部多少行参数
:被查看的文件路径
创建删除文件/文件夹
mkdir [-p] 参数
: 创建一级或者多级文件夹
- -p: 表示自动创建不存在的父目录,适用于创建连续多层级的目录
- 参数: 表示要创建的文件夹的路径,相对、绝对、特殊路径符均可以使用
- 注意创建文件夹需要修改权限,普通用户请确保操作均在当前用户的HOME目录内,在HOME外操作涉及到权限问题
touch 参数
: 创建文件
参数
: 表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
rm [-r -f] 参数...参数
: 删除多个文件或文件夹,rm -rf /
效果等同于在Windows上执行C盘格式化
参数
:表示要删除的文件或文件夹路径,按照空格隔开-r选项
:表示递归用于删除文件夹-f选项
:表示强制删除用于屏蔽删除文件或文件夹时弹出的确认提示(普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示)
*rm命令支持通配符做模糊匹配, 表示匹配任意内容包含空
test*
表示匹配任何以test开头的内容*test
表示匹配任何以test结尾的内容*test*
表示匹配任何包含test的内容
复制/移动文件夹
cp [-r] 参数1 参数2
:复制文件或文件夹
-r选项
: 表示递归用于复制文件夹参数1
: 表示被复制的文件或文件夹的路径参数2
: 表示被复制的文件或文件夹要被复制到的路径
mv 参数1 参数2
: 移动文件或文件夹,也有重命名的效果
参数1
:被移动的文件或文件夹参数2
:被移动的文件或文件夹要移动去的路径,如果要移动去的路径不存在则会对被移动的文件夹或文件进行改名
查找文件/命令
which 参数
: 查看命令的程序文件路径(Linux命令本体就是一个个的二进制可执行程序文件)
-
参数
:要查找的命令
find 搜索的起始路径 -name "参数"
: 按文件名搜索文件(文件名是个字符串) -
参数
: 被查找文件名支持通配符*
来做模糊查询, 符号*
表示匹配任意内容包含空
find 搜索的起始路径 -size +或-n[KMG]
: 按文件大小查照文件
- +表示大于、- 表示小于 , n表示大小数字, kmg表示大小单位要小写,k表示kb,M表示MB,G表示GB
- 查找根目录下小于10KB的文件: find / -size -10k
文件上传和下载命令
在FinalShell软件的下方窗体中提供了Linux的文件系统视图方便本机和虚拟机进行数据交换
- 浏览文件系统找到合适的文件,右键点击下载文件就会自动下载到本地电脑桌面上的fsdownload文件夹中
- 浏览文件系统找到合适的目录,将本地电脑的文件拖拽进入目录即可完成数据上传到Linux系统中
通过rz、sz命令进行文件的上传和下载, 使用命令前需要安装程序: yum -y install lrzsz
rz
: 执行命令后会自动弹出文件系统窗口选择你要上传的文件即可(上传速度较慢)sz Linux中要下载的文件
: 文件会自动下载到桌面的fsdownload文件夹中
文件压缩和解压命令
常见的文件压缩格式: zip格式(Linux、Windows、MacOS常用),7zip(Windows系统常用),rar(Windows系统常用),tar(Linux、MacOS常用),gzip(Linux、MacOS常用)
- 在Windows系统中如winrar、bandizip等软件都支持各类常见的压缩格式
在Linux系统中压缩或解压后缀名为tar、gz格式的文件
tarball格式
: 简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少gzip格式
: 使用gzip压缩算法将文件压缩到一个文件.gz(tar.gz)内,可以极大的减少压缩后的体积
tar [-c -v -x -f -z -C] 压缩成或解压的文件 参数1...参数N
: 针对文件进行压缩和解压缩
-c选项
: 创建压缩文件,用于压缩模式-v选项
: 显示压缩、解压过程,用于查看进度-x选项
: 解压模式-f选项
(必须在选项组合体的最后一位): 要创建或要解压的文件-z选项
(建议在开头第一位): 使用gzip模式压缩解压.gz文件,不使用-z就是普通的tarball格式-C选项
: 选择解压的目的地(单独使用和解压所需的其它参数分开)
常见的压缩文件组合
tar -cvf test.tar 1.txt 2.txt 3.txt
: 使用普通的tarball格式将1.txt 2.txt 3.txt压缩到test.tar文件内tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
: 使用gzip模式将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内
常见的解压文件组合
tar -xvf test.tar
: 将解压test.tar文件解压至当前目录tar -xvf test.tar -C /home/itheima
: 将test.tar文件解压到指定目录/home/itheimatar -zxvf test.tar.gz -C /home/itheima
: 以gzip模式将test.tar.gz文件解压至指定目录/home/itheima
zip [-r] 压缩成或解压的文件 参数1...参数N
: 压缩文件位zip格式
- -r选项
: 用于被压缩的包含文件夹的时候
#将a.txt b.txt c.txt压缩到test.zip文件内
zip test.zip a.txt b.txt c.txt()
#将test、itheima两个文件夹和a.txt文件压缩到test.zip文件内
- zip -r test.zip test itheima a.txt
unzip 被解压的zip压缩包文件 [-d]
: 解压zip格式的压缩包,解压的时候出现同名的文件/文件夹会直接替换
-d选项
: 指定要解压去的位置,同tar的-C选项
#将test.zip解压到当前目录
unzip test.zip
#将test.zip解压到指定文件夹内/home/itheima
unzip test.zip -d /home/itheima
过滤,文件统计,管道
grep [-n] 参数1 参数2
: 从文件中通过关键字过滤出符合的文件行
选项-n
: 表示在结果中显示匹配的行的行号参数1
: 表示过滤的关键字(带有空格或其它特殊符号的关键字建议使用""
包围起来)参数2
: 表示要过滤的文件路径(文件路径可以不写,此时需要将管道符的内容输出结果作为grep命令的内容输入)
wc [-c -m -l -w] 参数
: 统计文件的行数、单词数量等
-c选项
: 统计bytes数量-m选项
: 统计字符数量-l选项
: 统计行数-w选项
: 统计单词数量参数
: 表示被统计的文件路径(文件路径可以不写,此时需要将管道符的内容输出结果作为wc命令的内容输入)
|
: 将管道符左边命令的结果,作为右边命令的输入,多个管道符可以嵌套
- 管道符左边命令的内容输出结果可作为右边grep或者wc命令的第二个参数表示内容输入
echo,反引号,重定向符
echo 参数
: 在命令行内输出指定内容
- ·参数·:表示要输出的内容,复杂内容可以用""包围
反引号
: 将其包围的内容当作命令执行而非普通字符
重定向符
重定向符可以将符号左边的结果,输出到右边指定的文件中去
>
: 将左侧命令的结果,覆盖写入到符号右侧指定的文件中>>
: 将左侧命令的结果,追加写入到符号右侧指定的文件中表示追加输出
虚拟机相关命令
查看IP地址和主机名
每一台联网的电脑都会有一个IP地址用于和其它计算机进行通讯,IP地址就像每台电脑的身份证号用于在网络中进行定位
- IP地址主要有2个版本,IPV4版本和IPV6版本(V6很少用)
- IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字(如192.168.88.101就是个标准的ip地址)
特殊的IP地址
127.0.0.1
: 本地回环IP用于指代本机0.0.0.0
: 可以用于指代本机,可以在端口绑定中用来确定绑定关系,在一些IP地址限制中表示所有IP(如在放行规则中表示允许任意IP访问)
ifconfig
: 查看本机的ip地址,无法使用ifconfig命令需要安装net-tools: yum -y install net-tools
无论是Windows或Linux系统每一台电脑除了对外联络的IP地址还可以有一个主机名
hostname
: 查看主机名hostnamectl set-hostname 主机名
: 修改主机名(需要root权限),远程连接服务需要重新登录才能查看更新
查看端口
端口是设备与外界通讯交流的出入口,可分为物理端口和虚拟端口两类
- 物理端口:是可见的端口又可称之为接口,如USB接口,RJ45网口,HDMI端口等
- 虚拟端口:是指计算机内部不可见的端口,是用来操作系统和外部进行交互使用的
计算机程序之间的通讯过程: 首先通过IP地址锁定计算机,然后通过端口锁定该计算机上具体的某个程序
Linux系统可以支持65535个端口,这6万多个端口分为3类进行使用,其中公认端口
- 公认端口范围1~1023: 非特殊需要不要占用, 用于一些系统内置或知名程序的预留使用,如SSH服务的22端口(远程连接Linux使用的),HTTPS服务的443端口
- 注册端口范围1024~49151: 通常可以随意使用,用于松散的绑定一些程序\服务(用户自定义)
- 动态端口范围49152~65535: 通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用(多用于出口)
nmap 被查看的IP地址
: 查看指定IP地址的计算机对外暴露的端口占用情况
- 使用命令前需要安装nmap程序:
yum -y install nmap
netstat -anp | grep 端口号
: 过滤端口号和进程号查看本机端口号的占用情况,如果过滤不出来结果说明端口没有被占用
- 使用命令前需安装netstat程序:
yum -y install net-tools
- 0.0.0.0:6000表示端口绑定在0.0.0.0这个IP地址(指向本机),表示允许外部访问
- 7174是进程号表示其占用了当前系统6000端口
查看服务
netstat -tunlp
查看已经启动的服务
#查看启动的mysql服务
netstat -tunlp | grep mysql
查看进程
操作系统为了方便管理运行的程序,在程序运行的时候会将其注册为系统中的一个进程并分配一个独有的进程ID(进程号)
ps [-e -f]
: 查看Linux系统中的进程信息
- -e选项:表示显示出全部的进程,配合管道符过滤出指定关键字的进程信息
- -f选项:表示以完全格式化的形式展示进行的全部信息
过滤不仅仅可以过滤名称,进程号,用户ID等等,输出结果的任何关键字被可以grep过滤
- 在当前连接中执行tail命令时程序会一直阻塞在那里,重新复制一个连接执行ps -ef 找出tail这个程序的进程信息
kill [-9] 进行ID
: 关闭进程,强制进程关闭提示已杀死,提醒进程关闭提示已终止
- -9选项: 表示强制关闭进程, 不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制
查看主机状态
top
:查看CPU、内存使用情况(类似Windows的任务管理器), 默认每5秒刷新一次(按q或ctrl + c退出)
- 第一行含义: top表示当前程序名称, 当前系统时间,up min表示系统启动了多少分,users表示几个用户登录系统,load average表示1、5、15分钟的平均负载
- 第二行含义: Tasks表示进程:running运行,sleeping睡眠,stopped停止,zombie僵尸
- 第三行含义 :%Cpu(s)表示CPU使用率:us表示用户CPU使用率,sy表示系统CPU使用率,ni表示高优先级进程占用CPU时间百分比,id表示空闲CPU率
- wa表示IO等待CPU占用率,hi表示CPU硬件中断率,si表示CPU软件中断率,st表示强制等待占用CPU率
- 第四行含义: Kib Mem表示物理内存:total总量,free空闲,used使用,buff/cache表示buff和cache占用
- 第五行含义: KibSwap表示虚拟内存(交换空间),avail Mem可用内存
进行内容详解
- PID:进程id, USER:进程所属用户, PR:进程优先级,越小越高, NI:负值表示高优先级,正表示低优先级
- VIRT:进程使用虚拟内存,单位KB, RES:进程使用物理内存,单位KB, SHR:进程使用共享内存,单位KB
- S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
- %CPU:进程占用CPU率, %MEM:进程占用内存率
- TIME+:进程使用CPU时间总计,单位10毫秒
- COMMAND:进程的命令或名称或程序文件路径
top命令的其他选项
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
df [-h]
: 查看硬盘的使用情况
- 使用命令前安装sysstat程序包含iostat,vmstat,sar:三个指令
yum install sysstat
- -h选项:以更加人性化的单位显示
iostat [-x] [num1] [num2]
: 查看CPU、磁盘的速率相关信息
- ·-x选项·:显示更多信息
- ·num1·:指定刷新间隔
- ·num2·:指定刷新几次
- ·tps·:该设备每秒的传输次数, “一次传输"表示"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的
使用iostat的-x
选项,可以显示更多信息
rrqm/s
:每秒这个设备相关的读取请求有多少被Merge了wrqm/s
: 每秒这个设备相关的写入请求有多少被Merge了rsec/s
: 每秒读取的扇区数wsec/s
: 每秒写入的扇区数rKB/s
: 每秒发送到设备的读取请求数**wKB/s
: 每秒发送到设备的写入请求数**avgrq-sz
: 平均请求扇区的大小avgqu-sz
: 平均请求队列的长度。毫无疑问,队列长度越短越好。await
: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。svctm
: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)%util
: 磁盘利用率
sar -n DEV num1 num2
:查看网络的相关统计
- -n选项: 查看网络
- DEV: 表示查看网络接口
- num1:指定刷新间隔(不填就查看一次结束)
- num2:指定查看次数(不填无限次数
查看环境变量
环境变量是操作系统(Windows、Linux、Mac)在运行的时候记录的一些关键性信息,用以辅助系统运行
env
: 查看当前Linux系统中配置的环境变量信息- 环境变量是一种KeyValue型结构(名称=值)
- 环境变量的作用: 命令本质上就是一个个的可执行程序, cd命令的本体就是/usr/bin/cd这个程序文件, 无论当前工作目录在哪里都能执行cd命令
环境变量PATH记录了系统执行命令的搜索路径(路径之间以:隔开),执行任何命令时会按照顺序从这些路径中搜索要执行的程序的本体并执行
$
: 用于取”变量”的值,$PATH表示取得PATH这个环境变量的值,{}标注取得变量是谁
export 变量名=变量值
: 临时设置变量的值,系统重启的时候变量的值就取不到了
vi ~/.bashrc文件
: 在这个文件中设置的变量值只针对当前用户生效,在其他用户中就取不到变量的值
vi /etc/profile
: 在这个文件中设置的变量值针对所有用户生效,在所有用户中都能取到变量的值
source 配置文件
: 使配置的文件立刻生效
在当前目录下创建一个文件haha,并给其赋予执行权限chmod 755 haha(绿色效果)
,此时只能在当前目录下执行haha文件
#通过vim编辑器,在m文件内填入echo 哈哈哈
echo "哈哈哈"
编写/etc/profile
文件修改环境变量PATH的值,加入自定义的命令搜索路径,这样就可以在任意目录下执行haha文件
#在全局环境变量文件中加入自定义的命令搜索路径
#在用户环境变量文件或系统环境变量文件中也可以加入
export PATH=$PATH:要执行命令的绝对路径
其他命令
systemctl命令
Linux系统的很多内置或第三方的软件均支持使用systemctl命令
控制软件(服务)的启动、停止、开机自启
systemctl start(启动) 或 stop(关闭) 或 status(查看状态) 或 enable(开启开机自启) disable(关闭开机自启) 服务名
: 控制服务的状态
系统内置的服务
: NetworkManager(主网络服务), network(副网络服务), firewalld(防火墙服务), sshd/ssh(远程登录Linux使用的就是这个服务)第三方软件安装后自动集成的服务
: ntpd服务,httpd服务(部分软件安装后如果没有自动集成到systemctl中需要我们手动添加)
#安装ntp软件后会有ntpd服务名
yum install -y ntp
#安装apache服务器软件会有httpd服务
yum install -y httpd
软链接
ln -s 参数1 参数2
: 将文件、文件夹链接到其它位置(类似Windows系统中的快捷方式指向原来的文件/文件夹),访问链接后的文件/文件夹和访问本体效果相同
-s选项
: 创建软链接,在环境变量中访也可以使用软连接代替本体文件参数1
:被链接的文件或文件夹(绝对路径)参数2
:要链接去的地方
执行命令
sh 命令(可以包含相对或绝对路径) 参数
: 执行指定目录下的shell命令程序
./命令 参数
: 表示执行当前目录下的命令程序
网络传输
ping [-c num] ip或主机名
: 检查指定的网络服务器是否是可联通状态
-c选项
:指定检查的次数,不指定次数将无限次数持续检查ip或主机名
: 指定被检查的服务器的ip地址或主机名地址
wget [-b] url
: wget是非交互式的文件下载器,可以在命令行内下载网络文件(无论下载是否完成都会生成要下载的文件,需要及时清理未完成的不可用文件)
-b选项
:允许后台下载,此时会将日志写入到当前工作目录的wget-log文件(tail -f wget-log
命令可以持续监控后台下载进度)url
: 表示要下载的网络文件的链接
# 安装wget程序
yum install wget
wget https://nginx.org/download/nginx-1.24.0.tar.gz
crul [-O] url
:发送http网络请求,可用于下载文件、获取信息等
-O选项
:用于下载文件, 当url是下载链接时可以使用此选项保存下载的文件url
: 指定要发起请求的网络地址,这个地址可以是下载的链接后者是普通的网络请求
#向cip.cc发起网络请求(获取主机的公网IP地址)
curl cip.cc
#向python.itheima.com发起网络请求(返回网页的源代码)
curl python.itheima.com
#通过curl下载hadoop-3.3.0安装包
curl -O http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
日期格式化命令
data [-d] [+格式化字符串]
: 在命令行中查看系统的时间
-d选项
:按照给定的字符串显示日期,一般用于日期计算格式化字符串
:控制显示的日期格式(字符串中间有空格时需要使用双引号包围)
格式化字符串 |
---|
%Y 年(四位数) |
%y 年份后两位数字 (00…99) |
%m 月份 (01…12) |
%d 日 (01…31) |
%H 小时 (00…23) |
%M 分钟 (00…59) |
%S 秒 (00…60) |
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数 |
按照给定的字符串显示日期(-d选项可以和格式化字符串配合使用)
支持的时间标记
:year年,month月,day天,hour小时,minute分钟,second秒