简介
- 操作系统:就是凌驾在
硬件
之上,用户和硬件沟通
的桥梁。- 常见分类:windows、Linux、Mac
组成
两部分组成
- Linux
内核
系统级
的应用
什么是发行版
- 为什么市面上有那么多的Linux版本
虚拟机
定义
模拟计算机硬件,给虚拟硬件装上操作系统
安装过程
下载安装器
在黑马程序员的linux教程的评论区会有好人给你留言下载地址
安装
更改一下位置,一直点击下一步即可
检查一下网络配置
- 控制面板 -》网络和共享中心-》更改适配器设置
- 检查一下有没有
VMnet1
和VMnet8
,是不是正常启用- 如果检查有问题,卸载之后重新安装
在VM上安装linux操作系统
下载centos系统文件
- 地址: https://pan.baidu.com/s/1B4oPTabYhK4HxhHK5zH1pA 提取码: 1234
- 更改虚拟机安装位置
- 更改虚拟机磁盘大小
- 自定义硬件-》修改内存大小(改为2g)
远程连接linux
工具finalshell
- 打开虚拟机,右键
open terminal
输入命令
ifconfig
,得到虚拟机ip
- 新建
ssh连接
链接成功之后,就可以操作了
扩展:在windows安装ubantu的子系统
- 常用方式:使用
虚拟机
安装centos(虚拟
linux硬件)- 轻量方式:使用
WSL
创建子系统(直连
windows硬件)
安装
配置环境
- 控制面板-》应用-》开启或者关闭应用
- 勾选
子系统
和虚拟机平台
在应用商店下载ubantu
- 启动ubantu,有的人显示
错误
,按任意键继续- 使用管理员 打开power shell 输入命令
wsl --set-default-version 1
回车,重新打开应用就好了
第一次启动需要创建用户名和密码
windows11自带了这款工具
windows terminal
,没有的话去应用商店下载
打开cmd或者power shell,
选择使用ubantu
此界面就是成功进入ubantu了
系统快照
- 在使用过程,因为各种原因,可能导致虚拟机的
损坏
- 使用
快照
,可以保留虚拟机在某个时刻的状态
- 后续可以用快照的
恢复
快照制作
关机
- 点开
快照管理器
拍摄快照
快照还原
- 点击快照管理器
- 点击
需要恢复的节点
- 点击
转到
每次使用快照恢复,就会
开辟一个新的分支
linux基础命令
linux目录结构
- 所有文件系统本质都是
树形结构
- linux:只有一个根节点,
所有的目录都是基于根目录
,根目录就是/
- windows:有一个
盘符
的概念,有多少盘符就有多少根目录
windows的目录结构
linux的目录结构
练习题
命令
命令行与命令
- 命令行:是一个操作页面,是linux的一个终端
Terminal
,用于输入命令- 命令:就是linux的操作指令
命令存在一个基础格式
示例
ls命令
语法
工作目录和home目录
- 当前工作目录:
当前所处在
的目录- home目录:每个用户在linux的
个人账户目录
,路径是/home/用户名
- 如果用户名是zhangsan,那么home目录就是/home/zhangsan
参数一
-a
就是展示所有的文件和文件夹,包括隐藏的
- linux系统中以点开头的文件和文件夹会被默认隐藏起来
ls -a /
-l
竖列
展示所有的文件和文件夹,展示更多信息
ls -l /
选项是可以
混合使用
的
ls -lh /
- 列表展示所有文件和文件夹的
大小
目录切换相关命令(cd/pwd)
- 掌握
cd切换
工作目录- 掌握
pwd展示
当前工作目录命令
cd命令
- cd全称:
change directory
- 语法:
cd 路径
- cd
没有选项,没有参数
,只需要一个路径
- cd 如果
没写路径
,默认切换到用户的home目录下
pwd 命令
- 展示
当前所在的工作目录
- 全称:print work directory
演示
cd 不写路径,就是用户的home目录
回到根目录
cd /
切换到指定目录
以/开头
的是绝对路径
- 以/开头的是
相对路径
cd bin
特殊路径符
cd ./desktop 当前目录的desktop
cd desktop 当前目录的desktop
cd .. 返回上一级目录
cd ../ 返回上一级目录
cd ../.. 返回上两级目录
cd ~ 返回用户的home目录
mkdir命令
- mkdir命令 创建目录:make directory
mkdir test1
创建深层目录的前提,是
父目录都存在
父目录不存在,需要创建
多级目录
,使用参数-p
touch 创建文件
语法
路径可以是绝对路径,也可以是相对路径
- 无选项,但是
参数(路径)必填
touch 路径
touch text1.txt
cat查看文件内容
- 查看文件内容
- 没有选项,但是
参数(路径)必填
cat 路径
cat text1.txt
more 支持翻页的查看
与cat 不同的是,
more支持翻页查看
- 空格可以翻页
q可以退出
cp复制文件
复制文件
cp text1.txt text2.txt
复制文件夹
cp -r test1 test2
mv移动文件
- 移动文件到指定目录(类似于windows的拖拽)
- 记得最后加斜杠,不然系统以为是文件
mv t1.txt test6/
改名 (一般用于同一级目录改名)
mv t1.txt t2.txt
移动文件夹
mv test2 test7/
文件夹改名
mv test3 test8
rm删除文件
语法
删除文件
rm t2.txt
删除文件夹 需要用到 -r
rm -r test1
删除多个文件或者文件夹
rm -r test test4 test5 test6 test7 test8
通配符删除文件
rm test*
通配符删除文件和文件夹,加上-r
rm -r test*
强制删除
,一般只有root用户有这个权限
管理员删除可能出现误操作,每次删除都会有提示
加上了-f是没有任何提示的
不要执行下述命令
which查找命令的程序文件
- 命令都是二进制,二进制存储在文件中,类似于windows的exe文件
- 可以通过which命令查找到 命令的文件在哪
which 命令
which pwd
find查找任意文件
在windows系统中有文件搜索功能
按照名字找
find / -name "test"
同删除文件一样,查找文件也是支持
模糊查询
的
find / -name "test*"
按照大小找
按照大小查找
find / -size +1G 找到大于1g的文件
ls -lh /proc/kcore 展示这个文件的详细信息,显示的是128T(这其实是一个虚拟文件)
grep过滤文件行
grep -n "齐天" t1.txt
wc命令统计数量
wc -c t1.txt 字节
wc -m t1.txt 字符
wc -l t1.txt 行数
wc -w t1.txt 单词数
管道符
管道符就是
|
cat t1.txt | grep -n "齐天"
和下面命令的效果是一样的
grep -n "齐天" t1.txt
在查询文件的使用 管道符,可以过滤很多无用信息(
把查询结果作为一个文件,对查询结果进行过滤
)
ls | grep -n t1
ls -l | grep -n t1
也可使用管道符查询有多少个符合条件(多个管道符号连用)
ls -l | wc -l 查询出所有的文件,统计数量
ls -l | grep -n t1 | wc -l 查询出所有文件,获取文件含有t1的,统计符合条件的数量
grep和wc小总结
echo命令
作用类似于
system.out.print
进阶用法反引号`
使用
反引号
,可以打印出命令的结果
打印出pwd的执行结果
echo `pwd`
重定向符
echo "222" > t1.txt
echo "333" >> t1.txt
进阶用法
可以把其他命令的结果重定向到新的文件中
ls > t1.txt
练习
echo "我当前的工作目录是:`pwd`" > t1.txt
tail命令
- 显示文件的最后几行的内容,默认10行
- tail命令 一般用于
日志追踪
-f
选项一般用于源源不断有内容输入的情况
-f
是持续命令,可以使用ctrl + c
退出
vim命令
三种命令模式
语法
运行模式
底线命令模式就是快捷键
例如:
yyp就是复制粘贴
dd就是删除
命令模式常见的快捷键
认知root 用户
root用户是
权限最大
的用户
普通用户在自己的home目录下是没有权限限制的
- 一旦出了home目录,基本上就没有啥权限了
su与exit
su全称:Switch user
切换用户
演示
su - root
exit
临时权限sudo
- 上面讲述了如何切换到root用户,但是root的权限是非常大的,
不建议长期使用root用户
- sudo可以
临时
使用root
用户的权限执行命令
使用root用户赋予用户权限
visudo
使用sudo命令
根目录只有root用户有权限创建文件
,可以使用sudo获得临时权限
touch t1.txt
sudo touch t1.txt
用户和用户组
linux对权限的控制分为两个级别
- 针对
用户
的权限控制- 针对
用户组
的权限控制
用户组
groupadd study
groupdel study
用户
添加用户
添加用户的时候如果什么选项都不选
- 默认创建与
用户名同名的home
文件夹- 会加入到
同名的用户组下面
useradd testuser
cd /home
ls
指定用户组为
study
、home目录为testuser2222
id testuser2 查看用户的信息
useradd testuser2 -g study -d /home/testuser2222
cd /home
ls
id testuser2
删除用户
userdel -r testuser
用户home目录消失了
查看用户所属的组
id testuser2
更改用户的组
默认是加到同名的组下面的
将用户testuser3加到study组下
usermod -aG study testuser3
用户同时属于
两个组
getent
展示系统
有多少用户
getent passwd
展示系统有多少组
getent group
查看控制权限
10个槽位,除了第一个,
剩下的9个分为3组
用户
权限组
权限其他
用户权限
权限分为三种rwx
- r:read读权限
- w:write写权限
x:execute 执行权限
chmod权限修改
示例
查看test1的权限
ls -l |grep -n test
将所有的用户都改成 rwx
chmod -R u=rwx,g=rwx,o=rwx test1
还可以使用
数字代表权限字符
将所有的权限修改为rwx
chmod -R 751 test1
ls -l |grep -n test
练习
chown 修改文件的所属用户和用户组
语法
示例
修改文件
chown zhouzili:zhouzili t1.txt
修改文件夹
使用-R选项
chown -R zhouzili:zhouzili t1
ls -l |grep -n t1
快捷键
强制停止
Ctrl + C
退出、登出
Ctrl + D
历史命令搜索
history
最近的历史命令搜索
Ctrl + R 搜索
光标变化
清屏
clear
yum 安装软件
语法
报错Cannot find a valid baseurl for repo: base/7/x86_64
- 有时候在使用yum命令的时候会报错Cannot find a valid baseurl for repo: base/7/x86_64
- 这个报错如果排除网络的问题,那就是
仓库源的问题,替换为国内淘宝的镜像源
- 不熟练的操作者建议使用
vim
进行操作- 参考连接:https://blog.csdn.net/g310773517/article/details/140321025
备份
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
找到文件并修改源
- 使用 100dd(快捷键)删除文件内容
- 粘贴新的配置内容
- :wq退出并保存
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
清理并且重建缓存
这个过程大概需要5分钟,期间不要动它
sudo yum clean all
sudo yum makecache
sudo yum update
示例 安装wget
搜索
先搜索一下
yum search wget
安装
安装,
使用-y避免频繁确认
yum -y install wget
卸载
yum -y remove wget
apt安装
- 这个命令是
ubantu
系统的安装命令,效果上等同于centos的yum命令
切换到root用户
- 很有可能使用的是创建的个人用户,此时root用户是没有密码的,也没有默认密码
- 需要
临时授权个人用户设置root的密码
sudo passwd 按回车
- 会依次让你输入root密码和个人账户密码
- 切换为root用户
su - root
安装
su root
apt -y install wget
搜索和安装是一样的就不一一演示了
apt search wget
apt -y remove wget
systemctl 命令控制软件的启动和关闭
查看防火墙服务的状态
systemctl status firewalld.service
关闭防火墙
systemctl stop firewalld.service
开启防火墙
systemctl start firewalld.service
关闭开机自启
systemctl disable firewalld.service
查看一下状态
开启开机自启
systemctl enable firewalld.service
查看一下状态
第三方软件搭配systemctl 辅助进行软件控制
yum -y install ntp
yum -y install httpd
启动一下软件
systemctl status ntpd
systemctl start ntpd
systemctl enable ntpd
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service
ln创建软链接
ln -s t1.txt t2.txt
ls -l
此时此刻,t1.txt和t2.txt是完全一体,修改一个另外一个也会变化
date 命令查看时间与时区
格式化为我们常见的日期格式
date +%Y-%m-%d
- 有的时候我们需要再日期和时间之间加上一个空格
- 空格会默认默认为两个参数,这个时候就
需要使用双引号 作为一个整体
日期做加减法
获取明天的日期
date -d "+1 day"
当前日期加1年
date -d "+1 year" +%Y-%m-%d
修改时区
- 删除原本的时区文件
- 将时区文件连接到 上海的时区文件中
rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
再次使用date查看时间,就变成了东八区的时间
使用ntpd校准时区
- 启动服务
- 设置开机自启动
systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd
IP地址和主机名
特殊ip地址
主机名
hostname
设置主机名称
hostnamectl set-hostname newName
查看修改之后的主机名
域名解析
IP地址是难以记忆,可以使用域名代替IP
配置固定ip
配置网关和网段
打开虚拟网络编辑器
配置
nat配置,设置网管和网段保持一致
配置固定ip
切换到root用户
su - root
修改配置文件
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
IPADDR="192.168.88.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
重启网络
systemctl restart network
查看网络
ifconfig
下载和网络请求
ping命令
ping -c 3 www.baidu.com
wget 下载文件
wget http://nginx.org/download/nginx-1.11.7.tar.gz
curl 发起请求
使用 -o 和 wget是一样效果
curl cip.cc
端口
作用
定位
app和进程
分类
查看开放的端口
先安装nmap
yum -y install nmap
查看指定IP
开放的端口
nmap 127.0.0.1
查看被占用的端口
安装程序
yum -y install net-tools
查看
所有
占用端口
- 很多,根本看不过来
netstat -anp
搭配
管道符
过滤一下
- 6000 端口有没有被占用(
能够查到就是被占用了
)
netstat -anp | grep 6000
端口6000被占用了,但是没有6000这个进程
进程
定义
查看进程
ps -ef
配合管道符过滤
端口
ps -ef | grep 22
过滤
命令
ps -ef | grep tail
关闭进程
一般会选择
强制关闭
进程
kill 72503
kill -9 74612
主机的使用情况
系统的资源占用
top
选项
显示某个进程
top -p 1
刷新时间
top -d 10
显示完整命令
top -c
刷新次数
top -n 3
分批展示,一般搭配 次数,然后重定向到文件中
top -b -n 3 > 1.txt
快捷键
磁盘信息监控
df -h
iostat 命令 CPU和磁盘信息
iostat
iostat -x
iostat 3 4
监控网络
sar -n DEV 10 3
环境变量
查看环境变量
环境变量采用的使用
键值对
,使用等号
作为连接符号
env
可以搭配 管道符 进行
过滤
环境变量依赖于
PATH
这个路径
env | grep PATH
$直接获取值
如果你提前知道了 键值对的键,想要获取值,可以直接使用
美元符号$
echo $PATH
- 如果需要将环境变量进行拼接,则需要使用
大括号
进行包裹- 例如:输出PATH的环境变量,同时接上 ABCD
不使用花括号,就会寻找PATHABCD的环境变量,两者混在一起了
使用花括号包裹,标注哪个才是环境变量
echo ${PATH}ABCD
设置环境变量
临时设置(只针对本次登录
有效)
export TEST=123
永久设置(当前用户)
- 找到指定文件
- 新增环境变量,保存退出
- 使用source 激活环境变量
vim ~/.bashrc
source ~/.bashrc
echo $TEST
修改文件:新增最后一行 (使用
export
命令)
结果(对当前用户永久生效)
对其他用户无效
自定义环境变量PATH
PATH是系统的
搜索路径
,我们可以在此路径中加入自己写的程序
创建文件,在文件中写入命令
touch printhaha
vim printhaha
改变一下 文件的权限,让文件有执行权限
chmod 755 printhaha
ls -l
当前目录可以直接直接执行
./printhaha
将存放程序的目录写入到PATH中,就可以 在任何地方执行这条命令了
使用费root账户编辑文件
vim /etc/profile
在文件的末尾加上这句话
- 含义:在原有的PATH环境变量的基础上加上 :~/myenv
export PATH=$PATH:~/myenv
激活此文件的配置
source /etc/profile
配置生效了
任何地方都可以执行 printhaha 命令了
printhaha
文件上传和下载
使用finalshell进行上传和下载
下载
- 找到指定的文件,点击下载即可
找到你要上传的目录,直接在windows上拖拽就可以将文件上传上去
文件资源的图形化页面
- 即使你在命令行的中使用su - root 切换了权限,但是图形化页面还是没有root权限
图形化界面的权限只和 你的登录账户有关
,如果想要root的权限,就是用root账户登录
rz和sz命令
下载程序lrzsz
yum -y install lrzsz
下载
sz 1.txt
上传
- 使用rz命令之后就会打开一个串口,但是
很慢
- 讲义使用拖拽的方式
rz
压缩和解压
压缩格式
压缩常见选项
如果有f选项,此选项一定要放在最后,但是此选项的参数必须放在第一个
- z选项一般是放在第一个选项
常见的组合方式
- 将1.txt 2.txt和3.txt压缩到文件test.tar中
tar -cvf test.tar 1.txt 2.txt
tar -zcvf test.tar.gz 1.txt 2.txt
解压常见选项
解压到当前目录
tar -xvf test.tar
解压到指定目录,使用
C选项
tar -xvf test.tar -C temp
解药gz类型文件需要使用
z选项
tar -zxvf test.tar.gz -C temp/
zip压缩模式(在linux中用的少)
压缩文件
zip test.zip 1.txt 2.txt
压缩文件夹
zip -r test2.zip 1.txt 2.txt temp2
解压
将test2.zip解压到当前目录
unzip test2.zip
解压到
指定目录
需要用到d选项
unzip test2.zip -d temp