这里介绍AI服务器开发所需的必要操作系统知识
1.文件系统
理论基础是《操作系统》,再深入些是《计算机组成原理》
目的是管理操作系统,核心是文件系统, 通过命令行操作
路径是文件系统中用来指示文件或目录位置的描述。
1.1 绝对路径 (Absolute Path)
绝对路径是从文件系统的根目录(在 Unix 系统中是 /)开始的完整路径,它唯一地标识文件或目录在文件系统中的位置。绝对路径总是以 / 开头,指明路径从根目录开始,并逐级向下到达目标文件或目录。
- 始终从根目录开始:绝对路径从文件系统的最顶层(根目录 /)开始。
- 唯一标识:无论当前工作目录在哪里,绝对路径始终指向同一个位置。
- 不依赖于当前目录:可以在任何情况下使用,不受当前工作目录的影响。
假设有以下文件系统结构:
/
├── home
│ ├── user1
│ │ └── document.txt
│ └── user2
└── var
└── log
└── system.log
- 文件 document.txt 的绝对路径是:/home/user1/document.txt
- 文件 system.log 的绝对路径是:/var/log/system.log
在任何时候,只要使用这个路径,都能准确地找到文件的位置。
1.2 相对路径 (Relative Path)
相对路径是相对于当前工作目录的路径。它不从根目录开始,而是根据当前所在的目录位置指明目标文件或目录的位置。
特点:
- 基于当前工作目录:相对路径是基于当前目录的位置。
- 更简洁:相对路径通常比绝对路径更短,更便于输入。
- 上下级目录:可以使用 … 表示上一级目录,. 表示当前目录。
假设当前工作目录是 /home/user1,我们有以下文件系统结构:
/
├── home
│ ├── user1
│ │ ├── document.txt
│ │ └── projects
│ │ └── project1
│ └── user2
└── var
└── log
└── system.log
- 直接引用 document.txt 使用相对路径:document.txt
- 进入 projects 目录可以使用:projects
- 进入 project1 目录可以使用:projects/project1
- 返回上一级目录(/home)使用:…
- 进入 user2 目录(从 /home/user1 开始):…/user2
- 访问 system.log 使用相对路径:…/…/var/log/system.log(从 /home/user1 开始,向上两级,再进入 var/log)
比较和应用 - 绝对路径适用于需要明确指定位置时,特别是在脚本或配置文件中,以避免因当前工作目录不同而导致路径解析错误。
- 相对路径适用于操作当前工作目录附近的文件或目录,更加灵活和简便,适合交互式的操作。
假设当前目录为 /home/user1,以下是一些路径的使用:
# 使用绝对路径
cd /var/log # 切换到 /var/log 目录
cat /var/log/system.log # 查看 /var/log/system.log 文件内容
# 使用相对路径
cd projects # 切换到 /home/user1/projects 目录
cat ../document.txt # 查看 /home/user1/document.txt 文件内容
理解绝对路径和相对路径的概念以及如何在文件系统中使用它们是有效导航和操作文件系统的基础。
绝对路径提供了明确的、全局的路径指引,而相对路径则提供了灵活性,方便在特定上下文中进行操作。
2. unix系统
适用于ubuntu(mac)
2.1 文件系统结构
/ (Root) # 根目录,是文件系统的顶层。
/bin #存放基本的用户命令的二进制文件,如 ls, cp, mv, rm 等。
/boot #启动引导加载器所需的文件,包括内核和初始化RAM磁盘镜像 (initrd 或 initramfs)。
/dev #设备文件目录,Linux系统中的所有设备都表示为文件,如 tty, sda, random 等。
/etc #配置文件目录,系统级配置文件和脚本,如 passwd, fstab, hosts 等。
/home #用户主目录,个人文件和配置文件的存储位置,每个用户都有一个子目录,如 /home/user1。
/lib #存放基本的共享库文件和内核模块(Library)。
/media #可移动介质挂载点,如 cdrom, usb 驱动器。
/mnt #临时挂载文件系统的挂载点,一般用于手动挂载设备。
/opt #可选的应用程序目录,通常用于第三方软件包。
/proc #虚拟文件系统,提供系统和进程的信息,如 cpuinfo, meminfo。
/root #超级用户 (root) 的主目录,与 /home 下的普通用户目录类似。
/run #运行时数据存储的目录,系统启动后创建并用于进程的PID文件、套接字等。
/sbin #系统管理员用的基本系统二进制文件,如 fsck, reboot, ifconfig。
/srv #服务数据目录,包含服务启动所需的数据。
/sys #供设备及系统信息的虚拟文件系统,类似于 /proc。
/tmp #临时文件目录,系统和用户都可以在此目录中存放临时文件,通常会定期清理。
/usr #用户二进制和只读数据目录,包含应用程序和用户工具,如 /usr/bin, /usr/lib。
/var #可变数据目录,用于存放经常变化的数据,如日志文件 (/var/log), 缓存 (/var/cache), 邮件队列 (/var/mail)。
2.2 常见命令
ls: 列出目录内容
ls # 列出当前目录的内容
ls -l # 以详细格式列出
ls -a # 包含隐藏文件
cd: 改变当前目录
cd /path/to/dir # 切换到指定目录
cd .. # 返回上一级目录
cd ~ # 返回主目录
cd # 回到用户默认目录
pwd: 显示当前工作目录
pwd # 输出当前工作目录的绝对路径
mkdir: 创建新目录
mkdir new_dir # 创建名为 new_dir 的目录
rm: 删除文件或目录
rm file # 删除文件
rm -r dir # 递归地删除目录及其内容
rm -f file # 强制删除文件,不提示确认
touch: 创建新文件或更新文件的时间戳
touch newfile.txt # 创建一个名为 newfile.txt 的新文件
cp: 复制文件或目录
cp file1 file2 # 复制文件 file1 到 file2
cp -r dir1 dir2 # 递归地复制目录 dir1 到 dir2
mv: 移动或重命名文件或目录
mv old_name new_name # 重命名文件或目录
mv file1 /path/to/destination # 移动文件到指定目录
3. windows系统
windows操作系统下命令行最早可追溯到DOS系统,现在主要通过powershell或command(cmd)运行
3.1 文件系统结构
区别于unix系统,其有多个并行的根目录,如c,d,e盘; c盘通常用于存储操作系统。
3.2 常见命令
注意,windows下部分命令和unix名称不同,但功能类似:
dir: 列出目录内容
dir # 列出当前目录的内容
dir /a # 列出包括隐藏文件和系统文件
dir /s # 递归列出所有子目录的内容
dir /b # 以简洁格式列出
dir /p # 分页显示目录内容
cd : 改变当前目录(chdir)
cd \path\to\dir # 切换到指定目录
cd .. # 返回上一级目录
cd \ # 返回根目录
D: # 切换到 D 盘
cd D:\path\to\dir # 切换到 D 盘的指定目录
md: 创建新目录
md new_dir # 创建名为 new_dir 的目录
mkdir new_dir # 创建名为 new_dir 的目录 (md 是 mkdir 的别名)
rd: 删除目录 (rmdir )
rd /s /q dir_name # 删除目录及其所有内容(/s 递归删除,/q 静默模式)
rd dir_name # 删除空目录
del / erase: 删除文件
del file.txt # 删除文件
del /f /q /s *.txt # 强制删除所有 .txt 文件(静默模式,递归删除)
erase file.txt # 删除文件(erase 是 del 的别名)