没错,我的阿里云 Linux 的轻量应用服务器上 2C2G 没显卡也跑起来了 DeepSeek 本地模型,但是没卵用。

我是看到好友 Alfred Zhao 的 手把手教你部署 DeepSeek 本地模型 的这篇文章,其实我是对这个本地部署不感冒的,因为 chatgpt 等其他ai能够很愉快的使用,国内的大模型也没注册和关注过,我之前一直认为本地部署需要显卡,mac 部署需要 M系列的,但是我看他的本地环境截图是 4年前的 intel,我这就来了兴趣,然后我看了下我的本子,虽然是 6 年前的了,但是跟他的配置差不多,配置如下:

image-20250207083415687

首先介绍下什么是 ollama

ollama官网上很显眼的一句话就是 Get up and running with large language models.

什么是 Ollama ?正如 Ollama 官方仓库所说:本地启动并运行大型语言模型。

Ollama 是一个开源的大型语言模型服务工具,旨在帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以通过一条命令轻松启动和运行开源的大型语言模型。 它提供了一个简洁易用的命令行界面和服务器,专为构建大型语言模型应用而设计。用户可以轻松下载、运行和管理各种开源 LLM。与传统 LLM 需要复杂配置和强大硬件不同,Ollama 能够让用户在消费级的 PC 上体验 LLM 的强大功能。

参考:https://github.com/datawhalechina/handy-ollama/blob/main/docs/C1/1.%20Ollama%20介绍.md

话不多说,晚上就开搞,安装其实很简单,不多赘述,但是在本地部署需要下载模型,由于 ollama 的模型仓库对国内不太友好,速度是时快时慢,我就想着在我那阿里云新加坡节点是不是会有好一些呢,然后查了下ollama 支持 Linux上部署,并且支持一键部署,那就走起, 直接在Linux上使用如下命令curl -fsSL https://ollama.com/install.sh | sh安开始装 ollama。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@sgtdo ~]# curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
>>> Downloading Linux arm64 bundle
############################# 41.2%
###################################################### 76.3%
######################################################################## 100.0%
>>> Creating ollama user...

>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
image-20250207104953197

这一安装不要紧,直接红色的 WARNING 提醒我,WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode. 好家伙,竟然可以以CPU模式运行,也就是不必须要有显卡。

那就直接在我的阿里云的新加坡节点进行安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@sgtdo ~]# ollama run deepseek-r1:1.5b
pulling manifest
pulling aabd4debf0c8... 54% ▕████████████████████████████████████████████████████████████████████▏ 602 MB/1.1 GB 1.6 MB/s 5m14s


pulling manifest
pulling manifest
pulling aabd4debf0c8... 100% ▕███████████████████████████████████████████████████████████████████▏ 1.1 GB
pulling 369ca498f347... 100% ▕███████████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕███████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕███████████████████████████████████████████████████████████████████▏ 148 B
pulling a85fe2a2e58e... 100% ▕███████████████████████████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success

速度明显好于本地的速度,本地的速度也就400k,有时候 10k左右。

本地现在模型的速度

安装之后可以通过/?查看 帮助,我首先问了你是谁?你牛哔么?输入你牛哔么?之后,只出现了 <think>而阈值对应的</think>没有出现,刚开始我认为是卡了,再后来还是没动弹,我以为是过滤和不文明用语。多次回车之后又回复我:您好!我是由中国的……,好的没有细究具体为啥。然后再问了 3.8和3.11比较大小。我把这贴到群里,同事说问个复杂的,然后扔给我一个问题:ORACLE REGEXP_LIKE 多行匹配模式,回答具体如下:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts

Use """ to begin a multi-line message.

>>> Who are you?
<think>

</think>

Greetings! I'm DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. I'm at your service and would be
delighted to assist you with any inquiries or tasks you may have.

>>> 你是谁?
<think>

</think>

您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。我为您提供服务,请问有什么我可以帮助您的吗?😊

>>> 你牛哔么?
<think>

>>>
>>>
>>>
>>>
>>>
>>>
>>> 你牛哔么?
<think>

</think>

您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1,很高兴为您提供服务。请问有什么我可以帮助您的吗?😊

>>>
>>> 3.8 和3.11 比大小
<think>

</think>

好,我现在来比较一下3.8和3.11这两个数的大小。首先,我需要将它们转换成相同的小数位数,这样更容易进行比较。

3.8可以写成3.80,因为它有两位小数;而3.11是两位小数,保持不变。现在,我们有:

3.80
3.11

接下来,我可以逐一比较每一位上的数字:

- 第一位是3,相同;
- 第二位,3.80中的8和3.11中的1,显然8比1大。

因此,3.80大于3.11。所以,3.8比3.11大。

总结一下:
3.8 > 3.11

>>> ORACLE REGEXP_LIKE 多行匹配模式
<think>

</think>

您好!我无法直接提供Oracle的Regular Expression的多行匹配模式。不过,我可以为您提供一个通用的方法来实现多行匹配,您可以将
这个方法与Oracle的Regular Expression集成起来使用。

以下是通用的多行匹配策略:

1. **定义多行规则**:
/* 多行规则 */

2. **在代码中应用规则**:
- 在有条件的情况下,执行多行规则。

3. **将规则整合到OracleSQL脚本中**。

如果您有具体的需求或问题,请提供更多信息,我可以进一步协助您。

可以看到比较 3.8 和 3.11 是可以比较成功的,但是对ORACLE REGEXP_LIKE 多行匹配模式这个问题,同事的结论是 说了跟没说似的。

想起来第二天有个数据库堡垒机的会议,然后我就输入了 数据库堡垒机通常解决哪些难点?的问题他给我的信息如下:

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
>>> 数据库堡垒机通常解决哪些难点?
<think>

</think>

数据库堡垒机设计的目的是为需要访问外部数据库、如Web服务器、网络服务等提供稳定和高效的访问方式。以下是一些数据库堡垒机通常
面临的主要挑战:

1. **网络延迟与稳定性**:
- 外部数据库可能部署在不同的地理位置,导致网络连接时延迟增加。
- 数据库的存储设备和通信协议可能导致高 latency(延迟)问题。

2. **数据传输速率限制**:
- 一些外部服务器可能有较高的带宽需求,无法满足本地数据库的速度需求。
- 不同地区的网络环境和技术不稳定可能影响数据传输速度。

3. **硬件资源不足**:
- 外部数据库的存储设备(如磁盘、网络缓存)可能需要较大的内存和存储能力。
- 办法上存在有限,例如使用云存储解决方案以替代本地存储。

4. **安全性与访问控制**:
- 数据库在堡垒机上的访问权限管理可能会带来挑战。
- 需要考虑数据的加密和存储安全问题,防止被破解或未经授权访问。

5. **性能与延迟优化**:
- 多个数据库服务器需要同步工作,可能导致整体性能下降。
- 快速响应时间对于需要实时监控的应用至关重要,但可能受到网络延迟的影响。

6. **资源管理**:
- 处理多个数据库和多个客户端需要大量的内存和CPU资源。
- 使用虚拟化技术(如VPS或NFS)可以帮助降低资源需求。

如果您有更多具体的技术细节或问题,请提供更多上下文信息。

哦,好的,我准备卸载了。

但是还是没忍住,又给了一个写shell脚本的问题:写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录。实际上这个问题我写错了,落了一个字,就是空间的间,磁盘空间使用率,但是我写成了磁盘空使用率,没想当到这一个写错,竟然很明显的看到本地模型的能力。

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
36
37
38
39
40
41
>>> 写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录
<think>

</think>

是的,我愿意为您提供一个 shell脚本来实现 Linux 上下文中提到的磁盘空用率检测功能。该功能可以帮助用户快速识别和修复潜在的问
题。

### 主要功能:
1. 读取磁盘空用率(df -h)。
2. 检测是否有分区显示为空的文件或目录。

### 示例脚本:

```shell
#!/bin/bash

# 我们需要将每个分分区进行检查,判断其是否为空
for /b in *. /b*; do
if [ ! -z $(cat /proc/drives/ /b) ]; then
echo "分区 {b} 为空使用"
exit 1
fi
done

# 如果没有发现任何空分分区,说明磁盘空用率不超过80%
if [ ! -z "$?" ]; then
echo "磁盘空用率不超过80%" # 意味着空分区不超过80%(2*(3-80%)=1.6%,而实际中没有空分区)
fi
```

### 解释脚本:
1. **读取所有分分区**:`for /b in *. /b*; do`
- 使用 `*` 以读取所有分分区。
- `/b*` 是分分区的目录,用于循环读取每个分分区。

2. **检查空分分区**:
```bash
if [ ! -z $(cat /proc/drives/ /b) ]; then
echo "分区 {b

没错,没执行完,我就给取消了。

上面的阿里云的主机配置是2c2g的配置,具体如下:

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
[root@sgtdo ~]# free -m
total used free shared buff/cache available
Mem: 1756 394 103 0 1258 1179
Swap: 4095 393 3702
[root@sgtdo ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum
Stepping: 4
CPU MHz: 2500.000
BogoMIPS: 5000.00
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 33792K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single rsb_ctxsw fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat

然后我在oracle cloud 上的 arm 主机上进行安装

主机的配置如下:

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
[root@armdb01 ~]#  free -m
total used free shared buff/cache available
Mem: 10905 3681 568 2636 6655 4461
Swap: 4095 71 4024
[root@armdb01 ~]# lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: ARM
BIOS Vendor ID: QEMU
Model: 1
Model name: Neoverse-N1
BIOS Model name: virt-4.2
Stepping: r3p1
BogoMIPS: 50.00
L1d cache: unknown size
L1i cache: unknown size
L2 cache: unknown size
NUMA node0 CPU(s): 0,1
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs

在 oracle cloud 上进行下载模型速度很快,我感觉没超过1分钟。

1
2
3
4
5
6
7
8
9
10
11
[root@ ~]# ollama run deepseek-r1:1.5b
pulling manifest
pulling aabd4debf0c8... 100% ▕█████████████████████████████████████████████████████████████▏ 1.1 GB
pulling 369ca498f347... 100% ▕█████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕█████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕█████████████████████████████████████████████████████████████▏ 148 B
pulling a85fe2a2e58e... 100% ▕█████████████████████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)
image-20250206220305246

在进行回答问题的时候的我查看主机的负载如上。级别上把俩cpu跑满了。

以下是我在本地本子上跑的,本地本子是带个集成显卡,虽然下载的速度慢,但是我试了下,有显卡和没有显卡的效果不一样。我也让他回答了写shell脚本的问题,问题是原模原样复制过去的。但是这次的效果还真不一样。具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 ollama run deepseek-r1:1.5b
pulling manifest
pulling aabd4debf0c8... 54% ▕██████████████████████████████████████████████ ▏ 602 MB/1.1 GB 1.6 MB/s 5m14s


pulling manifest
pulling manifest
pulling aabd4debf0c8... 100% ▕███████████████████████████████████████████████████████████████████████████████████████▏ 1.1 GB
pulling 369ca498f347... 100% ▕███████████████████████████████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕███████████████████████████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕███████████████████████████████████████████████████████████████████████████████████████▏ 148 B
pulling a85fe2a2e58e... 100% ▕███████████████████████████████████████████████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
>>>
>>>
>>>
>>>
>>>
>>> 写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
>>> 写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录
<think>
好,我现在需要帮用户写一个shell脚本来检测 Linux 下各个分区内磁盘空用率超过80%的情况。首先,我得了解df命令的基本用法和输出结果。

用户希望实现的就是检查所有分区内空用率达到80%以上的文件系统。那我得知道,在分区目录结构中,每个分区内都有对应的df命令,用来获取空可用空间。所以,我
需要遍历所有分区,然后运行df命令,提取空可用率,最后筛选出超过80%的那些。

接下来,我需要考虑如何生成这样的脚本。通常,使用for循环来遍历所有分区可能是一个有效的方法。首先,我要找到系统中所有的分区目录,这可以通过
systemctl listfs或lsf来找。或者,我可以手动遍历常见的分区结构,比如通常会有一些主分区(like, lib, etc.)以及用户、组和大小的分区。

假设我有一个列表中的分区内,每个分区内都有一个对应的路径结构,比如 "/path/to/directory/like/ /path/to/directory/group/ /path/to/directory/root"。那
么,在每个这样的字符串中,我会将它作为输入参数发给df命令。

接下来,我需要考虑如何生成这些字符串。可能的话,我可以手动写一个脚本,遍历常见的分区结构,或者使用某种工具来动态生成它们的路径。不过,手动实现可能
会更可靠些,特别是对于用户来说更容易控制。

然后,在每个分区内运行df -l命令(或者更精确地用df -h -c -C 来获取空可用率),并处理输出结果。如果空可用率超过80%,就记录下来,并保存到一个文件中,
比如kill.sh。

另外,我还需要考虑一些特殊情况,比如某些系统可能没有分区或分区内为空使用率的情况。在这些情况下,脚本应该忽略或者过滤掉这些情况。

现在,我大致有了框架:

1. 找出所有的分区内路径字符串。
2. 对每个路径字符串,执行df -l命令,提取空可用率。
3. 如果超过80%,将结果保存到kill.sh文件中。
4. 最后,检查杀行动作是否成功,并以有意义的方式输出结果。

在编写脚本时,我需要注意一些细节:

- 确保输入路径字符串的格式是正确的,比如“like /group /root”这种形式。如果没有特殊处理,可能会导致df命令解析错误。
- 考虑分区内是否有其他东西被包含进去,确保不会漏掉或多发文件系统。
- 检查空可用率是否正确显示为百分比数,并确保输出格式符合要求。

另外,我还需要考虑如何处理可能的错误情况。比如,某些分区是否有空可用空间,或者是否有磁盘空空间但不是空分区的情况?可能需要进一步了解df命令的输出结
果来判断。

最后,我需要将脚本整合到一个shell脚本中,并测试它是否能够正确工作。如果有什么问题,可以进行调整和优化。
</think>

以下是实现 Linux 下 df 检测磁盘空使用率超过80%的分区目录的 shell 脚本:

```bash
#!/bin/bash

# 找出所有分区内路径字符串
for path in "${systemctl listfs --format '*' || lsf > /dev/null | grep 'path*'; echo $(cut -d\s+ -f1h); &}{'l'}" "${path}" "${path}/like}"
do
# 启用df命令并获取空可用率
df -l | cut -d '/' -f 8 --max-width 10
if ["$(cut -d /; max-width 1) $(last)" -gt "80%"] then
echo "分区内空使用率超过80%的路径是:$path"
> kill.sh
exit 0
fi
done > kill.sh
```

### 解释:

1. **查找所有分区内路径字符串**:
```bash
for path in "${systemctl listfs --format '*' || lsf > /dev/null | grep 'path*'; echo $(cut -d\s+ -f1h); &}{'l'}" "${path}" "${path}/like}"
```
使用 `systemctl listfs` 和 `lsf` 查找所有分区内路径字符串,然后过滤出 `path*` 类型的路径,并生成循环变量 `$path`。

2. **执行 df 检查空可用率**:
```bash
df -l | cut -d '/' -f 8 --max-width 10
```
使用 `df -l` 打开所有分区内磁盘空使用率信息,`cut` 剪切输出结果中的空可用率(第 9 列),并过滤出不超过 10 行的条目。

3. **判断是否超过80%**:
```bash
if ["$(cut -d /; max-width 1) $(last)" -gt "80%"] then
echo "分区内空使用率超过80%的路径是:$path"
> kill.sh
exit 0
fi
```

4. **保存结果到kill.sh 文件**:
```bash
done > kill.sh
```
将循环变量 `$path` 存入 `kill.sh` 文件名,文件内容包含所有空使用率超过80%的路径信息。

### 注意事项:

- 该脚本将检查所有分区内空可用空间,并输出所有超过80%的路径。
- 请确保分区内路径字符串格式正确(如 `like /group /root`)。
- 定期验证脚本工作是否正常,以处理可能存在的意外情况。

可以看到不带显卡的大模型,<think></think> 之间直接是空的,本地有显卡,虽然是集成的显卡,但是效果很明显,,<think></think> 之间是有内容的,最起码在思考了哈。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

# 找出所有分区内路径字符串
for path in "${systemctl listfs --format '*' || lsf > /dev/null | grep 'path*'; echo $(cut -d\s+ -f1h); &}{'l'}" "${path}" "${path}/like}"
do
# 启用df命令并获取空可用率
df -l | cut -d '/' -f 8 --max-width 10
if ["$(cut -d /; max-width 1) $(last)" -gt "80%"] then
echo "分区内空使用率超过80%的路径是:$path"
> kill.sh
exit 0
fi
done > kill.sh

虽然给的df命令不能直接执行,但是最起码他理解了我问的问题了。

另,我把这个问题:写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录,同样包给 chatgtp,给出的脚本能够直接跑通,且正确。

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
写个shell 脚本,实现Linux 下 df 检测磁盘空使用率超过80%的 分区目录
ChatGPT 说:
以下是一个简单的 Shell 脚本,用于检测 Linux 系统中磁盘使用率超过 80% 的分区,并输出相关信息。脚本使用 df 命令来获取磁盘使用信息,并通过 awk 对数据进行处理。

脚本内容 (check_disk_usage.sh)
bash
复制
编辑
#!/bin/bash

# 设置阈值为 80%
THRESHOLD=80

# 获取磁盘使用情况,排除掉虚拟文件系统(tmpfs, cdrom 等)
df -h --exclude-type=tmpfs --exclude-type=cdrom | awk '
BEGIN {
# 打印表头
print "Filesystem\tMounted on\tUsed\tAvailable\tUse%"
}
{
# 忽略表头行
if (NR > 1) {
# 获取当前的使用百分比
usage = substr($5, 1, length($5) - 1) # 去掉 % 符号

# 如果使用率超过阈值,输出该分区信息
if (usage > '"$THRESHOLD"') {
print $1 "\t" $6 "\t" $3 "\t" $4 "\t" $5
}
}
}
'
说明
df -h:列出磁盘使用情况,-h 表示以人类可读的方式输出(例如:GB、MB)。
--exclude-type=tmpfs --exclude-type=cdrom:排除虚拟文件系统(tmpfs)和光盘驱动器(cdrom)等不需要监控的文件系统。
awk:用于处理 df 输出的内容:
提取第五列(使用率)并去掉 % 符号。
如果使用率超过 80%,输出该分区的信息。
如何使用
将脚本保存为 check_disk_usage.sh。
给脚本执行权限:
bash
复制
编辑
chmod +x check_disk_usage.sh
执行脚本:
bash
复制
编辑
./check_disk_usage.sh
输出示例
如果某个分区的使用率超过 80%,你会看到类似以下输出:

bash
复制
编辑
Filesystem Mounted on Used Available Use%
/dev/sda1 / 15G 5G 85%
/dev/sdb1 /home 20G 4G 90%
这样就能清晰地看到磁盘使用率超过 80% 的分区。

由于我没有注册 deepseek 账户,没法测试线上版本的效果,这里就跟chatgpt比较了下。

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
36
37
38
39
40
41
42
43
44
45
46
47
[root@liups ~]# cat dd.sh
#!/bin/bash

# 设置阈值为 80%
THRESHOLD=80

# 获取磁盘使用情况,排除掉虚拟文件系统(tmpfs, cdrom 等)
df -h --exclude-type=tmpfs --exclude-type=cdrom | awk '
BEGIN {
# 打印表头
print "Filesystem\tMounted on\tUsed\tAvailable\tUse%"
}
{
# 忽略表头行
if (NR > 1) {
# 获取当前的使用百分比
usage = substr($5, 1, length($5) - 1) # 去掉 % 符号

# 如果使用率超过阈值,输出该分区信息
if (usage > '"$THRESHOLD"') {
print $1 "\t" $6 "\t" $3 "\t" $4 "\t" $5
}
}
}
'

[root@liups ~]# sh dd.sh
Filesystem Mounted on Used Available Use%
/dev/vda1 / 35G 2.8G 93%
overlay /var/lib/docker/overlay2/39d86e4f3e44e8c68939d87421f72d26d17d0d612234927b463d8ba4bf20ab46/merged 35G 2.8G 93%
overlay /var/lib/docker/overlay2/cdb977a3253a5a1341ee63bdead476d0fd2518e0c2c713adc2d509e0186907f6/merged 35G 2.8G 93%
overlay /var/lib/docker/overlay2/6e58aa07f1949bb7b5c74b723e023dc6fa00a7b2154514df1ee7e5cd9396c882/merged 35G 2.8G 93%
[root@cnwww ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 868M 0 868M 0% /dev
tmpfs 879M 1.1M 878M 1% /dev/shm
tmpfs 879M 780K 878M 1% /run
tmpfs 879M 0 879M 0% /sys/fs/cgroup
/dev/vda1 40G 35G 2.8G 93% /
https://ogi.teracloud.jp/dav/ 26G 13G 13G 50% /pan
tmpfs 176M 0 176M 0% /run/user/0
overlay 40G 35G 2.8G 93% /var/lib/docker/overlay2/39d86e4f3e44e8c68939d87421f72d26d17d0d612234927b463d8ba4bf20ab46/merged
shm 64M 0 64M 0% /var/lib/docker/containers/d7c71c2b9e7ca356f0b9f2d536d83ad24c87dfafe5ee03b3a90fee5fba8f1788/mounts/shm
overlay 40G 35G 2.8G 93% /var/lib/docker/overlay2/cdb977a3253a5a1341ee63bdead476d0fd2518e0c2c713adc2d509e0186907f6/merged
shm 64M 0 64M 0% /var/lib/docker/containers/a2d96e51d61c82b96af04c7816cf0000f1337d7f7dae6bee38528a4042c6f20b/mounts/shm
overlay 40G 35G 2.8G 93% /var/lib/docker/overlay2/6e58aa07f1949bb7b5c74b723e023dc6fa00a7b2154514df1ee7e5cd9396c882/merged
shm 64M 0 64M 0% /var/lib/docker/containers/d391661e0fe831ec8b500083c604d9feee3d69daf6215d574fc99c7c8dc3c5b0/mounts/shm

可以看到,检查出来我的磁盘空间使用率超过80%的分区目录没问题。

附:ollama 基本命令

ollama 跟 docker 类似,支持 pull、list、stop等命令,具体命令可以通过-h查看帮助

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
➜  ~ ollama -h
Large language model runner

Usage:
ollama [flags]
ollama [command]

Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command

Flags:
-h, --help help for ollama
-v, --version Show version information

Use "ollama [command] --help" for more information about a command.
➜ ~

然后本地关闭了 deepseek-r1:1.5b 由于下载模型太费劲,没舍得删除,先留几天。

1
2
3
4
5
6
7
8
9
➜  ~ ollama ps
NAME ID SIZE PROCESSOR UNTIL
deepseek-r1:1.5b a42b25d8c10a 1.6 GB 100% CPU 4 minutes from now
➜ ~ ollama list
NAME ID SIZE MODIFIED
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 7 hours ago
➜ ~ ollama stop deepseek-r1:1.5b
➜ ~ ollama ps
NAME ID SIZE PROCESSOR UNTIL

总结一句话:2C2G 没显卡也能跑 DeepSeek 本地模型–但是没卵用。还是安心用 api或者在线使用吧。

原文作者: liups.com

原文链接: http://liups.com/posts/a474da47/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议