Linux 文件与目录结构
1、Linux文件
- Linux系统中一切皆文件
2、Linux目录结构
目录 | 解释 |
---|---|
/(根目录) | 这是Linux文件系统的最顶层目录,所有其他目录都从这里开始。它包含了系统的所有文件和目录。 |
/bin | Binary的缩写,这个目录存放着最经常使用的命令 |
/sbin | s是Super User的意思,这里存放的是系统管理员使用的系统管理程序 |
/home | 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录 |
/lib | 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机时,这里就存放了一些文件 |
/etc | 所有的系统管理所需要的配置文件和子目录 |
/usr | 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的Program Files目录 |
/boot | 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的文件别放在这里 |
/proc | 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息 |
/srv | service缩写,该目录存放一些服务启动之后需要提取的数据 |
/sys | 这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs |
/tmp | 这个目录是用来存放一些临时文件的 |
/dev | 类似于Windows的设备管理器,把所有的硬件用文件的形式存储 |
/media | Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以看到里的内容了 |
/opt | 这个给主机额外安装软件所摆放的目录。比如你安装一个MySQL数据库则就可以放到这个目录下。默认是空的。 |
/var | 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件 |
/selinux | selinux是一种安全子系统,它能控制程序只能访问特定文件 |
系统管理操作
关闭防火墙
systemctl
- 基本语法
systemctl start | stop | restart | status service_name
- 经验技巧:
/usr/lib/systemd/system
目录下每个文件都对应一个服务。
cd /usr/lib/systemd/system
ls -al
- 实操案例
- 查看网络服务的状态
sudo systemctl status NetworkManager
按q
可以退回到终端
- 停止网络服务
sudo systemctl stop NetworkManager
- 启动网络服务
sudo systemctl start NetworkManager
- 重启网络服务
sudo systemctl restart NetworkManager
systemctl设置后台服务的自启配置
- 查看服务开机启动状态
sudo systemctl list-unit-files
- 关闭指定服务的自动启动
sudo systemctl disable service_name
sudo systemctl disable NetworkManager # 关闭网络服务自启
- 开启指定服务的自动启动
sudo systemctl enable service_name
sudo systemctl enable NetworkManager # 开启网络服务自启
关闭防火墙
- 临时关闭防火墙
sudo systemctl status ufw # 查看防火墙状态
sudo systemctl stop utf # 临时关闭防火墙
- 开机启动时关闭防火墙
sudo systemctl enable ufw # 设置开机时启动防火墙
sudo systemctl disable ufw # 设置开机时关闭防火墙
sudo systemctl is-enabled ufw # 查看服务是否开启自启
关机重启命令
-
sync:将数据由内存同步到硬盘中。
- 现代Linux系统设计足够智能,能够在执行关机或重启命令时自动处理必要的清理和同步操作。因此,对于绝大多数情况,直接使用关机或重启命令即可,而无需手动执行sync。
-
关机和重启
命令 解释 备注 halt 关闭系统,当前版本Ubuntu不会断电。 Ubuntu22.04 poweroff 关闭系统并断电,等同于 shutdown -h now reboot 重启,等同于 shutdown -r now shutdown [选项] 时间 -h = halt 关机,不完全等同于halt命令
-r = reboot 重启
now 等待多久后关机(时间单位是分钟)
修改主机名
sudo hostnamectl --static set-hostname ubuntu # 将主机名改为ubuntu
# 终端命令提示符中@之后冒号之前的部分为当前的主机名。如:qingxuly-virtual-machine
- 修改主机名后,重启生效
修改Windows的hosts文件
- 修改 windows 的主机映射文件(hosts 文件)
- 使用 uTools 工具更改hosts文件
- 复制
C:\Windows\System32\drivers\etc
中的hosts文件到桌面,添加映射后,再剪切到原目录覆盖
192.168.5.101 ubuntu
APT软件包管理器
APT(Advanced Packaging Tools)是 Debian 及其派生 Linux 的软件包管理器,可以自 动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix 系统上管理软件的 过程
- 输入
apt
介绍用法
qingxuly@ubuntu:~/桌面$ apt
apt 2.4.12 (amd64)
用法: apt [选项] 命令
命令行软件包管理器 apt 提供软件包搜索,管理和信息查询等功能。
它提供的功能与其他 APT 工具相同(像 apt-get 和 apt-cache),
但是默认情况下被设置得更适合交互。
常用命令:
list - 根据名称列出软件包
search - 搜索软件包描述
show - 显示软件包细节
install - 安装软件包
reinstall - 重新安装软件包
remove - 移除软件包
autoremove - 卸载所有自动安装且不再使用的软件包
update - 更新可用软件包列表
upgrade - 通过 安装/升级 软件来更新系统
full-upgrade - 通过 卸载/安装/升级 来更新系统
edit-sources - 编辑软件源信息文件
satisfy - 使系统满足依赖关系字符串
- 案例实操:找不到命令“ifconfig”
常用基本命令
帮助命令
Manual Packages
- 查看手册页说明文档的方式
man man
- 我们常用的文档位于第 1、2、3、7 页
- 执行
man man
命令,进入手册页浏览模式,左上角会显示 MAN(1),这就是手册页引用格式或 man 引用格式,括号前面是命令(或系统调用等)的名称,括号内是命令所在 的手册页编号。 当存在多个同名但功能不同的命令或调用时,可以通过页编号区分。如:用户命令 write位于第一页,用 write(1)表示,系统调用 write 位于第 2 页,用 write(2)表示。
- 描述
- 手册页(Manual Packages),简称“man pages”,是 Unix 和类 Unix 系统(包括 Linux 和 macOS)上提供程序、函数、命令及文件格式文档的一种方式。手册页是用户和管理员获取命令用法、程序功能、配置文件规范和某些 API 函数描述的重要资源。
man 获得帮助信息
- 基本语法
man [页编号] [命令或配置文件] (功能描述:获得帮助信息)
- 显示说明
信息 | 功能 |
---|---|
NAME | 命令的名称和单行描述 |
SYNOPSIS | 怎样使用命令 |
DESCRIPTION | 命令功能的深入讨论 |
EXAMPLES | 怎样使用命令的例子 |
SEE ALSO | 相关主题(通常是手册页) |
- 案例实操
man ls # 查看ls命令的帮助信息
man write # 查看用户命令write的帮助信息
触发系统调用write:
- 创建
write_example.c
文件,粘贴如下代码。 - 运行
gcc write_example.c -o write_example
命令来编译程序。这将生成一个名为write_example
的可执行文件。 - 运行
./write_example
命令来运行程序。这将触发系统调用write并将消息写入"output.txt"文件。
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main() {
const char *message = "Hello, World!";
int file_descriptor = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if (file_descriptor == -1) {
perror("Error opening file");
return 1;
}
ssize_t bytes_written =