Linux 基础知识完全指南:从零开始理解 Linux 系统

释放双眼,带上耳机,听听看~!

写在前面

很多人第一次听说 Linux,是因为想搭建网站、学习编程,或者工作上要用到服务器。但打开终端看到黑底白字的界面,就开始发懵:这玩意儿和 Windows 完全不一样啊。

其实 Linux 不难理解。它就是个操作系统,和 Windows、macOS 一样,只是设计理念不同。这篇文章把 Linux 的基础知识一次性讲清楚:什么是 Linux、为什么用它、文件系统怎么组织、权限怎么管理、软件怎么安装……看完这篇,你对 Linux 就有个整体认知了。

建议先收藏,以后遇到问题可以对照查阅。


一、什么是 Linux?

Linux 基础知识完全指南:从零开始理解 Linux 系统

1.1 Linux 的本质

Linux 是一个操作系统内核,加上各种软件工具,构成了完整的操作系统。

打个比方:

  • 内核:相当于汽车的发动机,负责驱动硬件、管理资源
  • 外壳(Shell):相当于方向盘和操控面板,让用户能操作系统
  • 应用程序:相当于车上的导航、音响,提供各种功能

Linux 内核最早由 Linus Torvalds 在 1991 年开发,后来开源,全世界开发者都能贡献代码。现在 Linux 内核已经非常成熟,驱动了从手机到服务器到超级计算机的各种设备。

1.2 Linux 和 Windows 的区别

对比项 Windows Linux
设计理念 商业产品,用户友好 开源免费,技术导向
操作方式 图形界面为主 命令行为主(也有图形界面)
权限管理 管理员账户 root 和普通用户分离
软件安装 下载安装包或商店 包管理器(yum/apt等)
文件系统 C盘D盘分区 单一树状结构
配置方式 控制面板 配置文件
适用场景 个人电脑、办公 服务器、开发、嵌入式

最大的区别:Windows 鼠标点几下就行,Linux 很多操作要敲命令。但命令的优势是效率高、可自动化、能远程操作。

1.3 Linux 的应用场景

服务器领域:

  • 网站服务器:全球 90% 以上的网站服务器运行 Linux
  • 云计算:阿里云、腾讯云、AWS 的服务器都是 Linux
  • 数据库服务器:MySQL、Redis 通常部署在 Linux

开发领域:

  • 编程环境:Python、Go、Java 开发者偏好 Linux
  • 容器技术:Docker、Kubernetes 基于 Linux
  • DevOps:自动化部署、持续集成

嵌入式设备:

  • 手机:Android 基于 Linux 内核
  • 路由器:家用路由器的系统
  • 智能设备:智能家居、车载系统

个人使用:

  • 开发者日常开发
  • 系统运维工作
  • 学习计算机原理

简单说:服务器上 Linux 是主流,个人电脑上 Windows 是主流。


二、Linux 发行版:选择适合自己的版本

2.1 什么是发行版?

Linux 内核只是核心部分,要变成能用的操作系统,需要加上:

  • 图形界面(可选)
  • 常用软件(文本编辑器、浏览器等)
  • 包管理器(安装软件的工具)
  • 系统配置工具

不同的组织把这些组合起来,打包成不同的”发行版”。

打个比方:内核是面粉,发行版是面条、面包、馒头——原料相同,形态不同。

2.2 主要发行版介绍

(1)Ubuntu

最适合新手入门的发行版。

特点:

  • 安装简单,图形界面友好
  • 软件丰富,社区活跃
  • 定期发布新版本(每6个月)
  • 有 LTS 版本(长期支持,5年更新)

适用人群:新手、个人用户、开发者

下载:ubuntu.com


(2)CentOS / Rocky Linux

服务器最常用的发行版。

特点:

  • 稳定可靠,适合生产环境
  • 软件版本保守(追求稳定,不求最新)
  • 免费(CentOS 7 及之前)
  • CentOS 8 停止维护后,推荐用 Rocky Linux 或 AlmaLinux

适用人群:运维工程师、服务器部署

注意:CentOS 7 在 2024 年 6 月停止维护,新项目建议用 Rocky Linux。


(3)Debian

老牌发行版,Ubuntu 的上游。

特点:

  • 极其稳定,软件测试严格
  • 完全社区驱动,非商业
  • 更新周期较长

适用人群:追求稳定的服务器用户、技术人员


(4)Fedora

Red Hat 的社区版,新技术试验场。

特点:

  • 软件版本较新
  • 半年发布一个版本
  • Red Hat Enterprise Linux(RHEL)的上游

适用人群:想体验新技术的开发者


(5)Arch Linux

极简主义发行版,高度自定义。

特点:

  • 滚动更新(没有版本概念,始终最新)
  • 安装复杂(从零构建)
  • 文档完善(Arch Wiki)

适用人群:Linux 高手、追求极致自定义


(6)其他常见发行版

发行版 特点 适用人群
Mint 基于 Ubuntu,界面类似 Windows 从 Windows 转过来的用户
openSUSE 德国发行版,企业级稳定 企业用户
Kali 安全工具预装 安全测试、渗透测试
Gentoo 从源码编译安装 高级玩家
Alpine 极小体积(5MB) 容器、嵌入式

2.3 发行版选择建议

新手入门: Ubuntu 或 Mint
服务器部署: Rocky Linux / AlmaLinux(替代 CentOS)
开发环境: Ubuntu 或 Fedora
运维学习: Rocky Linux(和 CentOS 7 用法一样)


三、Linux 文件系统:目录结构详解

3.1 单一树状结构

Linux 没有 Windows 的 C盘D盘概念,所有文件都在一个树状结构里,根目录是 /

/                     根目录
├── bin               可执行命令(所有用户都能用)
├── boot              启动相关文件
├── dev               设备文件(硬件设备在这里)
├── etc               系统配置文件
├── home              用户主目录
│   ├── user1         用户 user1 的主目录
│   └── user2         用户 user2 的主目录
├── lib               库文件
├── media             可移动设备挂载点(U盘等)
├── mnt               临时挂载点
├── opt               可选软件包安装位置
├── proc              进程信息(虚拟文件系统)
├── root              root 用户的主目录
├── run               运行时数据
├── sbin              系统管理命令(只有 root 能用)
├── srv               服务数据
├── sys               系统信息(虚拟文件系统)
├── tmp               临时文件
├── usr               用户程序和数据
│   ├── bin           用户安装的命令
│   ├── lib           用户安装的库
│   ├── local         本地安装的软件
│   └── share         共享数据
└── var               可变数据(日志、缓存等)
    ├── log           系统日志
    ├── cache         缓存数据
    └── lib           应用程序数据

3.2 重要目录详解

/ 根目录

所有文件和目录的起点。不要在根目录放文件,这是系统区域。


/bin 和 /sbin

存放系统命令:

  • /bin:所有用户都能执行的命令(ls、cp、cat 等)
  • /sbin:只有 root 能执行的管理命令(reboot、fdisk 等)

在 CentOS 7+ 中,这些目录是 /usr/bin 和 /usr/sbin 的软链接。


/etc 配置文件

系统大部分配置文件都在这里。

重要文件:

  • /etc/passwd:用户信息
  • /etc/shadow:用户密码(加密存储)
  • /etc/group:组信息
  • /etc/fstab:磁盘挂载配置
  • /etc/hosts:本地域名解析
  • /etc/resolv.conf:DNS 配置
  • /etc/sysconfig/network-scripts/:网络配置(CentOS)
  • /etc/ssh/sshd_config:SSH 服务配置
  • /etc/nginx/nginx.conf:Nginx 配置(如果安装了)
  • /etc/apt/sources.list:软件源配置(Ubuntu)
  • /etc/yum.repos.d/:软件源配置(CentOS)

修改配置文件通常需要 root 权限。


/home 用户主目录

每个用户有一个专属目录,存放个人文件。

路径格式:/home/用户名

比如用户 tom 的主目录是 /home/tom

用户主目录可以简写为 ~,比如:

cd ~              # 进入主目录
ls ~/Documents    # 查看主目录下的 Documents

/root root 用户主目录

root 用户的主目录不在 /home,而是独立的 /root


/var 可变数据

存放会经常变化的数据。

重要子目录:

  • /var/log:日志文件(查看系统运行情况)
  • /var/cache:缓存数据
  • /var/lib:应用程序数据(数据库文件等)
  • /var/spool:队列数据(邮件队列等)
  • /var/tmp:临时文件(比 /tmp 保留时间更长)

/usr 用户程序

存放用户安装的软件和文档。

  • /usr/bin:用户安装的命令
  • /usr/lib:库文件
  • /usr/local:手动安装的软件(非包管理器安装)
  • /usr/share:共享数据(文档、图标等)

/tmp 临时文件

存放临时文件,重启后通常会清空。所有用户都能读写。


/proc 进程信息

这是一个虚拟文件系统,存放内核和进程信息。文件不是真实存在,而是内存数据的映射。

查看内存信息:

cat /proc/meminfo

查看 CPU 信息:

cat /proc/cpuinfo

查看某个进程的信息:

ls /proc/1234/     # 1234 是进程 PID

/dev 设备文件

Linux 把硬件设备当作文件来管理,设备文件都在 /dev

常见设备文件:

  • /dev/sda:第一块硬盘
  • /dev/sda1:第一块硬盘的第一个分区
  • /dev/null:黑洞,写入的东西都消失
  • /dev/zero:无限输出 0
  • /dev/tty:终端设备
  • /dev/urandom:随机数生成器

/boot 启动文件

存放系统启动需要的文件:

  • 内核文件(vmlinuz)
  • 启动配置(grub)

不要随意修改这个目录,否则可能导致系统无法启动。


/opt 可选软件

一些第三方软件安装在这里,比如 Oracle 数据库。


/mnt 和 /media 挂载点

挂载外部设备的目录:

  • /mnt:手动挂载的设备
  • /media:自动挂载的设备(U盘、光盘)

3.3 文件路径概念

绝对路径

从根目录 / 开始的完整路径。

例子:

/etc/passwd
/home/user/Documents/file.txt
/var/log/nginx/error.log

相对路径

从当前目录开始的路径。

例子:

Documents/file.txt      # 当前目录下的 Documents
../etc/passwd           # 上级目录下的 etc
./script.sh             # 当前目录下的 script.sh

./ 表示当前目录,../ 表示上级目录。


四、Linux 用户和权限管理

4.1 用户概念

Linux 是多用户系统,可以同时有多个用户登录使用。

用户类型:

  1. root 用户
    • 超级管理员,拥有最高权限
    • 能做任何操作(包括删系统)
    • UID 为 0
  2. 普通用户
    • 权限受限,只能操作自己的文件
    • UID 从 1000 开始(CentOS 7+)
    • 需要用 sudo 执行需要 root 权限的操作
  3. 系统用户
    • 运行服务的用户(比如 nginx、mysql)
    • 不能登录系统
    • UID 通常在 1-999

用户信息文件:

/etc/passwd 存放用户基本信息:

root:x:0:0:root:/root:/bin/bash
user:x:1000:1000::/home/user:/bin/bash

格式:用户名:密码占位:UID:GID:描述:主目录:Shell

密码实际存放在 /etc/shadow,加密存储。


4.2 用户组概念

用户组是一组用户的集合,方便批量管理权限。

每个用户至少属于一个组(主组),还可以加入多个附加组。

组信息文件:

/etc/group 存放组信息:

root:x:0:
wheel:x:10:user
user:x:1000:

格式:组名:密码占位:GID:组成员列表


4.3 文件权限详解

Linux 文件权限分三部分:用户、组、其他人。

每部分有三种权限:

  • r(读):值 4,可以查看内容
  • w(写):值 2,可以修改内容
  • x(执行):值 1,可以执行(脚本、程序)

权限用数字或字母表示:

权限组合 数字 含义
rwx 7 读、写、执行
rw- 6 读、写
r-x 5 读、执行
r– 4 只读
-wx 3 写、执行
-w- 2 只写
–x 1 只执行
0 无权限

权限显示格式:

ls -l file.txt
# 输出:-rw-r--r-- 1 user group 1024 Jan 10 file.txt

解析:

  • 第1位:文件类型(- 文件,d 目录,l 链接)
  • 第2-4位:用户权限(rw- = 6)
  • 第5-7位:组权限(r– = 4)
  • 第8-10位:其他人权限(r– = 4)

所以这个文件的权限是 644。


4.4 目录权限

目录的权限含义和文件不同:

  • r(读):可以查看目录内容(ls)
  • w(写):可以在目录里创建、删除文件
  • x(执行):可以进入目录(cd)

要进入目录并查看内容,需要 rx 权限;要修改目录内容,需要 wx 权限。


4.5 特殊权限

除了普通权限,Linux 还有三种特殊权限:

SUID(4)

设置在可执行文件上,执行时获得文件所有者的权限。

例子:/usr/bin/passwd 有 SUID,普通用户执行时暂时获得 root 权限修改密码。

显示:权限位变成 rws


SGID(2)

设置在目录上,目录里创建的文件自动继承目录的所属组。

显示:权限位变成 rws


Sticky Bit(1)

设置在目录上,只有文件所有者才能删除自己的文件。

例子:/tmp 有 Sticky Bit,用户不能删除别人的临时文件。

显示:权限位变成 rwt


4.6 修改权限和所有权

chmod 修改权限:

chmod 755 file.sh          # 用户全权限,其他人 rx
chmod 644 file.txt         # 用户 rw,其他人 r
chmod +x script.sh         # 给所有人加执行权限
chmod -R 755 folder        # 递归修改目录

chown 修改所有者:

chown user file.txt        # 改用户
chown user:group file.txt  # 改用户和组
chown -R user:group folder # 递归修改目录

chgrp 修改所属组:

chgrp group file.txt       # 改组

4.7 sudo 权限管理

普通用户需要执行 root 权限命令时,用 sudo。

配置 sudo 权限:

编辑 /etc/sudoers(用 visudo 命令,会检查语法):

# 允许 user 执行所有命令
user ALL=(ALL) ALL

# 允许 wheel 组成员执行所有命令(CentOS 默认)
%wheel ALL=(ALL) ALL

# 只允许 user 执行特定命令
user ALL=(ALL) /usr/bin/reboot, /usr/bin/systemctl

使用 sudo:

sudo command               # 以 root 执行命令
sudo -u user command       # 以指定用户执行
sudo -l                    # 查看可用 sudo 执行哪些命令

五、Shell 和终端基础

5.1 什么是 Shell?

Shell 是用户和内核之间的桥梁,负责解释用户输入的命令,传给内核执行。

常见 Shell:

  • bash:最常用的 Shell,几乎所有 Linux 默认使用
  • zsh:功能更强,插件丰富(Oh My Zsh)
  • sh:最基础的 Shell
  • dash:轻量级 Shell,Ubuntu 用它作为 /bin/sh
  • fish:友好的交互式 Shell

查看当前 Shell:

echo $SHELL
# 输出:/bin/bash

查看可用 Shell:

cat /etc/shells

切换 Shell:

chsh -s /bin/zsh           # 切换到 zsh

5.2 终端和虚拟控制台

终端(Terminal)

输入命令的界面,可以是:

  • 物理终端:以前的字符终端设备
  • 软件终端:终端模拟软件(如 GNOME Terminal、iTerm2)
  • SSH 远程终端:通过 SSH 连接的终端

虚拟控制台

Linux 有多个虚拟控制台(类似多个终端窗口),可以切换:

  • 按 Ctrl+Alt+F1~F6:切换到不同控制台
  • F1 通常是图形界面
  • F2~F6 是字符界面

服务器没有图形界面时,用虚拟控制台登录。


5.3 Shell 基础操作

命令基本格式:

命令 [选项] [参数]

例子:

ls -l /home               # 命令 ls,选项 -l,参数 /home
cp -r folder1 folder2     # 命令 cp,选项 -r,参数 folder1 和 folder2

选项格式:

  • 短选项:-l-a-h(单个字母)
  • 长选项:--help--version(完整单词)
  • 组合短选项:-lah 等于 -l -a -h

常用快捷键:

快捷键 功能
Ctrl+C 终止当前命令
Ctrl+D 退出当前 Shell(等于 exit)
Ctrl+L 清屏(等于 clear)
Ctrl+A 光标移到行首
Ctrl+E 光标移到行尾
Ctrl+U 删除光标前所有内容
Ctrl+K 删除光标后所有内容
Ctrl+R 搜索历史命令
Tab 自动补全
Tab Tab 显示所有匹配项

命令历史:

history                    # 显示历史命令
history 20                 # 显示最近 20 条
!10                        # 执行第 10 条历史命令
!ls                        # 执行最近的 ls 命令
!!                         # 执行上一条命令
Ctrl+R                     # 搜索历史命令

历史命令保存在 ~/.bash_history


命令别名:

alias                      # 显示所有别名
alias ll='ls -lah'         # 设置别名
unalias ll                 # 删除别名

永久生效:写入 ~/.bashrc


管道和重定向:

管道 |:把前一个命令的输出传给后一个命令:

ls | grep txt              # ls 结果传给 grep 搜索
ps aux | grep nginx        # 进程列表传给 grep
cat file.txt | sort | uniq # 文件内容排序去重

重定向:把输出写入文件:

command > file.txt         # 输出到文件(覆盖)
command >> file.txt        # 输出到文件(追加)
command 2> error.txt       # 错误输出到文件
command > file.txt 2>&1    # 标准输出和错误输出都写入文件
command < input.txt        # 从文件读取输入

5.4 通配符

匹配文件名:

通配符 含义 例子
* 匹配任意字符 *.txt 匹配所有 txt 文件
? 匹配单个字符 file?.txt 匹配 file1.txt、fileA.txt
[] 匹配指定字符 file[1-3].txt 匹配 file1.txt、file2.txt、file3.txt
{} 匹配多个选项 file{1,2,3}.txt 匹配三个文件

例子:

ls *.txt                   # 查看所有 txt 文件
rm file[1-5].txt           # 删除 file1 到 file5
cp *.jpg /home/backup/     # 复制所有 jpg 文件

5.5 环境变量

环境变量是 Shell 运行时的参数,影响程序行为。

常用环境变量:

变量 含义
PATH 命令搜索路径
HOME 用户主目录
USER 当前用户名
SHELL 当前 Shell
PWD 当前目录
LANG 语言设置
PS1 命令提示符格式

查看环境变量:

echo $PATH                 # 显示 PATH
env                        # 显示所有环境变量
printenv PATH              # 显示指定变量

设置环境变量:

export VAR=value           # 设置临时环境变量
VAR=value                  # 设置 Shell 变量(不导出)
export PATH=$PATH:/new/path    # 添加路径到 PATH

永久设置:

写入配置文件:

  • ~/.bashrc:用户级别,登录时加载
  • ~/.bash_profile:用户级别,登录时加载(优先)
  • /etc/profile:系统级别,所有用户
  • /etc/environment:系统环境变量

例子(写入 ~/.bashrc):

export JAVA_HOME=/usr/lib/jvm/java-11
export PATH=$PATH:$JAVA_HOME/bin

加载配置:

source ~/.bashrc           # 立即生效

六、软件安装和管理

6.1 Linux 软件安装方式

Linux 安装软件主要有三种方式:

(1)包管理器安装

最推荐的方式,自动处理依赖关系。

  • CentOS/RHEL:yum、dnf
  • Ubuntu/Debian:apt
  • Arch:pacman

(2)源码编译安装

下载源码,自己编译。

流程:

tar -xzvf source.tar.gz    # 解压
cd source                  # 进入目录
./configure                # 配置(检查依赖)
make                       # 编译
make install               # 安装

优点:可以自定义编译选项。
缺点:麻烦,依赖要自己解决。


(3)二进制文件安装

下载编译好的可执行文件,直接运行。

例子:下载 Go 语言官方二进制包,解压后就能用。


(4)容器化部署

用 Docker 等容器技术,不直接安装软件,而是运行容器。


6.2 包管理器详解

yum(CentOS 7)

yum install package        # 安装
yum remove package         # 删除
yum update                 # 更新所有
yum update package         # 更新指定包
yum search keyword         # 搜索
yum list installed         # 已安装列表
yum info package           # 包信息
yum clean all              # 清理缓存

软件源配置:/etc/yum.repos.d/*.repo


dnf(CentOS 8+/Fedora)

dnf 是 yum 的升级版,命令基本一样:

dnf install package
dnf remove package
dnf update
dnf search keyword

apt(Ubuntu/Debian)

apt update                 # 更新软件源索引
apt install package        # 安装
apt remove package         # 删除(保留配置)
apt purge package          # 删除(包括配置)
apt upgrade                # 升级所有包
apt search keyword         # 搜索
apt show package           # 包信息
apt list --installed       # 已安装列表
apt autoremove             # 清理无用依赖
apt clean                  # 清理缓存

软件源配置:/etc/apt/sources.list


6.3 rpm 和 dpkg(底层包工具)

直接安装 rpm/deb 文件,不自动解决依赖。

rpm:

rpm -ivh package.rpm       # 安装
rpm -e package             # 删除
rpm -qa                    # 所有已安装包
rpm -qi package            # 包信息
rpm -ql package            # 包安装的文件列表

dpkg:

dpkg -i package.deb        # 安装
dpkg -r package            # 删除(保留配置)
dpkg -P package            # 删除(包括配置)
dpkg -l                    # 已安装列表
dpkg -L package            # 包安装的文件列表

6.4 源码安装详解

下载源码:

通常从官网或 GitHub 下载 .tar.gz 或 .tar.bz2 文件。


解压:

tar -xzvf package-1.0.tar.gz     # gzip 格式
tar -xjvf package-1.0.tar.bz2    # bzip2 格式

进入目录:

cd package-1.0

配置:

./configure

configure 脚本检查系统环境、依赖库,生成 Makefile。

常用选项:

./configure --prefix=/usr/local/package    # 指定安装路径
./configure --help                         # 查看可用选项

如果 configure 报错缺少依赖,先安装依赖再重来。


编译:

make

make 根据 Makefile 编译源码。这一步可能比较慢。


安装:

make install

把编译好的文件复制到系统目录(需要 root 权限)。


清理:

make clean                 # 清理编译文件
make distclean             # 清理所有生成的文件

6.5 软件安装位置

不同安装方式,软件位置不同:

安装方式 通常位置
包管理器 /usr/bin/usr/lib/usr/share
源码安装 /usr/local/bin/usr/local/lib
用户安装 ~/bin~/.local/bin

七、进程和服务管理

7.1 进程概念

进程是程序的运行实例。一个程序可以有多个进程(比如多个 nginx worker 进程)。

进程属性:

  • PID:进程 ID,唯一标识
  • PPID:父进程 ID
  • User:运行进程的用户
  • State:进程状态(运行、睡眠、停止等)
  • CPU:CPU 使用率
  • Memory:内存使用量

进程状态:

状态 含义
R 运行或就绪
S 睡眠(等待事件)
D 不可中断睡眠(等待 IO)
Z 僵尸进程(已结束但未被回收)
T 停止(被暂停)

7.2 查看进程

ps 命令:

ps                         # 当前用户进程
ps aux                     # 所有进程详细信息
ps -ef                     # 另一种格式
ps aux | grep nginx        # 搜索进程

输出解释:

  • USER:用户
  • PID:进程 ID
  • %CPU:CPU 使用率
  • %MEM:内存使用率
  • STAT:进程状态
  • COMMAND:命令

top 命令:

实时监控进程:

top

进入 top 后:

  • 按 P:按 CPU 排序
  • 按 M:按内存排序
  • 按 k:杀进程
  • 按 q:退出

htop 命令:

更友好的进程监控:

htop

能鼠标操作,支持横向滚动,比 top 好用。


pgrep 命令:

查找进程 PID:

pgrep nginx                # 查找 nginx 进程
pgrep -u root nginx        # root 用户运行的 nginx

7.3 进程管理

启动进程:

./program                  # 前台运行
./program &                # 后台运行
nohup ./program &          # 后台运行,不因终端关闭而终止

终止进程:

kill PID                   # 正常终止
kill -9 PID                # 强制终止
killall name               # 按名字杀死
pkill name                 # 按名字杀死

进程前后台切换:

Ctrl+Z                     # 暂停前台进程(放入后台)
jobs                       # 查看后台作业
bg %1                      # 让作业 1 在后台继续
fg %1                      # 把作业 1 调到前台

7.4 服务概念

服务是长期运行的进程,通常在后台,响应请求。

比如:

  • nginx:Web 服务
  • mysql:数据库服务
  • sshd:SSH 服务

7.5 服务管理(systemd)

现代 Linux 用 systemd 管理服务。

常用命令:

systemctl start service    # 启动服务
systemctl stop service     # 停止服务
systemctl restart service  # 重启服务
systemctl status service   # 查看状态
systemctl enable service   # 设置开机自启
systemctl disable service  # 关闭开机自启
systemctl is-enabled service   # 查看是否开机自启
systemctl list-units --type=service   # 所有服务列表
systemctl daemon-reload    # 重载配置(修改配置后)

服务配置文件:

服务配置文件在 /etc/systemd/system/ 或 /usr/lib/systemd/system/

格式示例(nginx.service):

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

7.6 传统服务管理(CentOS 6)

老版本用 service 和 chkconfig:

service nginx start        # 启动
service nginx stop         # 停止
service nginx restart      # 重启
service nginx status       # 状态

chkconfig nginx on         # 开机自启
chkconfig nginx off        # 关闭自启
chkconfig --list           # 查看所有服务状态

7.7 日志查看

journalctl(systemd 日志):

journalctl                 # 所有日志
journalctl -u nginx        # nginx 服务日志
journalctl -f              # 实时查看
journalctl --since today   # 今天日志
journalctl -p err          # 只看错误级别

传统日志文件:

日志在 /var/log/

  • /var/log/messages:系统主日志(CentOS)
  • /var/log/syslog:系统主日志(Ubuntu)
  • /var/log/auth.log:认证日志(登录记录)
  • /var/log/nginx/error.log:Nginx 错误日志
  • /var/log/mysql/error.log:MySQL 错误日志

八、网络基础知识

8.1 网络接口

Linux 网络接口命名:

  • eth0、eth1:以太网卡(传统命名)
  • ens33、ens192:新命名规则
  • lo:本地回环(127.0.0.1)
  • wlan0:无线网卡

8.2 IP 地址配置

查看 IP:

ip addr                    # 显示所有 IP
ip addr show eth0          # 显示指定接口
ifconfig                   # 传统命令

配置 IP:

临时配置:

ip addr add 192.168.1.100/24 dev eth0    # 添加 IP
ip link set eth0 up                      # 启用网卡

永久配置:

CentOS:编辑 /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes

Ubuntu:编辑 /etc/netplan/*.yaml(Ubuntu 18+)

network:
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]
  version: 2

8.3 DNS 配置

DNS 配置文件:/etc/resolv.conf

nameserver 8.8.8.8
nameserver 114.114.114.114

8.4 网络测试

ping 测试连通性:

ping 192.168.1.1           # ping IP
ping www.baidu.com         # ping 域名
ping -c 5 192.168.1.1      # ping 5 次

traceroute 查看路径:

traceroute www.baidu.com   # 查看路由路径

netstat/ss 查看端口:

netstat -tunlp             # 查看 TCP/UDP 端口
ss -tunlp                  # 新命令

curl 测试 HTTP:

curl http://www.baidu.com  # 请求网页
curl -I http://www.baidu.com  # 只看响应头

8.5 端口概念

端口是网络通信的逻辑端点。常用端口:

端口 服务
22 SSH
80 HTTP
443 HTTPS
21 FTP
3306 MySQL
6379 Redis
8080 Tomcat/备用HTTP

九、系统启动和关机

9.1 启动过程

Linux 启动流程:

  1. BIOS/UEFI:硬件自检,选择启动设备
  2. MBR/GPT:读取启动分区
  3. GRUB:引导加载器,选择启动内核
  4. 内核:加载内核,初始化硬件
  5. systemd:启动第一个进程(PID 1),管理服务
  6. 用户登录:进入登录界面

9.2 运行级别

运行级别定义系统运行模式:

级别 含义
0 关机
1 单用户模式(维护)
2 多用户(无网络)
3 多用户(有网络,无图形)
4 未定义
5 多用户(有图形)
6 重启

systemd 用 target 替代:

  • multi-user.target:等于级别 3
  • graphical.target:等于级别 5

查看:

systemctl get-default      # 查看默认 target
systemctl set-default multi-user.target    # 设置默认

9.3 关机和重启

关机:

shutdown -h now            # 立即关机
shutdown -h +10            # 10分钟后关机
shutdown -c                # 取消关机
poweroff                   # 立即关机

重启:

reboot                     # 重启
shutdown -r now            # 立即重启

十、常用配置文件详解

10.1 用户相关

/etc/passwd:用户信息

root:x:0:0:root:/root:/bin/bash

格式:用户名:密码占位:UID:GID:描述:主目录:Shell


/etc/shadow:密码信息

root:$6$xxx:18000:0:99999:7:::

格式:用户名:加密密码:上次修改天数:最小天数:最大天数:警告天数: inactive天数:过期天数:保留


/etc/group:组信息

root:x:0:user1,user2

格式:组名:密码占位:GID:成员列表


10.2 网络相关

/etc/hosts:本地域名解析

127.0.0.1       localhost
192.168.1.100   myserver

/etc/resolv.conf:DNS 配置

nameserver 8.8.8.8
nameserver 114.114.114.114

/etc/sysconfig/network-scripts/ifcfg-eth0:网络接口配置(CentOS)


10.3 系统相关

/etc/fstab:磁盘挂载配置

/dev/sda1   /       ext4    defaults    0 1
/dev/sda2   /home   ext4    defaults    0 2

格式:设备 挂载点 类型 选项 dump pass


/etc/crontab:系统定时任务配置


/etc/profile:系统环境变量


10.4 服务相关

/etc/ssh/sshd_config:SSH 服务配置

重要配置:

  • Port 22:SSH 端口
  • PermitRootLogin yes/no:是否允许 root 登录
  • PasswordAuthentication yes/no:是否允许密码登录

/etc/sudoers:sudo 权限配置


十一、常见问题和解决思路

11.1 权限问题

症状: 操作提示 Permission denied

原因: 当前用户没有权限

解决:

  1. 检查文件权限:ls -l file
  2. 用 sudo 执行:sudo command
  3. 修改权限:chmod
  4. 修改所有者:chown

11.2 命令找不到

症状: Command not found

原因: 命令未安装或不在 PATH

解决:

  1. 检查命令是否存在:which command
  2. 安装命令:yum install package 或 apt install package
  3. 检查 PATH:echo $PATH
  4. 添加路径到 PATH:export PATH=$PATH:/new/path

11.3 端口被占用

症状: 服务启动失败,提示端口被占用

解决:

  1. 查看端口占用:netstat -tunlp | grep 端口
  2. 杀掉占用进程:kill PID
  3. 更换服务端口

11.4 磁盘空间不足

症状: 无法创建文件,提示 No space left

解决:

  1. 查看磁盘使用:df -h
  2. 查找大文件:du -sh * | sort -rh | head -10
  3. 清理日志:rm /var/log/*.log(谨慎)
  4. 清理缓存:yum clean all 或 apt clean
  5. 检查 inode:df -i

11.5 服务无法启动

解决:

  1. 查看状态:systemctl status service
  2. 查看日志:journalctl -u service
  3. 检查配置文件语法
  4. 检查依赖服务是否启动

11.6 SSH 无法登录

解决:

  1. 检查 SSH 服务:systemctl status sshd
  2. 检查端口:netstat -tunlp | grep 22
  3. 检查防火墙:firewall-cmd --list-all
  4. 检查配置:/etc/ssh/sshd_config
  5. 查看日志:journalctl -u sshd 或 /var/log/auth.log

十二、学习建议

12.1 入门路径

建议学习顺序:

  1. 安装一个 Linux 系统:Ubuntu 或 Rocky Linux
  2. 熟悉终端操作:cd、ls、mkdir、rm、cp、mv
  3. 理解文件系统:目录结构和文件路径
  4. 学习权限管理:chmod、chown、sudo
  5. 掌握常用命令:grep、find、tar、vim
  6. 了解服务管理:systemctl
  7. 学习 Shell 脚本:编写自动化脚本

12.2 实践建议

  1. 不要怕出错:Linux 错误提示很明确,看错误信息就能知道问题
  2. 多用命令手册man command 查看详细说明
  3. 记录常用命令:建立自己的命令速查表
  4. 搭建实验环境:用虚拟机或云服务器练习
  5. 遇到问题先查日志:日志能告诉你发生了什么

12.3 进阶方向

掌握基础后,可以学习:

  • Shell 脚本编程
  • 系统运维(监控、备份、安全)
  • 服务部署(Web、数据库、容器)
  • 自动化工具(Ansible、Docker)

结语

这篇把 Linux 的基础知识梳理了一遍:什么是 Linux、发行版怎么选、文件系统结构、用户权限管理、Shell 操作、软件安装、进程服务、网络配置……理解了这些,对 Linux 就有了整体认知。

Linux 不难,难的是一开始的不习惯。多练多用,很快就能上手。遇到问题先看错误信息,再查手册或搜索,大部分问题都能解决。

建议先收藏这篇,以后遇到问题可以对照查阅。

声明:本站所有文章,如无特殊说明或标注,均来自于互联网,下载的软件和资源请在24小时之内删除,本站提供的资源只可作为下载、学习交流使用,其版权归原作者所有,其产生的任何后果均自己承担,本站不作任何责任承担,具体可查看本站免责声明。如已声明或标注原创,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,客服链接:点此前往,投诉邮箱:nc08wlkj@163.com

给TA赞赏
共{{data.count}}人
人已赞赏
技术教程

Linux 命令大全:新手入门必看的 80+ 实用命令详解

2026-4-26 20:04:09

《十年饮冰》

十年饮冰 - 第45章

2026-4-13 14:00:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索