Linux入门
Linux 入门
前置知识
- VMware:虚拟机,用来安装 Linux 系统。
- Linux 系统:比如 Ubuntu、CentOS。
- xshell:通过 ssh 连接到 Linux 系统
- vscode:ssh 远程连接 Linux 系统进行开发
Linux 是操作系统
Linux 是个内核,包装起来就出现了不同的发行版。比如 Centos、Ubuntu 等。
Linux 和 unix 的关系:unix 衍生出 Linux
开发环境配置
安装 VMware
虚拟机:VMware Workstation 17pro
安装 Ubuntu
Ubuntu 密码:123456
Centos 密码:xbs
Centos 发行版安装
安装版本:CentOS 8.1 和 7.6 版本
https://vault.centos.org/8.1.1911/isos/x86_64/
https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/
Linux 分区:需要手动分区,分成 boot、swap、根分区

安装 VMtools
作用:使主机和 Linux 虚拟机可以共享文件夹
网络连接的三种方式
- 桥接模式:虚拟机和主机在同一个网段,可以和外界通讯
- NAT 模式:虚拟机和主机不在同一个网段,但是可以和外界通讯
- 主机模式:独立系统,不能和外界通讯
快照、克隆、删除
远程登陆
xshell:远程登陆
xftp:文件下载和上传

协议 sftp 端口号 22 协议 ftp 对应端口号为 21
vscode 远程连接 Ubuntu
- 服务端手动启动 Openssh 服务(openssh 是实现 ssh 协议的软件)
sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh检查是否开启 ssh 服务
sudo systemctl status ssh- vscode 端安装 remote-ssh 插件(用 trae 不用安这个插件,直接用远程资源管理器。)

远程连接

image-20250919101426186 
image-20250919101443983 输入用户名 @host -A。host 指的 Linux 服务器的 IP 地址。可以通过
ifconfig查看。(ifconfig 查看的是内网 IP。)vscode 远程连接 Centos 系统报错:无法建立连接:远程主机不满足运行 vscode 服务器的先决条件。
原因是 VS Code 远程开发需要 glibc ≥ 2.28。
通过命令 ldd --version 查看 glibc 版本发现低于 2.28。
解决办法:回退 vscode 版本 1.98。
在终端中好用的快捷键:ctrl+a 光标跳到开头 ctrl+e 光标跳到末尾 ctrl+u 清除一行
终端就是用户和操作系统进行交互的窗口。终端内置命令行解释器(shell),比如 Windows 下的 cmd powershell 以及 Linux 下的 bash。命令行解释器的作用是把用户输入的命令进行解析,交给操作系统来执行命令, 然后把结果返回到终端。
目录结构
Linux 一切皆文件

/etc/password 用户的配置文件
/etc/shadow 口令的配置文件
/etc/group 组的配置文件
vim 的使用
正常模式(可以删除拷贝) 插入模式(按 i) 命令行模式(按 esc 退出插入模式,再输入:wq。写入并退出)
删除一行 dd
拷贝一行 yy
在一般模式下 输入 G 定位到首行 输入 gg 定位到末行
撤销 u
定位 :+要定位的行号
查找 /【要查找的内容】
设置行号 :set nu
常见操作
如何安装软件
在官网下载的软件安装包可能是 AppImage 类型:
以屏幕截图软件 snipaste 为例;
//首先进入安装包所在目录
cd /home/xbs/Downloads/
//添加可执行权限
sudo chmod +x Snipaste-2.10.8-x86_64.AppImage
//直接运行
./Snipaste-2.10.8-x86_64.AppImage常用 shell 命令
sudo su让你从当前的普通用户,变成系统的最高管理员(root 用户),并一直保持最高权限,直到你退出。
命令提示符最后一个字符是$,代表普通用户;是#,代表root用户。
cd .. 切换到根目录
pwd 显示当前所在目录
切换成root管理员 su - root
返回原先的用户 logout
man 获取命令信息
ls -a 列出所有文件(包括隐藏文件 .开头的是隐藏文件)
ls -l 一行行的显示
ls -lh 文件大小信息按正常人类习惯显示
mkdir 创建文件夹 -p创建多级文件夹
touch 创建空文件
cp 【要拷贝的对象】 【拷贝到哪】-r 递归复制整个文件夹
强制覆盖 \cp
mv 移动或重命名
rm -rf 目录 强制删除
cat 查看文件内容 -n显示行号 (一般后面会跟上管道命令|more)
less 也可以查看文件内容
echo 输出内容到控制台
head -n 数字 文件 查看文件头几行
tail -n 数字 文件 查看文件尾几行
tail还可以用于实时监控 -f参数
tail -f /home/mydate.txt
重定向 >(覆盖写) >>(追加写) 例子:echo hello > /home/mydate.txt
ls -l /home >> /home/info.txt 将home目录下的文件列表写入info.txt中
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
ln指令:
软链接、类似快捷方式,指向特定的路径。
ln -s /root /home/myroot 在home目录下创建一个软链接myroot,连接到root目录
readlink /home/myroot 会得到/root /home/myroot的大小就是/root路径名的大小,也就是5个字节。
ln 源文件 链接名 创建硬链接
history 10 查看最近10个指令
!5 执行历史记录为5的指令搜索查找类
find /home -name hello.txt 查找home目录下的hello.txt
find / -size +200M 查找系统中大于200M的文件
locate 快速定位文件路径
由于locate基于数据库查询,所以第一次运行的时候,必须使用updatedb指令创建数据库。
which 查看某个指令在哪个目录
grep过滤查找 常结合管道指令使用。
何为管道指令:| 表示将前一个命令的处理结果传递给后面的命令处理
在hello.txt文件中,查找yes所在的行,并显示行号
cat hello.txt |grep -n "yes"压缩和解压指令
gzip 压缩
gunzip 解压
常用:
zip xxx.zip 要压缩的文件或文件夹
unzip -d 目录
zip -r myhome.zip /home -r表示递归压缩
将myhome.zip解压到/opt/tmp目录下
unzip -d /opt/temp myhome.zip
tar指令可以压缩可以解压缩
解压:tar -zxvf pc.tar.gz -C /opt/temp -C 指定解压到哪里
压缩 tar -zcvf /home/hello.java定时调度crond
定时去调度某个脚本或者命令(数据库备份等)
crontab -e编辑 -l显示 -r删除
service crond restart 重启任务调度
定时任务at:队列里面有很多作业;atd每隔60s检测队列,如果作业和当前时间匹配,就执行此作业。对每个作业只会执行一次,执行完毕后将作业从队列中移除。
首先要确保开启atd进程:
ps -ef 检查进程
我们只关心atd进程,因为采用过滤命令。
ps -ef | grep atd例子:
、
atrm 编号 删除指定编号的任务

用户管理
- 添加用户
useradd 用户名(默认用户家目录在 /home 文件夹下)
useradd -d 指定目录 用户名 给创建的用户制定家目录
passwd 用户名: 设置密码
- 删除用户
删除用户,保留其家目录的内容:userdel 用户名
都删掉:userdel -r 用户名
查询用户 id 用户名
切换用户 su - 用户名
查看当前登陆用户 whoami
用户组
添加用户时没有指定组名,那么系统会默认生成跟用户名相同的组名。
groupadd 组名
groupdel 组名
useradd -g 用户组 用户名
usermod -g 用户组 用户名
运行级别
常用运行级别 3 和 5。
级别 1 可以用来找回密码
通过 init【0123456】切换不同运行级别
systemctl get-default 查看默认运行级别
面试题:如何找回 root 密码
进入单用户模式(级别 1)
绝对路径:/ 表示根目录。从根目录写起。
cd /root 切换到 root 目录
相对路径:. 表示当前目录 .. 表示父目录
例子:root 目录和 home 目录并列。当前目录是 root 目录,如何切换到 home 目录
cd ../home
cd ~ 回到当前登陆用户的家目录(比如 /home/tome/)
cd .. 回到当前目录的上一级目录
例子:使用相对路径切换到 root 目录,当前目录在 /home/tome。cd ../../root
组
对于一个文件而已,他存在一个所有者。存在一个所在组。组内的用户对该文件就有一定的权限。
ls -ahl 查看所有者
chown 所有者 文件名 修改文件的所有者
chgrp 组名 文件名 修改文件所在的组
同时修改所有者和所在组 chown 所有者:所在组 文件名
红色方框就是文件的所有者。
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
用户权限

- 代表普通文件
权限作用到目录:

权限作用到文件:
chmod 修改权限
通过数字来修改权限 

代码: chmod g+rwx wu
注意区分 chmod 和 chown 。chmod 是修改文件或目录的权限;chown 是修改文件或目录的所有者
分区

lsblk 命令 查看设备挂载信息

SCSI 硬盘标识为 sdx~。x 为盘号 可以是 abcd。~ 是数字,表示该硬盘的第几个分区

添加硬盘 -》设置分区 -》格式化 -》挂载
格式化:

挂载:

取消挂载:umount
重启后挂载就失效了。因此需要设置开机自动挂载。

查询系统整体磁盘使用情况;

查询指定目录的磁盘占用情况:

常用的磁盘命令:


说明:wc 命令是统计单词个数。
网络配置
linux 系统 ip 虚拟机 vmnet8 主机 ip
ip 在同一个网段才能进行通信。
系统默认采用的 DHCP(自动分配 IP),每次开机后都会重新分配 IP。这样会导致 IP 经常发生变化。因此要学会如何手动配置 IP。
hostname 命令查看主机名。 在 /etc/hostname 中修改主机名。重启后生效。

ping 主机名的时候,会去 host 文件中寻找有没有该主机名和 ip 地址的映射关系。找不到映射关系,就 ping 不通。
所以我们要修改 host 文件,设置映射关系。(好像就是 DNS 域名解析)

如何修改 hosts 文件,参考该文章 https://zhuanlan.zhihu.com/p/438447914
用户在浏览器输入网址,DNS 是如何将网址转化成 ip 地址的。

进程
进程:执行的程序
PID:每个进程会分配一个 ID 号
进程:前台进程(屏幕可以直接看到的)、后台进程
僵死进程:进程已经终止了,但是还占用内存资源。
ps 命令查看当前进程有哪些
ps -aux
image-20251103145101579
查看某个进程的父进程:

终止进程:
killall 进程名:该进程下面的子进程也会被终止。
kill 进程号 -9 强制终止

查看进程树:pstree -p(显示进程号) -u(显示用户名)
服务
服务 (service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如 (mysqld , sshd、防火墙等),因此我们又称为守护进程。

有些服务监听的端口是固定的:sshd22 pop3110 telnet23 http80 mysql 3306

运行级别:



防火墙
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080 等
image-20251103160722806

端口号协议如何查看:
netstat -anp | more

动态监控进程




监控网络状态


软件安装 rpm、yum
rpm 用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。





Shell 编程
变量
运算符
条件判断
Case 语句
循环
read
函数
Ubuntu 系统
给 root 用户设置密码:

apt 命令
apt 类似于 Centos 中的 yum 命令。可以完成对软件的安装、卸载、更新。

sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache show package 获取包的相关信息
sudo apt-get source package 下载包的源代码将下载源修改为国内镜像源。
阿里镜像站:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11gzsfXw
ssh 是远程连接的常用协议。


