Linux基础
一、Linux概述
什么是Linux?
Linux是一套免费使用和自由传播的类Unix操作系统,由芬兰人林纳斯·托瓦兹在赫尔辛基大学上学时出于个人爱好编写而成。
Unix的诞生背景
| 机构 | 角色 |
|---|---|
| 贝尔实验室 | Unix的主要开发地 |
| 麻省理工学院(MIT) | 参与Multics项目,其概念影响Unix的设计 |
| 通用电气(GE) | 与贝尔实验室、MIT共同参与Multics项目 |
关键时间节点:
-
1969年:肯·汤普逊和丹尼斯·里奇在Multics项目失败后,创建了Unix操作系统
-
1970年代:Unix在学术界和商业界迅速流行,源代码对学术机构开放
Linux核心特点
-
基于POSIX和UNIX标准
-
多用户、多任务、支持多线程和多CPU
-
支持32位和64位硬件
-
以网络为核心的设计思想
-
性能稳定的多用户网络操作系统
主流发行版
Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE
二、Linux vs Windows
| 比较维度 | Windows | Linux |
|---|---|---|
| 免费与收费 | 收费且昂贵 | 免费或少量费用 |
| 软件与支持 | 数量质量占优,多为收费软件 | 开源自由软件,全球社区支持 |
| 安全性 | 频繁打补丁,仍有病毒风险 | 相对更安全 |
| 使用习惯 | 纯图形界面,上手容易 | 图形+命令行,熟练后效率更高 |
| 可定制性 | 封闭,定制性差 | 开源,高度可定制 |
| 应用场景 | 桌面操作系统为主 | 支撑百度、谷歌、淘宝等服务的服务器 |
三、Linux文件与目录结构
核心理念:Linux中一切皆文件
重要目录详解
| 目录 | 说明 |
|---|---|
| /bin | 存放最常用的命令(Binary缩写) |
| /sbin | 存放系统管理员使用的管理程序 |
| /home | 普通用户的主目录 |
| /root | 超级权限者(管理员)的主目录 |
| /etc | 系统管理配置文件和子目录 |
| /usr | 用户应用程序和文件(类似Windows的Program Files) |
| /boot | 启动Linux时使用的核心文件 |
| /media | 系统自动识别设备的挂载点(CentOS6)/run/media(CentOS7) |
| /mnt | 用户临时挂载其他文件系统 |
| /opt | 额外安装软件的目录(如MySQL) |
| /var | 存放经常被修改的文件(如各种日志文件) |
| /tmp | 存放临时文件 |
| /dev | 硬件设备以文件形式存储(类似设备管理器) |
| /lib | 系统开机所需的基本动态连接共享库(类似Windows的DLL) |
| /proc | 虚拟目录,系统内存的映射,可获取系统信息 |
| /srv | 存放服务器之后需要提取的数据 |
| /sys | Linux 2.6内核中新出现的文件系统sysfs |
| /lost+found | 系统非法关机后存放文件的地方 |
四、VI/VIM文本编辑器
三种模式

1. 一般模式(默认模式)
功能: 移动光标、删除字符/整行、复制/粘贴
| 命令 | 功能 |
|---|---|
| yy | 复制光标当前行 |
| y数字y | 复制一段(指定行数) |
| p | 粘贴到目的行 |
| u | 撤销上一步 |
| dd | 删除光标当前行 |
| d数字d | 删除光标后指定行数 |
| x | 剪切一个字母(Del键) |
| X | 剪切一个字母(Backspace) |
| yw | 复制一个词 |
| dw | 删除一个词 |
| shift+6(^) | 移动到行头 |
| shift+4($) | 移动到行尾 |
| 1+shift+g | 移动到页头 |
| shift+g | 移动到页尾 |
| 数字+shift+g | 移动到目标行 |
2. 编辑模式
进入方式: 按 i、I、o、O、a、A
| 按键 | 功能 |
|---|---|
| i | 当前光标前插入 |
| a | 当前光标后插入 |
| o | 当前光标行的下一行插入 |
| I | 当前所在行最前插入 |
| A | 光标所在行最后插入 |
| O | 当前光标行的上一行插入 |
退出: 按 Esc 键回到一般模式
3. 指令模式
进入方式: 在一般模式下按 :、/、?
| 命令 | 功能 |
|---|---|
| :w | 保存 |
| :q | 退出 |
| :! | 强制执行 |
| /要查找的词 | 查找(n下一个,N上一个) |
| :noh | 取消高亮显示 |
| :set nu | 显示行号 |
| :set nonu | 关闭行号 |
| :%s/old/new/g | 替换所有old为new |
常用组合: :wq! — 强制保存退出
五、网络配置
查看网络信息
ifconfig # 查看网络接口配置
ping www.baidu.com # 测试网络连通性
配置静态IP
1. 编辑配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
2. 关键配置项:
| 配置项 | 说明 |
|---|---|
| BOOTPROTO="static" | 静态IP分配 |
| ONBOOT="yes" | 系统启动时激活网络接口 |
| IPADDR=xxx.xxx.xxx.100 | 自己电脑的IP地址 |
| GATEWAY=xxx.xxx.xxx.2 | 网关(同ip地址前三段) |
| DNS1=xxx.xxx.xxx.2 | 域名解析器(同ip地址前三段) |
3. 重启网络:
service network restart # CentOS6
systemctl restart network # CentOS7
配置主机名
hostname # 查看主机名
vim /etc/hostname # 修改主机名(需重启生效)
配置hosts映射
Linux: /etc/hosts
xxx.xxx.xxx.100 master
xxx.xxx.xxx.101 node1
xxx.xxx.xxx.102 node2
Windows: C:\Windows\System32\drivers\etc\hosts
Windows系统中的hosts文件先剪切出来,将上述字段放到文件最尾端,保存后放回原地址,不要更改其他东西,只添加虚拟机 ip 即可,放回后映射就配置好了,这一步是后续远程连接的基础。
常见网络问题排查
-
物理机能ping通虚拟机,虚拟机ping不通物理机 → 关闭物理机防火墙
-
虚拟机ping不通外网 → 检查DNS设置
-
域名未知 → 检查GATEWAY和DNS设置
-
NetworkManager服务冲突 → 关闭并禁用:
systemctl stop NetworkManager
systemctl disable NetworkManager
六、系统管理
进程与服务
-
进程: 正在执行的程序或命令
-
服务: 启动后常驻内存的进程
service命令(CentOS6)
service network status # 查看状态
service network stop # 停止
service network start # 启动
service network restart # 重启
systemctl命令(CentOS7重点)
systemctl start | stop | restart | status 服务名
查看服务: /usr/lib/systemd/system
防火墙管理:
systemctl status firewalld # 查看状态
systemctl stop firewalld # 停止
systemctl start firewalld # 启动
服务自启配置
systemctl list-unit-files # 查看所有服务开机启动状态
systemctl enable service_name # 开启自动启动
systemctl disable service_name # 关闭自动启动
systemctl enable firewalld.service # 防火墙开机自启
systemctl disable firewalld.service # 防火墙开机不启动
系统运行级别
CentOS6运行级别(0-6):
| 级别 | 说明 |
|---|---|
| 0 | 停机状态 |
| 1 | 单用户模式(系统维护) |
| 2 | 多用户状态(无NFS,不支持网络) |
| 3 | 完全多用户状态(命令行模式) |
| 4 | 系统未使用(保留) |
| 5 | 图形GUI模式 |
| 6 | 系统重启 |
CentOS7简化后:
-
multi-user.target→ 原级别3(多用户有网,无图形界面) -
graphical.target→ 原级别5(多用户有网,有图形界面)
systemctl get-default # 查看当前运行级别
systemctl set-default multi-user.target # 修改为命令行模式
systemctl set-default graphical.target # 修改为图形界面模式
关机重启命令
sync # 将数据从内存同步到硬盘(重要!)
halt # 停机(不断电)
poweroff # 关机(断电)
reboot # 重启
shutdown -h now # 立即关机
shutdown -r now # 立即重启
shutdown -h 1 '提示信息' # 1分钟后关机
七、常用基本命令
7.1 帮助命令
man 命令 # 查看命令帮助手册
help 命令 # 查看shell内置命令帮助
常用快捷键:
| 快捷键 | 功能 |
|---|---|
ctrl + c |
停止进程 |
ctrl + l |
清屏(等同于clear) |
Tab |
自动补全(防止敲错) |
↑/↓ |
查找执行过的命令 |
7.2 文件目录类
| 命令 | 功能 | 示例 |
|---|---|---|
| pwd | 显示当前绝对路径 | pwd |
| ls -a | 列出所有文件(含隐藏) | ls -al |
| cd | 切换目录 | cd /root、cd ~、cd -、cd .. |
| mkdir -p | 创建目录(多层) | mkdir -p a/b/c |
| rmdir | 删除空目录 | rmdir test/ |
| touch | 创建空文件 | touch file.txt |
| cp -r | 复制文件或目录 | cp -r dir1/ dir2/ |
| rm -rf | 强制删除文件或目录 | rm -rf test/ |
| mv | 移动或重命名 | mv old new |
| cat -n | 查看文件(显示行号) | cat -n file |
| more | 分屏查看(可翻页) | more file |
| less | 更强大的分屏查看 | less file |
| echo -e | 输出内容(支持转义) | echo -e "hello\tworld" |
| head -n | 查看文件头N行 | head -n 5 file |
| tail -n -f | 查看文件尾N行/实时追踪 | tail -f file |
| > | 输出重定向(覆盖) | ls -l > file |
| >> | 追加 | echo "hi" >> file |
| ln -s | 软链接(快捷方式) | ln -s /path link_name |
| history | 查看历史命令 | history |
软链接删除注意事项:
-
正确:
rm -rf 软链接名 -
错误:
rm -rf 软链接名/(会删除真实目录内容)
7.3 时间日期类
date # 显示当前时间
date +%Y%m%d # 显示年月日
date "+%Y-%m-%d %H:%M:%S" # 自定义格式
date -d '1 days ago' # 显示前一天
date -d '-1 days ago' # 显示明天
date -s "2024-07-08 15:19:18" # 设置系统时间
cal 2024 # 查看2024年日历
7.4 用户管理
| 命令 | 功能 | 示例 |
|---|---|---|
| useradd | 添加用户 | useradd username |
| passwd | 设置密码 | passwd username |
| id | 查看用户是否存在 | id username |
| su - | 切换用户(含环境变量) | su - username |
| userdel -r | 删除用户(含主目录) | userdel -r username |
| whoami | 显示当前用户名 | whoami |
| who am i | 显示登录用户名和时间 | who am i |
| usermod -g | 修改用户所属组 | usermod -g root user |
查看所有用户: cat /etc/passwd
sudo配置(赋予普通用户root权限)
vi /etc/sudoers
# 添加一行:
username ALL=(ALL) NOPASSWD:ALL
7.5 用户组管理
| 命令 | 功能 | 示例 |
|---|---|---|
| groupadd | 新增组 | groupadd groupname |
| groupdel | 删除组 | groupdel groupname |
| groupmod -n | 修改组名 | groupmod -n new old |
查看所有组: cat /etc/group
7.6 文件权限管理
权限格式解析(10个字符):
-rwxr-xr-x
││││││││││
│││││││││└── 其他用户权限(r-x)
││││││││└─── 其他用户权限
│││││││└──── 其他用户权限
││││││└───── 所属组权限(r-x)
│││││└────── 所属组权限
││││└─────── 所属组权限
│││└──────── 所有者权限(rwx)
││└───────── 所有者权限
│└────────── 所有者权限
└─────────── 文件类型(-文件、d目录、l链接)
| 权限 | 对文件的作用 | 对目录的作用 |
|---|---|---|
| r(读) | 读取、查看内容 | 查看目录内容(ls) |
| w(写) | 修改内容 | 创建+删除+重命名目录中文件 |
| x(执行) | 被执行 | 进入目录(cd) |
数字表示法: r=4,w=2,x=1
chmod u+x file # 所有者添加执行权限
chmod g+x file # 所属组添加执行权限
chmod u-x,o+x file # 组合操作
chmod 777 file # 所有人完全权限
chmod -R 777 dir/ # 递归修改
chown user file # 修改文件所有者
chown -R user:group dir/ # 递归修改所有者和组
chgrp group file # 修改文件所属组
7.7 搜索查找
find / -name "*.txt" # 按文件名查找
find / -user username # 按所有者查找
find / -size +204800 # 按大小查找(大于200M)
updatedb # 更新locate数据库
locate filename # 快速定位文件
grep -n "内容" file # 查找内容并显示行号
ls | grep -n test # 管道符过滤
7.8 压缩解压
| 命令 | 功能 | 示例 |
|---|---|---|
| gzip/gunzip | 压缩/解压(仅文件) | gzip file.txt |
| zip/unzip | 压缩/解压(保留源文件) | zip -r my.zip dir/ |
| tar -zcvf | 打包压缩 | tar -zcvf file.tar.gz file1 file2 |
| tar -zxvf | 解包解压 | tar -zxvf file.tar.gz -C /target |
tar常用选项:
-
-c:创建打包文件 -
-v:显示详细信息 -
-f:指定文件名 -
-z:同时压缩 -
-x:解包 -
-C:解压到指定目录
7.9 磁盘管理
du -sh # 查看当前目录总大小
df -h # 查看磁盘空间使用情况
lsblk -f # 查看设备挂载详情
# 挂载/卸载
mount /dev/cdrom /mnt/cdrom # 挂载
umount /mnt/cdrom # 卸载
# 分区操作
fdisk -l # 查看所有分区
fdisk /dev/sdb # 进入分区操作
分区操作按键:
-
m:显示命令列表 -
p:显示当前分区 -
n:新增分区 -
w:写入并退出 -
q:不保存退出
挂载新硬盘完整流程:
fdisk /dev/nvme0n2 # 创建分区
mkfs.ext4 /dev/nvme0n2p1 # 格式化分区
mkdir /mnt/newdisk # 创建挂载点
mount /dev/nvme0n2p1 /mnt/newdisk # 挂载
vi /etc/fstab # 设置开机自动挂载
7.10 进程管理
ps aux # 查看所有进程(CPU/内存占用率)
ps -ef # 查看进程父子关系
ps aux | grep sshd # 查看特定进程
kill -9 PID # 强制杀死进程
killall firefox # 按名称杀死进程
pstree -p # 显示进程树(含PID)
pstree -u # 显示进程所属用户
top -d 1 # 实时监控(每秒刷新)
top -p PID # 监控特定进程
netstat -anp | grep PID # 查看进程网络信息
netstat -nltp | grep 22 # 查看端口占用
7.11 定时任务
systemctl restart crond # 重启定时任务服务
crontab -e # 编辑定时任务
crontab -l # 查看定时任务
Cron表达式格式:
* * * * * 命令
│ │ │ │ │
│ │ │ │ └── 星期几(0-6)
│ │ │ └──── 月份(1-12)
│ │ └────── 日期(1-31)
│ └──────── 小时(0-23)
└────────── 分钟(0-59)
特殊符号:
| 符号 | 含义 |
|---|---|
* |
所有值 |
, |
分隔多个值 |
- |
范围 |
/n |
每隔n执行 |
示例: */1 * * * * /bin/echo "test" >> /root/log.txt — 每分钟执行一次
八、软件包管理
RPM(RedHat Package Manager)
查看:
rpm -qa | grep java # 查看已安装的Java包
卸载:
rpm -e 软件包名
rpm -e --nodeps 软件包名 # 忽略依赖强制卸载
安装:
rpm -ivh 软件包全名 # -i安装 -v显示详情 -h进度条
YUM(软件包管理器)
常用命令:
yum -y install firefox # 安装(-y自动确认)
yum update # 更新
yum remove 软件包 # 删除
yum list # 显示软件包信息
yum clean all # 清理缓存
yum makecache # 缓存包信息
yum deplist 软件包 # 显示依赖关系
配置国内YUM源
yum install wget # 安装wget
cd /etc/yum.repos.d
cp CentOS-Base.repo CentOS-Base.repo.backup # 备份
# 下载阿里云源(推荐)
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo # 替换
yum clean all # 清理旧缓存
yum makecache # 缓存新数据
九、虚拟机克隆
克隆步骤
-
关闭需要克隆的虚拟机
-
右键 → 管理 → 克隆
-
选择"完整克隆"
-
命名新虚拟机
克隆后配置(每个克隆节点需修改)
修改主机名:
vim /etc/hostname
修改IP地址:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改IPADDR为新的IP(如192.168.136.101)
重启网络服务:
systemctl restart network
注意: 主节点(master)不需要修改,仅克隆节点需要修改主机名和IP。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)