【🌿 持续更新】 瞧瞧我在Ubuntu系统上干了些什么!
🔧 设备基本信息
🖥️ 服务器设备(houjinliang)
| 项目 | 2080tiServerubuntu-server | 3080Server3080server | 3090Server3090server | 3090Server23090server2 | 4090Server4090server | 4090Server24090server2 |
|---|---|---|---|---|---|---|
| 系统 | Ubuntu 20.04.2 LTS | Ubuntu 20.04.6 LTS | Ubuntu 20.04.6 LTS | Ubuntu 20.04.5 LTS | Ubuntu 22.04.2 LTS | Ubuntu 22.04.3 LTS |
| Codename | focal | focal | focal | focal | jammy | jammy |
| 内核 | 5.8.0-59-generic | 5.4.0-218-generic | 5.4.0-216-generic | 5.15.0-139-generic | 6.2.0-26-generic | 6.8.0-85-generic |
| GPU | GeForce RTX 2080 Ti | NVIDIA GeForce RTX 3080 | NVIDIA GeForce RTX 3090 | NVIDIA GeForce RTX 3090 | NVIDIA GeForce RTX 4090 | NVIDIA GeForce RTX 4090 |
| CPU | Intel(R) Xeon(R) Bronze 3104 CPU @ 1.70GHz | Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz | Intel(R) Xeon(R) CPU E5-2699C v4 @ 2.20GHz | Intel(R) Xeon(R) CPU E5-2699C v4 @ 2.20GHz | Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz | Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz |
| Mem | 125.56 GB | 251.77 GB | 251.77 GB | 251.75 GB | 251.50 GB | 251.47 GB |
| DL | CUDA 11.3 + cuDNN 8.9.5 | CUDA 11.3 + cuDNN 8.9.5 | CUDA 11.3 + cuDNN 8.9.5 | CUDA 11.3 + cuDNN 8.9.5 | CUDA 11.6 + cuDNN 8.9.5 CUDA 12.1 + cuDNN 8.9.7 |
CUDA 12.4 + cuDNN 8.9.7 |
| Path | /home/data/houjinliang/cuda-11.3 | /mnt/houjinliang/cuda-11.3 | /mnt/houjinliang/cuda-11.3 | /data/houjinliang/cuda-11.3 | /mnt/houjinliang/cuda-12.1 | /data/houjinliang/cuda-12.4 |
| NV Driver | 460.80 | 570.133.20 | 570.133.20 | 535.183.01 | 570.195.03 | 550.107.02 |
| GCC | 8.4.0 | 9.4.0 | 9.4.0 | 9.4.0 | 11.4.0 | 12.3.0 |
👨💻 个人设备
| 设备名称 | 系统配置 | 主要用途 |
|---|---|---|
| LabPC-Ubt | Windows 10 Pro + Ubuntu 22.04 | 教研室 |
| ITX-Ubt | Windows 11 Pro + Ubuntu 24.04 | 个人 |
🚀 深度学习(Conda + CUDA)环境搭建
- 以3090Server<Ubuntu 18.04.6 LTS>为例/(2024.06.26)
- PS:3090Server目前系统已更新至Ubuntu 20.04.6 LTS,但对下面的记录影响不大/(2025.06.11)
1. 系统信息确认
1 | |
2. Miniconda 安装配置
2.1 下载与安装
1 | |
2.2 环境变量配置

- 这里选择输入
yes,然后会自动配置~/.bashrc,关闭Terminal然后再重启一个或者source ~/.bashrc,就能看到命令行前面的base了; - 如果是输入
no的话,安装完成之后conda命令在终端是识别不到的,需要配置环境变量,手动输入下面的内容到~/.bashrc中。
1 | |
1 | |
1 | |
2.3 Conda & PyPI 的换源
Conda换源(我没换)
参考: Miniconda安装使用教程-阿里云开发者社区,切换清华源
1
2
3(base) houjinliang@3090server:~$ conda config --show-sources
==> /mnt/houjinliang/.condarc <==
auto_activate_base: Truepip换源(我选择换了阿里云源)
1
2
3
4
5
6
7
8
9
10
11# 可以直接用命令的方式,如下.
## Writing to /mnt/houjinliang/.config/pip/pip.conf
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 或者是修改 ~/.config/pip/pip.conf (没有就创建一个), 内容如下:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
# 检查pip换源是否成功
cat ~/.config/pip/pip.conf
重要配置项:
- 安装路径选择:
/mnt/username/miniconda3(个人目录) - 初始化设置:选择
yes自动配置环境变量 - 换源配置:阿里云PyPI源提升下载速度
- 除了逐步的安装外,还可以使用下面的Miniconda快速部署脚本!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#!/bin/bash
# Ubuntu深度学习环境快速配置脚本
echo "开始配置Ubuntu深度学习环境..."
# 1. 更新系统
sudo apt update && sudo apt upgrade -y
# 2. 安装基础工具
sudo apt install -y wget curl vim git build-essential
# 3. 下载Miniconda
cd ~/
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
# 4. 配置conda环境
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 5. 配置pip源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
echo "基础环境配置完成!"
echo "请手动配置CUDA和cuDNN..."
3. NVIDIA驱动确认
1 | |
4. CUDA Toolkit 安装
4.1 CUDA Tookit .run 文件的下载、执行
4.1.1 可视化的安装
1 | |










安装完成后的输出信息,这里可以看一下安装的内容/路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19(base) houjinliang@3090server:~/MyDownloadFiles$ ./cuda_11.3.1_465.19.01_linux.run
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /mnt/houjinliang/cuda-11.3/
Samples: Not Selected
Please make sure that
- PATH includes /mnt/houjinliang/cuda-11.3/bin
- LD_LIBRARY_PATH includes /mnt/houjinliang/cuda-11.3/lib64, or, add /mnt/houjinliang/cuda-11.3/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /mnt/houjinliang/cuda-11.3/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 465.00 is required for CUDA 11.3 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
Logfile is /tmp/cuda-installer.log安装完成之后,最好把这个
/tmp/cuda-installer.log文件删除了,如果不删的话,后面的用户再安装就会有影响。为了不妨碍他人,最好把这个删掉。1
rm /tmp/cuda-installer.log
4.1.2 静默的安装
- 后面又了解到了,还有一种“静默”安装的方式,直接使用命令来设置安装的包和路径
1 | |
5. 环境变量配置
1 | |
1 | |
6. cuDNN 安装配置
1 | |
安装要点:
- ✅ 选择: CUDA Toolkit
- ❌ 不选择: Driver (使用系统已安装的驱动)
- 🎯 安装路径:
/mnt/username/cuda-11.3 - 🎯 环境变量:
~/.bashrc
7. (扩展内容) 多版本CUDA配置与切换
- 我在4090server上安装了多个版本的CUDA,如何配置呢?
- 安装部分就是正常安装,但是配置环境变量的时候需要注意一下!
1
2drwxrwxr-x 15 houjinliang houjinliang 4096 10月 23 2024 cuda-11.6/
drwxrwxr-x 18 houjinliang houjinliang 4096 10月 4 00:04 cuda-12.1/
7.1 直接采用修改环境变量的方式修改当前生效的CUDA版本
1 | |
7.2 使用多CUDA切换脚本
1 | |
📚 参考资料
1. 版本兼容性对照
1.1 CUDA与GCC版本对应
| CUDA版本 | 支持的GCC版本 | Ubuntu版本示例 |
|---|---|---|
| CUDA 11.3 | GCC 7.x, 8.x, 9.x | Ubuntu 18.04 (GCC 7.5) |
| CUDA 11.6 | GCC 7.x, 8.x, 9.x, 10.x | Ubuntu 20.04 (GCC 9.4) |
| CUDA 12.4 | GCC 8.x, 9.x, 10.x, 11.x, 12.x | Ubuntu 22.04 (GCC 11.4) |




1.2 CUDA Toolkit与Driver版本对应
| CUDA版本 | 最低Driver版本 | 推荐Driver版本 |
|---|---|---|
| CUDA 11.3 | 465.19.01+ | 515.65.01 |
| CUDA 11.6 | 510.47.03+ | 525.xxx |
| CUDA 12.4 | 550.54.15+ | 550.107.02 |
1.3 cuDNN版本对应
| cuDNN版本 | 支持的CUDA版本 | 下载链接 |
|---|---|---|
| cuDNN 8.9.5 | CUDA 11.x | NVIDIA Developer |
| cuDNN 8.9.7 | CUDA 12.x | NVIDIA Developer |
2. 下载链接汇总
2.1 CUDA Toolkit

2.2 cuDNN


2.3 Miniconda
💻 开发工具配置
Git & GitHub 配置
1. Git用户配置
- 在Linux的Ubuntu发行版上一般都会默认安装了Git,所以不需要自己手动安装,拿来即用即可。
1
2
3
4
5
6
7# 设置用户信息
git config --global user.name "username_servername"
git config --global user.email "your_email@example.com"
# 查看配置
git config user.name
git config user.email
2. SSH密钥配置
不需要担心Git的用户配置会对本服务器上的其他用户会产生影响。
ssh-keygen生产的的用户密钥会保存在个人账号的目录下。1
2
3
4
5
6
7
8
9# 生成SSH密钥
ssh-keygen -t rsa -C "your_email@example.com"
# 密钥保存在个人目录
ls ~/.ssh/
# id_rsa id_rsa.pub known_hosts
# 复制公钥到GitHub
cat ~/.ssh/id_rsa.pub复制
id_rsa.pub文件下的内容,到Github的Setting中设置SSH Keys。如下。

3. 连接测试
1 | |
Git Install
这台4090server2服务器上没有git,使用deb包安装一个
1 | |
1 | |
1 | |
1 | |
GPU监控工具
1. nvidia-smi (系统自带)
1 | |
2. gpustat
1 | |
3. nvitop (推荐)
1 | |

nvitop优势:
- 交互式界面,支持键盘操作
- 详细的进程信息和资源使用
- 支持进程管理操作
系统资源监控工具(TODO)
1. CPU + Mem
1.1 top
1.2 htop
2. 网络
2.1 通用网络工具
| 工具 | 主要功能 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
nethogs |
按进程显示流量 | 最直接回答你的问题,一目了然 | 需要额外安装,必须 sudo |
首选! 快速定位哪个程序在占用网络。 |
iftop |
按连接显示流量 | 能看到与哪个远程IP通信最频繁 | 不能直接显示进程名,需配合 ss 使用 |
分析网络连接,排查与特定服务器的通信问题。 |
nload |
显示接口总流量 | 界面直观,简单易用 | 无法知道是哪个程序或连接 | 快速查看当前网速,判断网络是否通畅。 |
ss -tupn |
查看所有连接和进程 | 系统自带,功能强大,信息最全 | 输出信息多,需要手动解读 | 深入排查网络问题,无图形界面环境下的首选。 |
| 系统监视器 | 图形化进程/资源监控 | 用户友好,无需命令行 | 功能不如专业命令行工具灵活 | 桌面用户,日常监控和任务管理。 |
2.2 监控端口流量
当系统开启了全局或透明代理后,区分哪些流量走了代理,哪些流量是直连,对于调试和隐私保护至关重要。
监控 Clash 代理(端口 7890)的流量,本质上就是监控所有 目标地址为 127.0.0.1:7890 的网络连接。任何走代理的进程都必须先连接到这个本地端口。
| 场景 | 推荐命令 | 说明 |
|---|---|---|
| 快速查看当前谁在用代理 | sudo ss -tupn | grep ':7890' |
最推荐,直接、准确、无需安装。 |
| 实时监控谁在用代理 | watch -n 1 "sudo ss -tupn | grep ':7890'" |
动态观察,非常方便。 |
| 查看代理总带宽占用 | sudo nethogs |
查看 clash 进程的流量,了解总体情况。 |
| 图形化查看代理总带宽 | sudo nethogs-qt |
桌面用户友好。 |
| 判断直连进程 | 结合 nethogs 和 ss 的结果进行反向推断 |
最实用的直连判断方法。 |
1 | |
📊 系统管理
用户管理
- 实例:3080server
增减用户
user add
1
2
3
4
5
6
7
8
9
10
11
12
13sudo useradd -d "/mnt/songwenming" -m -s "/bin/bash" songwenming
sudo passwd songwenming
# 查看用户和用户组
user@3080server:/mnt$ cat /etc/passwd
……
songwenming:x:1035:1035::/mnt/songwenming:/bin/bash
……
user@3080server:/mnt$ cat /etc/group
……
songwenming:x:1035:
……user delete
1
sudo userdel -r songwenming
用户与用户组
查看设备上的用户
1
2
3
4
5
6
7
8
9
10
11
12
13# 两种方法获取当前设备的用户目录
cat /etc/passwd # 方法一
getent passwd # 方法二
## 这个文件包含了所有用户的基本信息,每一行代表一个用户。
username:password_placeholder:UID:GID:comment:home_directory:login_shell
# 两种方法获取当前设备的用户组目录
cat /etc/group # 方法一
getent group # 方法二
## 这个文件定义了所有的用户组。
group_name:password_placeholder:GID:members_list查看特定用户的属于哪个组
1
2
3
4
5
6
7
8(base) houjinliang@3080server:~$ groups songwenming
songwenming : songwenming
(base) houjinliang@3080server:~$ groups houjinliang
houjinliang : houjinliang sudo
(base) houjinliang@4090server:~$ groups houjinliang
houjinliang : houjinliang sudo ollama
sudo-特殊的组
- sudo 权限是通过将用户添加到一个特定的用户组来实现的。
- 在 Debian/Ubuntu 系统中,这个组通常是 sudo。
1 | |
| 用户 (User) | 权限级别 (Permission Level) | 获得方式 (Method of Grant) |
|---|---|---|
root |
超级用户 (Superuser) | 系统内置 (System Built-in) |
user |
完整 sudo 权限 (Full sudo Access) |
sudo 组成员 (Member of sudo Group) |
houjinliang |
完整 sudo 权限 (Full sudo Access) |
直接在 sudoers 文件中指定 (Directly Named in sudoers) |
ps:这里的sudo -l -U houjinliang的权限很奇怪,不在sudo组,但是在sudoers中指定了,这是因为之前使用ncvv的时候配置的。后面还是直接把houjinliang加入了sudo组。 |
1 | |
把用户加入sudo用户组
1 | |
| 用户 (User) | 权限级别 (Permission Level) | 获得方式 (Method of Grant) |
|---|---|---|
root |
超级用户 (Superuser) | 系统内置 (System Built-in) |
user |
完整 sudo 权限 (Full sudo Access) |
sudo 组成员 (Member of sudo Group) |
houjinliang |
完整 sudo 权限 (Full sudo Access) |
sudo 组成员 (Member of sudo Group) |
用户权限
- ssh with houjinliang
1. 设置750权限
1 | |
2. user是在sudo组的用户,能看到755用户(songwenming,755)的文件吗?
user不是文件的所有者。user不属于该文件的用户组,那么他就会被归类为“其他人”,权限是0,因此他不能读取文件。
1 | |
3. user是在sudo用户组,能看750用户(houjinliang,750)的文件内容吗?
3.1 user,不加sudo.
1 | |
3.2 user,加sudo.
1 | |
3.3 终极方法,切换到root
- !!!root是终极无敌权限,不管任何chmod!!!
- 那情况显而易见,对于750的用户文件夹,也挡不住root用户的访问
root的登录
这里有一个有意思的地方,从user用户切换到root其实有两种方式(命令)
方法一:切换到一个临时的 root Shell (推荐)
- 命令:sudo -s 或 sudo su
- 这会开启一个新的 Shell,而这个 Shell 的用户是 root。
1
2
3
4
5
6
7
8
9user@3080server:~$ sudo -s
root@3080server:/home/user# exit
user@3080server:~$
user@3080server:~$ sudo su
root@3080server:/home/user# exit
user@3080server:~$
## Ctrl + D, 注销root用户,显示的是“exit"
方法二:切换到一个完整的 root 登录环境
- 命令:sudo -i 或 sudo su -
- 这不仅会切换到 root 用户,还会加载 root 用户的完整环境变量,并把当前目录切换到 /root。这被认为是更规范、更安全的做法。
1
2
3
4
5
6
7
8
9user@3080server:~$ sudo -i
root@3080server:~# 注销
user@3080server:~$
user@3080server:~$ sudo su -
root@3080server:~# 注销
user@3080server:~$
## Ctrl + D, 注销root用户,显示的的"注销"
Linux 命令的两种类型
引申出一个内容,sudo: cd:找不到命令。这是问题的核心。你可能会非常困惑:“cd 明明是一个命令,为什么 sudo 会说找不到它?”
原因是:Linux 的命令分为两种类型
- 外部命令 (External Command):
- 这些是存在于磁盘上的独立程序文件,比如
/bin/ls,/bin/cat,/usr/bin/grep。 - 当你执行
ls时,你的 Shell 会在PATH环境变量指定的路径中去查找一个叫做ls的可执行文件,然后运行它。 sudo正是设计用来运行这些外部命令的。它会在一个安全的路径(secure_path)里去寻找这些程序。
- 这些是存在于磁盘上的独立程序文件,比如
- Shell 内建命令 (Shell Built-in Command):
- 这些命令是 Shell 程序(比如你用的
bash)自身的一部分,它们不是磁盘上的独立文件。 cd就是一个最典型的内建命令。此外还有pwd,echo,export,alias,exit等。sudo无法找到cd命令,因为它不是一个独立的文件,所以sudo在所有程序路径里都找不到它,最终只能报告“找不到命令”。
- 这些命令是 Shell 程序(比如你用的
为什么 cd 必须是内建命令?
想象一下,如果 cd 是一个外部程序。当你运行 cd /some/dir 时,系统会启动一个新的进程来运行 cd 这个程序。这个新进程会成功地把它自己的工作目录切换到 /some/dir,然后……它就退出了。你原来的那个 Shell 进程的工作目录完全没有受到任何影响。
所以,为了能够改变当前 Shell 自身的环境(比如当前所在目录),cd 必须是 Shell “内置”的功能,直接在当前进程内执行。
磁盘管理 Disk Tools
- 实例:3080server
1. 文件查询命令:ls
- 查看文件以及文件夹大小总用量 26251480
1
2
3
4
5
6
7
8
9
10
11# ll
(py38mmyolo) houjinliang@3080server:~/userdoc/offlinefile$ ll
总用量 26251480
drwxrwxr-x 6 houjinliang houjinliang 4096 1月 10 21:36 ./
drwxrwxr-x 9 houjinliang houjinliang 4096 1月 10 15:59 ../
drwxr-xr-x 5 houjinliang houjinliang 4096 8月 26 2022 coco/
-rw-rw-r-- 1 houjinliang houjinliang 6983030 1月 10 17:00 coco128.zip
-rw-rw-r-- 1 houjinliang houjinliang 48639045 1月 10 16:21 coco2017labels.zip
-rw-rw-r-- 1 houjinliang houjinliang 4372979 1月 10 14:48 curl-8.5.0.tar.gz
-rw-rw-r-- 1 houjinliang houjinliang 12353723 1月 5 16:32 pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
…………
总用量: 英文是 “total”。它表示当前目录下所有文件和目录所占用的磁盘块的总大小。
26251480: 这是一个数字,单位是块。 - 单位换算:
- 我们之前估算过,
26251480块 ≈ 26,869,515,520 字节。 26,869,515,520 字节 / 1024 = 26,243,708 KB26,243,708 KB / 1024 = 25,628 MB25,628 MB / 1024 ≈ 25.03 GB
1 | |
1 | |
选项解释:
-l: 我们已经知道了,表示使用长格式输出。-h: 代表 “human-readable”(人类可读格式)。这是一个非常实用的选项,它会自动将文件大小(以及这里的总用量)的单位从字节或块,转换为更易于阅读的 K(千字节)、M(兆字节)、G(吉字节)等单位。总用量: 含义与之前相同,表示当前目录下所有文件和目录所占用的磁盘块的总大小。26G: 这就是-h选项的功劳。它将之前那个不直观的数字26251480(单位:块)转换成了人类可读的格式。- 您看到的输出是26G,这与我们计算出的25.03 GB非常接近。微小的差异可能源于:
- 系统显示的舍入:
25.03 GB在显示时可能会被舍入为26G(虽然通常25.03会显示为25G,但不同系统或版本的ls可能有不同的舍入逻辑)。 - 块大小的定义:在某些系统或文件系统中,1 块可能被定义为 4096 字节(4 KB)。如果按这个标准计算:
26251480 块 * 4096 字节/块 ≈ 107,527,426,560 字节 ≈ 100.15 GB。这与26G差距很大。因此,可以断定您系统的块大小是 1024 字节。 - 最可能的原因:
ls命令在计算total时,其内部算法可能对单位转换做了特定的处理,导致显示为26G。我们只需理解它代表大约 26 GB 的磁盘空间占用即可。
- 系统显示的舍入:
2. 磁盘查询命令与工具
2.1 磁盘查询: df & du
磁盘查询, df。
df的全称是 “disk free”,它的核心作用是从文件系统(通常可以理解为磁盘分区)的宏观角度查看整体的使用情况。1
2
3
4
5
6
7
8user@3080server:~$ df -h
# -h 是 --human-readable(人类可读)的缩写。
user@3080server:~$ df -T
# df -T: 显示文件系统类型 (filesystem Type),比如 ext4, xfs, ntfs 等。
user@3080server:~$ df -hT
# df -hT: 结合起来使用,非常方便。磁盘查询,du。
du的全称是 “disk usage”,它与df完美互补。当df告诉你某个分区(比如/)快满了,du就能帮你找到到底是哪个目录或文件占用了大量空间。1
2
3
4
5
6
7
8
9
10
11
12du -h /path/to/dir
# 以易读格式显示指定目录下所有子目录的大小。如果目录很深,会输出大量信息。
du -sh /path/to/dir: 这是最常用的组合!
# -s (--summarize): 只显示总计大小,不显示子目录的。
# -h: 易读格式。
sudo du -sh /mnt/houjinliang
# 示例:sudo du -sh /mnt/houjinliang 会计算并只显示 houjinliang 文件夹的总大小。
sudo du --max-depth=1 -h /mnt/ | sort -rh
# 计算 /mnt 目录下第一层所有文件夹的大小,并按从大到小排序
2.2 交互式磁盘空间分析器: ncdu
ncdu命令 (交互式磁盘空间分析器)。这是一个强烈推荐的工具,可以看作是du的超级升级版。它不是系统自带的,但非常值得安装。功能: 它会扫描你指定的目录,然后提供一个可交互的、可视化的文本界面,让你能方便地按大小排序、进入子目录、甚至直接删除文件。1
2
3
4
5
6
7
8
9# - **如何安装:**
- Debian/Ubuntu: `sudo apt update && sudo apt install ncdu`
- CentOS/RHEL: `sudo yum install ncdu`
# - **如何使用:**
# 扫描 /mnt 目录
sudo ncdu /mnt
# 命令执行后会有一个扫描过程,扫描结束后你就可以用键盘方向键自由探索了。
2.3 物理磁盘的结构: lsblk & fdisk
- 查看磁盘和分区结构的工具 (
lsblk,fdisk)。有时候你不仅想看容量,还想了解物理磁盘的结构,比如“我的服务器上到底有几块硬盘?每块硬盘是怎么分区的?”1
2
3
4
5lsblk
# - **`lsblk` (List Block Devices):** 以树状结构清晰地列出所有磁盘和分区,非常直观。
sudo fdisk -l
# - **`sudo fdisk -l` (需要 sudo):** 一个更传统、更强大的分区工具。`-l` 参数可以列出详细的分区表信息,比 `lsblk` 更底层。
2.4 du的组合运用
查看文件夹大小
1
2
3
4# sudo du -sh /mnt/chenzhengtao/
user@3080server:/mnt$ sudo du -sh /mnt/chenzhengtao/
119G /mnt/chenzhengtao/⭐如要查看当前目录已经使用总大小及当前目录下一级文件或文件夹各自使用的总空间大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14# du -h --max-depth=1
(py38mmyolo) houjinliang@3080server:~$ du -h --max-depth=1
6.5M ./.config
8.0K ./.conda
1.1G ./.vscode-server
12G ./cuda-11.3
86G ./userdoc
8.0K ./.gnupg
16K ./.ssh
8.0K ./.nv
2.7G ./.cache
24G ./miniconda3
125G .文件夹大小与排序
1
# sudo du --max-depth=1 -h /mnt/ | sort -rh⭐批量输出目录下的文件夹的大小,脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35#!/bin/bash
# ==============================================================================
# 脚本名称: calculate_dir_sizes.sh
# 描述: 计算指定目录下第一层所有子目录的大小。
# 作者: Gemini
# 日期: 2025-09-04
# ==============================================================================
# 定义要扫描的目标目录
TARGET_DIR="/mnt"
# --- 主逻辑 ---
# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; then
echo "错误: 目录 ${TARGET_DIR} 不存在。"
exit 1
fi
echo "正在计算目录 [${TARGET_DIR}] 下所有文件夹的大小..."
echo "--------------------------------------------------"
# 循环遍历目标目录下的每一个项目
# 使用 find 命令可以更精确地只选择目录,避免处理文件
# -mindepth 1 -maxdepth 1 确保只处理第一层子目录
find "${TARGET_DIR}" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
# 使用 sudo du -sh 计算每个目录的总大小
# -s (summarize) 表示只显示总计大小
# -h (human-readable) 表示使用易读格式 (K, M, G)
sudo du -sh "${dir}"
done
echo "--------------------------------------------------"
echo "计算完成。"
🐳 容器化环境
- 实例环境:4090server2
Docker 安装配置
1. Docker安装 (需要管理员权限)
需要管理员用户!
1 | |
2. 用户权限配置
- 为了让非管理员用户也能使用docker,需要建立用户组,赋予用户组内的用户权限
1 | |
3. Docker镜像或代理
3.1 配置镜像服务器(很多镜像服务器已经不能用了)
1 | |
3.2 配置网络代理
Docker 代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14# Docker pull代理配置
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/proxy.conf
# 添加代理配置
# 在json配置文件中,输入以下配置 -> (7890端口号是因为clash是代理的这个端口)
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/"
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1"
# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart dockerContainer 代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 用户级代理(这个就不需要管理员用户了,使用自己的用户登录)
vim ~/.docker/config.json
# 在json配置文件中,输入以下配置 -> (7890端口号是因为clash是代理的这个端口)
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:7890",
"httpsProxy": "http://127.0.0.1:7890",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}
4. 测试安装
1 | |

使用 Docker 部署 Overleaf
Overleaf in My Server
上述的docker环境配置好之后,可以配置一下overleaf. 特别是得配置好网络环境,要不然Docker Image拉取不下来
Config
1 | |

1 | |
Remote link
因为服务是在远程服务器上,为了在本地能直接方法,需要修改端口和外网访问
在./config/overleaf.rc中,需要修改以下字段:
1 | |
Overleaf 容器启动之后,可以打开 http://xx.xx.xx.xx:xx/launchpad 注册管理员帐户。之后我们就可以用这个帐户登录 Overleaf 平台。
网上教程中还给出了一些复杂的配置,后面根据需要再配置吧。
Writen in later
因为Overleaf官网对于免费用户,只有20s的编译时间,超过时间限制则无法编译。对于这种情况,只能付费解决。如果面对我遇到这样的情况的话,我可能也会选择付费的方式。但在网上看到了可以在服务器上搭建自己的Overleaf,所以想跟着教程自己试一下。按照教程一步步走下来,最后也配置成功了。也许最后并不会使用自己配置的这个,但折腾永不停息,万一用到了呢?!
🚀 Network Proxy(TODO)
Command Proxy
Ubuntu配置 命令行Clash 教程 - 知乎 (zhihu.com)
终端使用代理加速的正确方式(Clash) | Ln’s Blog (weilining.github.io)
2024.01.10
这部分是再服务器上完成的!
- Download: clash-linux-amd64-v1.18.0.gz
1 | |
1 | |

1 | |
1 | |
1 | |
💻 双系统的安装与配置
LabPC-Ubt 20.04
在读研的这几年里,教研室的这台电脑应该是陪伴我最长时间的,本文就记录一些在这台电脑上面搞了些什么东西吧,文中用LabPC来表示教研室的电脑。
为LabPC购买了两个完全一样的480GB固态硬盘,在安装系统的时候,为了区分好系统是安装到了哪个盘里,首先是仅接入了一个SSD。当把Windows系统安装到这个SSD之后,再把另一个SSD接上,之后再去安装Ubuntu。因为在Ubuntu系统安装的分区时,能看到不同硬盘的标号,只要确定好哪个硬盘里安装好了Windows系统,在另外的一个空盘里进行分区和安装Ubuntu就好了。
1. 先安装Windows10
之前装Windows系统的时候,我都喜欢使用官方的安装工具MediaCreationTool_Win11_23H2,用这个工具做一个U盘启动工具,但这次做U盘启动盘的时候总是报错,其实之前也遇到过了这个问题!遇到这个问题的话,可以下载Windows的镜像文件,然后用Rufus来制作U盘启动盘。
2. 再安装Ubuntu 20.04
- ubuntu-20.04.6-desktop-amd64.iso:Index of /ubuntu-releases/20.04/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Rufus - Create bootable USB drives the easy way
| 设备 | 类型 | 挂载点 | 格式化? | 大小 |
|---|---|---|---|---|
| /dev/sda1 | ext4 | / | √ | 200GB |
| /dev/sda2 | ext4 | /boot | √ | 2GB |
| /dev/sda3 | ext4 | /tmp | √ | 20GB |
| /dev/sda4 | ext4 | /usr | √ | 80GB |
| /dev/sda5 | ext4 | /var | √ | 50GB |
| /dev/sda6 | ext4 | /home | √ | 100GB |
| /dev/sda7 | swap | 20GB |



- 磁盘0:KIOXIA 480GB ▶ Ubuntu 20.04
- 磁盘1:KINGSTON SSD
- 磁盘2:1TB HDD
- 磁盘3:KIOXIA 480GB ▶ Windows 10
3. 双系统引导界面美化+修改默认启动项

在Ubuntu系统,按照如下的步骤使用该主题。
1 | |
一般我们需要更改其中的 GRUB_DEFAULT(默认启动项:这个编号是你开机时看到的若干个启动项从上到下的依次编号,记住!编号是从0开始的,意思是,第一项是0,第二项是1,以此类推)、GRUB_TIMEOUT_STYLE(是否显示倒计时,hidden的属性表示不会显示倒计时,注释掉该行则显示倒计时)、GRUB_TIMEOUT(等待时间,单位是秒)。
按自身需求更改后,保存即可。
1 | |
4. Ubuntu系统时间正确,Windows系统时间错误
在Ubuntu系统中执行如下操作
1 | |
5. Ubuntu无法连接网络
5.1 有线网络-拨号上网
1 | |
PC的有线网上网连接方式是拨号上网,所以我得先建立一个拨号的链接。
按照下面的操作,添加一个DSL/PPPoE
1 | |

上网接口即为网线,这里是enp5s0用户名输入为上网账号,西工大的上网账号即为学号;服务,空着密码即为西工大的上网密码
1 | |
使用上面这种方法有一种问题是,每次开机之后电脑都没有网络,必须手动到网络设置中把有线网打开。
5.2 pppoeconf
1 | |
几个常用命令
1 | |
通过pppoeconf设置后,每次开机就能自动拨号了,但这样出现了一个很奇怪的现象是,网络设置中,有线的那个选项没有了,并且出现了“有线未托管”的字样。这样用起来没有什么问题,但我并不知道出现这种问题的原因是什么!

5.3 无线网络和蓝牙
USB无线网卡不知道怎么弄
后续:买的这个USB无线为网卡不支持Linux,蓝牙适配器也不支持Linx!好吧,就只能先这样将就这就这样用吧~
6. 在Ubuntu安装常用软件
‘deb’软件
- Nutstore
- Chrome
- Sunlogin
- VSCode
1 | |
CFW
- Step 1, install and setup
Github上的CFW已经删库了,唉!只能在网上找一找别人之前做到备份了.
1 | |
- Step 2, 在CFW的
Profiles中加入自己的配置文件,然后在Proxies中选择一个节点 - Step 3, 打开
Ubuntu 设置,在网络 - VPN - 网络代理中加入配置。

flameshot(火焰截图)
- 安装和启动
1 | |
- 绑定键盘快捷键

ITX-Ubt 24.04
双系统安装
- 2025.08.27
- 没有一个Linux系统感觉还是不太行,于是决定再安装一个双系统。









用户配置
- 2025.08.27
- ubtitx
- root
Win + L锁屏后不熄屏
- 2025.08.27
- https://www.zhihu.com/question/276118015
短按win+l 会锁屏,然后关显示器; 按win+l 持续几秒钟,就会采用你设置的关屏时间,设置成never就永远亮着了。
Flameshot
1 | |

Ubuntu24和Win11双系统,Windows时间不正确
1 | |
Grub 主题
- 2025.08.27
- https://zhuanlan.zhihu.com/p/558980080
Ubuntu 24.04隐藏Dock状态栏的Windows未挂载分区图标
中文输入法
- 2025.08.27
- 使用Fcitx5
1 | |



Proxy - clashverge
ITX-Ubt 22.04 WSL
用户配置
- murphyitxwsl@MurphyWinITX
- root
忘记用户的密码了
重置root密码
1
2
3# 1. 以管理员身份打开 PowerShell
wsl.exe --user root
passwd root重置murphyitxwsl用户密码
1
2wsl.exe --user root
asswd murphyitxwsl
✨ 系统Error解决记录
系统升级问题 Server OS Update,Ubuntu 18.04 -> 20.04
- 实例:3080server, 3090server
1. 问题背景
3080Server和3090Server都是Ubuntu 18.04版本,由于Ubuntu 18.04已经“寿命将尽”,很多软件的维护都结束了,现在出现了一个很大的问题!VSCode 1.85之后的版本使用SSH-remote连不上服务器了!天杀的!Damn!只有两种解决方法:
- 根据对应的发行版,升级至 Ubuntu 20.04 LTS、Debian 10 或 RHEL 8
- 降级到 VS Code 1.85
2. 解决方法(一) VSCode降级
VSCode降级:November 2023 (version 1.85),安装1.85.2版本,然后关闭自动更新。VSCode怎么关闭自动更新 - 知乎
先把VSCode降级之后,将就用了一段时间,后面决定,不能就这么妥协了,我得去把实验室的服务器更新一下!
3. 解决方法(二) Ubuntu 18.04 → 20.04 升级
- How to upgrade your Ubuntu release - Ubuntu Server documentation
- 3080server(2025.06.11), 遇到了前三个问题
- 3090server(2025.06.19)
3.1 升级步骤
1 | |
3.2 遇到的问题
- 网络连接问题(这台服务器之前就有这个问题)
连不上网的问题是最大的,也不记录中间怎么排查的了,就直接贴一下教程了: https://blog.csdn.net/qq_35395195/article/details/135700359
找了好久的方法,这个方式是有效的!但是,如果按照他说起,再改回false的话,重启后的电脑还是之前连不上网络的状态,还需要重走一边教程。所以最后采取了保持true。这样重启后,会自动联网!
1 | |
- NVIDIA驱动问题
- 升级后重新安装显卡驱动
- 在”软件与更新”中选择合适的驱动版本

- SSH端口重置
- 安全加固指南:如何更改 SSH 服务器的默认端口号 - 知乎
- 系统更新之后又变成了默认的22端口,为了服务器安全,需要改一下。(这里应该我我在系统更新的时候选择了保留之前的配置)
1 | |
- 3090server升级遇到的问题
这次比较顺利,遇到的问题还是网络和驱动的问题。
首先,在还没有更新的时候查看了一下当前的网络配置,比较抽象,为什么是docker桥接的网络,不知道咋回事,不管了!

更新完成之后遇到一个问题,之前的网线连接的网卡指示灯不亮,我不知道是还没有缓冲好还是咋了,我直接换了另外一个网卡了,指示灯亮了。然后使用nm-connection-editor和nmtui就配好了PPPOE,但是这时候的IP是跟之前不一样了,算了,也不管了,能用就行。

第二个问题是切换英伟达驱动的时候遇到的!
1 | |

Failed to initialize NVML: Driver/library version mismatch
- 实例:4090server
环境正常运行了很长一段时间,但是突然有一天,在运行程序的时候出现了这样一个报错!
1 | |
这个error是我自己的程序里写得报错提示,系统的cuda不可用了?!这是咋回事?!
1 | |
鉴定为Ubuntu默认内核自动更新,导致与NVIDIA驱动程序不兼容.
Ubuntu开机卡在了紫屏,进入不了用户登陆界面
- 示例 LabPC-Ubt
不知道怎么回事,有一次从Ubuntu启动的时候卡在了紫屏进不来系统了。也不知怎么解决网上搜了搜说是内核的问题,也有说是英伟达驱动的问题,不知道怎么回事,于是重启之后,在开机时候选择了Ubuntu的高级选项,然后选了一个Recovery模式的内核,可以进入登陆界面,但是显示缩放不正常,并且双屏中只有一个屏幕有输出图像。这个现象和英伟达显示驱动有问题一模一样,所以就打开了附加驱动,果然当前的选择是X.Org X Server,重新选择了Nvidia驱动之后,然后重启,正常选择Ubuntu就能正常进入系统了。


