一、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. 编辑模式

进入方式: 按 iIoOaA

按键 功能
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 即可,放回后映射就配置好了,这一步是后续远程连接的基础。

常见网络问题排查

  1. 物理机能ping通虚拟机,虚拟机ping不通物理机 → 关闭物理机防火墙

  2. 虚拟机ping不通外网 → 检查DNS设置

  3. 域名未知 → 检查GATEWAY和DNS设置

  4. 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 /rootcd ~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            # 缓存新数据

九、虚拟机克隆

克隆步骤

  1. 关闭需要克隆的虚拟机

  2. 右键 → 管理 → 克隆

  3. 选择"完整克隆"

  4. 命名新虚拟机

克隆后配置(每个克隆节点需修改)

修改主机名:

vim /etc/hostname

修改IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改IPADDR为新的IP(如192.168.136.101)

重启网络服务:

systemctl restart network

注意: 主节点(master)不需要修改,仅克隆节点需要修改主机名和IP。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐