常见的操作系统:
Linux系统由以下两部分组成:
内核提供最核心的功能,如调度cpu,调度内存,调度文件系统,调度网络通讯,调度IO等系统级应用程序,可以理解为出厂自带程序,可供用户快速上手操作系统;
Linux系统内核是开源的,项目源码:The Linux Kernel Archives
由此推理,这意味着厂商只需集成自己的系统级别的应用程序便可推出自己的Linux发行版,常见的Linux系统如Ubuntu,CentOS等便是这样发行出来的;
请自行安装你想要的linux操作系统。
Ubuntu系统安装:VMware虚拟机安装Ubuntu20.04详细图文教程_ubuntu安装教程_好像很好吃的博客-CSDN博客
CentOS系统安装:CentOS7(Linux)详细安装教程(图文详解)_centos7安装_缄默.ńī給の傷的博客-CSDN博客
windows subsystem for Linux.是用于windows系统之中的Linux子系统,可以在windows系统之上的Linux系统中,获得Linux系统环境,并完全直连计算机硬件,直接使用主机的物理硬件,构建Linux操作系统,并且并不会影响windows系统的运行。WSL是windows自带功能,需要开启,无需下载。
WSL部署方法:部署WSL
在学习阶段很有可能由于误操作损坏当前系统,可以通过快照将当前虚拟机的状态保存下来,在以后可以通过快照恢复虚拟机保存的状态。该操作在关机状态下保存快照效率较高。
Linux系统快照使用方法
和windows一样,Linux的目录结构为树形结构,windows系统可以有多个盘符,但是在linux中没有盘符这个概念,只有一个根目录:/,所有文件都在它下面。也就是说windows中可以有多个盘符,继而可以有很多树,但是在linux系统中只有一棵树。
command [-options] [-parameters]
示例:
ls -l /home/user
以列表的形式,显示/home/user目录中的内容;
cp -r test1 test2
复制文件夹test1成为test2
作用: 列出目录下的内容。
ls [-a -l -h] [linux路径]
-a -l -h 为可选参数
[linux路径] 是此命令可选的参数。如果不使用选项和参数,直接使用ls命令本体,表示以平铺形式,列出当前工作目录下的内容
作用: 切换目录。 change directory
cd [Linux路径]
cd命令无需选项,只有参数,表示要切换到哪个目录下;
cd命令直接执行,不写参数,表示回到用户的Home目录下;
作用: 查看当前工作目录。 print work directory
无选项,无参数;
作用: 通过mkdir命令可以创建新的目录。Make Directory
mkdir [-p] linux路径
-p 可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录;
作用: 创建文件
touch Linux路径/文件
touch命令无选项,参数必填,表示要创建的文件路径,相对,绝对,特殊路径符均可以使用;
作用: 查看文件内容
cat Linux路径/文件
cat同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对,绝对,特殊路径等都可以使用;
作用: 查看文件内容
与cat不同的是:cat是直接将内容全部显示出来,more支持翻页,如果文件内容过多,可以一页一页的展示;空格翻页,q退出;
more Linux路径
同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对,绝对,特殊路径等都可以使用;
作用: 复制文件或者文件夹,cp来源于英文单词copy
cp [-r] 参数1,参数2
-r选项,可选,用于复制文件夹使用,表示递归;
参数1,Linux路径,表示被复制的文件或文件夹;
参数2,Linux路径,表示要复制去的地方;
作用: 移动文件或者文件夹,mv来源于英文单词move
mv 参数1,参数2
参数1,Linux路径,表示被移动的文件或文件夹;
参数2,Linux路径,表示要移动去的地方;
如果参数2和参数1的文件名不一致,则表明移动并改名;
删除文件或者文件夹,rm来源于英文单词remove
rm [-r -f] 参数1,参数2...参数n
-r :用于删除文件夹
-f : force,强制删除不提示。
参数表示要删除的文件或文件夹,空格隔开;
【普通用户删除内容不会弹出提示,只有root用户删除内容会有提示;所以一般普通用户用不到-f选项。这里普通用户的权限实际上是提前设置好的,也就是默认是安全的,但是root用户的权限太高了,容易发生误操作,因此root用户删除文件的时候会有提示】
rm命令支持通配符*
su - root 临时切换用户;
exit命令退回普通用户;
作用: 查找命令的位置,只针对于命令;
前面提到所有的命令的本质实际上都是一个linux程序,那么如何找到这些程序的位置呢?这里就可以用到which
which 要查找的命令
作用: 搜索指定文件
find 起始路径 -name "被查找文件名“
find / -name “test”
作用: 搜索指定文件
find 起始路径 -size +|-[kMG]
示例:
作用: 从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
选项 -n,可选,表示在结果中显示匹配的行的行号。
参数 关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用” “将关键字包围起来;
参数 文件路径,必填,表示要过滤内容的文件路径,可作为内容输出端口;
作用: 数量统计,可以通过wc命令统计文件的行数,单词数量等;
wc [-c -m -l -w ] 文件路径
-c : 统计bytes数量
-m : 统计字符数量
-l : 统计行数
-w : 统计单词数量
文件路径:被统计的文件,可作为内容输入端口;
将管道符左边命令的结果,作为右边命令的输入
ls | grep test
ls -l /usr/bin | wc -l
echo 要输出的内容
建议使用双引号将其括起来。
‘’的作用为:被其括起来的内容会被当作命令去执行;
echo ‘pwd’
输出pwd执行后的内容;
>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中;
>>,将左侧命令的结果,追加写入到符号右侧指定的文件中;
作用: 查看文件尾部内容,跟踪文件的最新更改;
tail [-f -num] Linux路径
-f,表示持续跟踪;
-num,表示查看尾部多少行,默认为10行;
这里的-f指持续的跟踪:
tail -f -10 1.txt
如果使用了-f这里会输出1.txt文件的最后10行,但是不会停止,如果另外开一个终端,修改1.txt的内容,此时,最后10行的数据会发生变化,即持续追踪效果。终止追踪为ctrl c.
visual interface,vim 是 vi 的加强版,兼容所有命令,不仅能编辑文本,而且还具有shell程序编辑的功能。
命令模式下,所敲的按键,编辑其都认为其为命令,以命令驱动执行不同的功能。此模型下不能自由进行文本编辑;
输入模式下,可以对文件内容进行自由编辑。
以:开始,通常用于文件的保存,退出。
vi 文件路径
作用: 如果文件存在,此命令用于编辑新文件;如果文件不存在,此命令用于编辑已有文件;
/ | 进入搜索模式 |
---|---|
n | 向下继续搜索 |
N | 向上自动搜索 |
dd | 删除光标所在行 |
ndd | n是数字,删除当前光标向下几行 |
yy | 复制当前行 |
nyy | n是数字,复制当前行和下面几行 |
p | 粘贴复制的内容 |
u | 撤销修改 |
ctrl +r | 反向撤销修改 |
gg | 跳到首行 |
G | 跳到行尾 |
wq | 保存并退出 |
---|---|
q | 仅退出 |
q! | 强制退出 |
w | 仅保存 |
set nu | 显示行号 |
set paste | 设置粘贴模式 |
超级管理员,拥有最大权限的用户;
普通用户的权限,一般在其HOME目录内是不受限的,一旦出了Home目录,大多数地方,普通用户仅有只读和执行权限,无修改权限;
**作用:**用户账户切换,switch user
su [-] [用户名]
-:可选,表示切换用户后加载环境变量,建议带上;
用户名 :可以省略,表示root用户;
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键ctrl + d;
普通用户切换账户需要密码,但是root用户不需要密码;
sudo:临时获得root权限;但并不是所有用户都可以使用sudo,我们需要为普通用户配置sudo认证;
如何配置:
切换到root用户,执行:
visudo
会自动通过vi编辑器打开/etc/sudoers
在文件的最后添加:
用户名 ALL=(ALL) NOPASSWD:ALL
编辑完之后进行保存即可;
Linux系统中可以:
Linux中关于权限管控的级别分为2个,分别是:
比如:针对某个文件,可以控制用户的权限,也可以控制用户组的权限;
以下命令需root用户执行
创建用户组 : groupadd 用户组名
删除用户组: groupdel 用户组名
以下命令需root用户执行
创建用户:useradd[-g,-d] 用户组名;
-g : 指定用户的组,如果不指定,则会创建同名组并自动加入;指定-g需要用户组已经存在,如果已经存在同名用户组,则必须使用-g;
-d : 指定用户Home路径,不指定,Home目录默认在:/home/用户名;
删除用户: userdel [-r] 用户名;
-r:删除用户的Home目录;如果不使用-r,则删除用户时,Home目录保留;
查看用户所属组:id 用户名
修改用户所属组: usermod -aG 用户组 用户名,将指定用户加入指定用户组;
作用: 查看当前系统中有哪些用户
getent paddwd 查看用户信息
getent group 查看用户组信息
结果中共有7份信息,分别是:用户名:密码:用户Id:用户组id:HOME目录,执行终端,默认bash;
权限细节一共有10个槽位:
第一个槽位表示文件类型:
后面3个代表所属用户权限;再后面3个表示用户组权限,再后面3个表示其它用户权限;
举例:drwxr-xr-x
首字母d表示这是一个文件夹;所属用户的权限:rwx;所属用户组的权限:r-x;其它用户的权限:r-x;
作用: 修改文件,文件夹的权限信息;
chmod [-R] 权限 文件或文件夹;
-R: 递归执行,对文件夹内所有内容执行同样的操作;
权限可以写数字,也可以:
chmod u=wx,g=rx,o=x hello.txt
其中:u表示user所属用户权限,g表示group组权限,o表示other其他用户权限;
使用chown命令,可以修改文件,文件夹的所属用户和用户组。此命令只有root用户才能执行。
chown [-R] [用户] [:] [用户组] 文件或文件夹
-R :同chmod,对文件夹内全部内容应用相同规则;
示例:
ctrl + c 强制停止;
ctrl + d 登出或退出;
history 历史命令;
ctrl + a :跳到命令开头;
ctrl + e : 跳到命令结尾;
ctrl + 键盘左键,向左跳一个单词;
ctrl + 键盘右键,向右跳一个单词;
ctrl + l :清屏
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
yum [-y] [install | remove | search] 软件名称
-y : 自动确认,无需手动确认安装或卸载过程;
install : 安装
remove: 卸载
search : 搜索
yum search wget;
apt [-y] [install | remove | search] 软件名称
使用方法跟yum一样。
Linux系统很多软件均支持使用systemctl命令控制:启动,停止,和开机启动。能够被systemctl管理的软件,一般也称其为服务;
systemctl start | stop | status | enable | disable 服务名
除了内置的服务,部分第三方服务安装后会自动启程到systemctl中,因此也可以通过systemctl控制第三方服务
比如:安装第三方服务:
yum install -y ntp
安装成功后,该服务会自动注册自己为系统服务,并且服务名为软件名+d,于是,可以这样控制其自启动:
systemctl enable ntpd;
也有一些软件安装后不会自动集成进systemctl中,我们可以手动添加。
ln命令创建软链接
在系统中创建软链接,可以将文件,文件夹链接到其它位置。类似Windows中的快捷方式。
ln -s 参数1 参数2
-s : 创建软链接
参数1 : 被链接的文件或文件夹
参数2: 要链接去的地方;
查看系统时间
date [-d] [+格式化的字符串]
-d : 按照给定的字符串显示日期,一般用作日期计算
格式化字符串:%Y 年
date “+%Y-%M-%d %H-%M-%S”
date -d “+1 day” +%Y-%M-%d %H-%M-%S" //显示后一天的日期
date -d “+1 month” +%Y-%M-%d %H-%M-%S" //显示后一个月的日期
date -d “+1 year” +%Y-%M-%d %H-%M-%S"//显示一年后的日期
实际应该东八区
使用root权限:
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
将系统自带的localtime文件删除,并将 /usr/share/zoneinfo/Asia/Shanghai 链接为localtime
自动校准系统时间
安装npt:
yum -y install ntp
启动并设置开机自启:
systemctl shart ntpd
systemctl enable ntpd
当ntp程序自动启动后会帮助我们校准系统时间;
也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com
每一台联网的电脑都会有一个地址,用于和其他计算机进行通讯。IP地址主要有2个版本,v4版本和v6版本,v4版本的地址格式是:
a.b.c.d
其中abcd都是0-255的数字,如192.168.88.101就是一个IP地址。
通过ifconfig命令查看本机的IP地址;
127.0.0.1 这个IP地址用于指代本机;
0.0.0.0 可以用于指代本机;可以在端口绑定中用来确定绑定关系;在一些IP地址限制中,表示所有IP的意思:如放行规则设置为0.0.0.0,表示允许任意IP访问;
每一台电脑除了IP地址以外,也可以有一个名字,称之为主机名
查看主机名:hostname
修改主机名:hostnamectl set-hostname 新主机名
域名解析
IP地址实际上是非常难记的,那么就要想一个办法使得这种记忆变得简单一些,而日常生活中,我们也正是这么用的:www.baidu.com 是百度的域名,也就是这个ip地址的映射。
即:先查看本机的记录(私人地址本)
如果没有,再联网去公共的DNS服务器查找。
比如我们连接远程主机是通过ip地址连接的,那么有没有可能通过域名(主机名)连接?
可以,我们只需要在Windows系统的C:\Windows\System32\drivers\etc\hosts文件配置记录即可。
为什么需要固定ip地址?
我们Linux操作系统的IP地址是通过DHCP服务获取的,DHCP:动态获取ip地址即每次重启设备后都会获取一次,可能导致ip地址频繁变更。
检查指定的网络服务器是否是可连通状态
ping [-c num] ip或主机名
选项:-c ,检查的次数,不使用-c选项,将无限次数持续检查;
参数:ip或主机名,被检查的服务器的ip地址或主机名地址。
非交互式的文件下载器,可以在命令行中下载网络文件;
wget [-b] url
选项: -b , 可选,后台下载 ,会将日志写入到当前工作目录的wget-log文件
参数:url,下载链接
可以发送http网络请求,可用于下载文件,获取信息等;
curl [-O] url
-O: 用于下载文件,当url是下载链接时,可以使用此选项保存文件;
curl cip.cc
此命令作用跟浏览器的地址栏一模一样。
端口,是设备与外界通讯交流的出入口,端口可以分为:物理端口和虚拟端口两类;
我们知道:两台电脑可以通过ip地址找到对方;但是电脑A中的qq如何和电脑B中的qq进行通信呢?只靠ip地址仅仅能找到对方电脑,通过端口才能找到某一个具体的程序;
Linux系统中有65535个端口,这些端口被划分为三类:
查看端口占用
使用nmap命令,安装:yum -y install nmap
nmap 被查看的ip地址
namp 127.0.0.1
使用netstat命令,查看指定端口的占用情况。安装:yum -y install net-tools
语法:netstat -anp|grep 端口号
程序运行在操作系统中,被操作系统所管理,而为了管理运行的程序,每个程序在运行时,都被操作系统注册为系统中的一个进程,并会为每一个进程都分配一个独有的进程ID(进程号)。
查看Linux系统中的进程信息
ps [-e -f]
uid:进程所属用户ID
pid:进程号
ppid:进程的父id(启动此进程的其他进程)
C:此进程的cpu占用率
STIME:进程的启动时间;
TTY:启动此进程的终端序号,?表示非终端启动
TIME:进程占用cpu的时间
CMD: 进程对应的名称或启动路径或启动命令;
kill [-9] 进程id
可以通过top命令查看CPU,内存使用情况,类似任务管理器,该信息每隔5秒刷新一次;
top
top -p num //显示某个具体的进程
第一行:
- top - 14:39:58 up 6 min , 2 users, load average: 0.06, 0.17, 0.13
第二行:
Tasks: 175 total, 1 running,174 sleeping, 0 stopped, 0 zombie;
第三行:
%Cpu(s): 0.3us, 1.4sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0si, 0.0st
第四五行:
Kib MEM:物理内存,KibSwap :虚拟内存,total 总量,free 空闲,used 使用,buff/cache占用
作用: 磁盘信息监控,查看磁盘的使用情况;
df [-h]
选项:-h,以更加人性化的单位显示
作用: 查看cpu,磁盘速率的相关信息;
iostat [-X] [num1] [num2]
作用: 查看网络相关统计
sar -n DEV num1 num2
-n : 查看网络,DEV表示查看网络接口;
num1:刷新间隔(不填就查看一次结束)
num2:查看次数(不填就查看无限次数)
前面说过,每个Linux命令都是一个程序,那么为什么无论当前工作目录在哪里,都能执行/usr/bin/cd这个程序呢?这就是环境变量的效果。这个就是借助环境变量中PATH这个项目的值来做到的。
环境变量是操作系统在运行的时候,记录的一些关键性信息,用以辅助系统运行。环境变量是一种KeyValue型结构,即名称和值
作用: 查看当前系统中的环境变量
env | grep PATH
作用: 在Linux系统中,$符号被用来取“变量的”值。
环境变量中记录的信息,除了给操作系统自己使用之外,也可以被我们所用
echo $PATH
echo ${PATH}/ABC
针对当前用户生效,配置在当前用户的 ~/bashrc文件中;
针对所有用户生效,配置在系统的 /etc/profile文件中;
并通过语法:source 配置文件,进行立即生效,或重新登录后生效;
可以自己写一个小程序,然后将路径添加进环境变量,这样就可以在任何地方进行运行。
作用: 进行文件传输
安装: yum -y install lrzsz
rz 上传,直接输入rz即可
sz 下载,后跟需要下载的文件;
文件会自动下载到桌面的fsdownload文件夹中;
Linux系统中常用的有两种压缩格式,后缀名分别是:
.tar,称之为tarball,归档文件,即简单的文件组装到一个tar文件内,并没有太多文件体积的减少;
.gz,即使用gzip压缩算法压缩到一个文件内,可以极大的减少压缩后的体积;
tar [-c -v -x -f -z -C] 参数1,参数2...参数n
-c | 创建压缩文件,用于压缩模式 |
---|---|
-v | 显示压缩解压过程,用于查看进度 |
-x | 解压模式 |
-f | 要创建或解压的文件,-f选项必须在所有选项中位置处于最后一个 |
-z | gzip模式,不使用-z就是普通的tarball格式 |
-C | 选择解压的目的地,用于解压模式 |
示例:
压缩:
tar -cvf test.tar 1.txt 2.txt 将后两个文件压缩进前面的压缩包
tar -zcvf test.tar.gz 1.txt 2.txt 同上,指定使用gzip模式
-z一般处于第一个位置;-f选项,必须在选项位的最后一个;
解压:
tar -xvf test.tar
tar -xvf test.tar -C /home/it
tar -zxvf test.tar.gz 解压.tar.gz文件
作用: 压缩文件
zip [-r] 参数1 参数2…
-r: 被压缩的包含文件夹的时候递归压缩
使用unzip命令,可以方便的解压zip压缩包
语法:unzip [-d] 参数
-d 指定要解压去的位置,同tar的-C一样
参数,被解压的zip压缩包文件