GaGa's Blog

One GaGa, One World !

env

  • docker-ce/docker-compsoe
  • nvidia-container-toolkit
  • 兼容 RockyLinux / CentOS Stream / RHEL9 系列/alinuxlinux3

1.脚本install_nvidia_container_toolkit.sh

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
#!/usr/bin/env bash
# ============================================================
# NVIDIA Container Toolkit 安装脚本 (USTC镜像源)
# 适用于 RockyLinux / CentOS Stream / RHEL / Fedora
# 作者: 🔥焰
# ============================================================

set -e

echo "[INFO] 开始安装 nvidia-container-toolkit ..."

# 检查是否为root
if [ "$EUID" -ne 0 ]; then
echo "[ERROR] 请使用 root 权限执行此脚本!"
exit 1
fi

# 步骤 1: 配置 USTC 镜像源 repo
echo "[INFO] 配置 USTC 镜像源..."
curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sed 's#nvidia.github.io/libnvidia-container/stable/#mirrors.ustc.edu.cn/libnvidia-container/stable/#g' | \
sed 's#nvidia.github.io/libnvidia-container/experimental/#mirrors.ustc.edu.cn/libnvidia-container/experimental/#g' | \
sed 's#https://nvidia.github.io/libnvidia-container/gpgkey#https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey#g' \
> /etc/yum.repos.d/nvidia-container-toolkit.repo

# 步骤 2: 刷新缓存并安装
echo "[INFO] 更新缓存并安装..."
dnf makecache -y
dnf install -y nvidia-container-toolkit

# 步骤 3: 配置 Docker Runtime
echo "[INFO] 配置 Docker runtime..."
nvidia-ctk runtime configure --runtime=docker

# 步骤 4: 重启 Docker 服务
echo "[INFO] 重启 Docker 服务..."
systemctl daemon-reload
systemctl restart docker

# 步骤 5: 验证安装
echo "[INFO] 验证 nvidia-container-toolkit 安装..."
if command -v nvidia-container-runtime &>/dev/null; then
echo "[OK] nvidia-container-runtime 已安装: $(nvidia-container-runtime --version 2>/dev/null | head -n1)"
else
echo "[WARN] 未检测到 nvidia-container-runtime,请检查安装日志。"
fi

echo "[DONE] NVIDIA Container Toolkit 安装完成 🎉"
Read more »

一、归档操作的目标

把主表(业务表)中 历史数据(如 3 个月前的数据)迁移到一个 历史表(history 表)中,以:

  • 降低主表体积、提升查询性能
  • 避免数据删除带来的锁表或性能问题
  • 保留历史数据以供审计或分析

Read more »

1.inotify-tools 简介

  • 背景:Linux 内核提供了 inotify 机制,可以在文件或目录发生变化时通知用户空间进程(代替低效的轮询)。

  • inotify-tools:就是一个对 inotify 的封装,提供了命令行工具,主要有两个:

    • inotifywait:阻塞等待并打印文件系统事件,适合写脚本。
    • inotifywatch:统计某个路径在一段时间内发生的事件次数。
  • 典型应用场景:

    • 配置文件变更 → 自动重载服务
    • 日志文件更新 → 实时分析或告警
    • 代码文件变动 → 自动编译/部署(热加载)
    • 批量文件导入监控(例如新文件进目录就处理)

Read more »

利用 inotify-tools 实时监控文件变化,再配合 rsync 做目录/文件的实时同步,常用于多机文件同步、热备份、甚至网站内容分发。


实现思路

  1. inotify-tools 提供命令行工具 inotifywait、inotifywatch:

    • inotifywait:实时监听文件事件,阻塞输出。
    • inotifywatch:统计事件次数。
  2. 核心逻辑

    • 在源服务器上用 inotifywait -mrq 监听目录。
    • 当有新增/修改/删除事件时,触发 rsync 将变化同步到目标服务器。
    • rsync 建议配合 -az --delete --exclude 参数,支持压缩、增量和删除同步。
  3. 常见使用场景

    • Web 服务器多机内容一致性(例如上传的图片、静态资源)。
    • 应用日志/数据文件实时同步到备份机。
    • 简单的分布式文件推送。
Read more »

日志

env

  • macbook pro 2019 intel os: Monterey
  • pyenv
gaga@GaGa ~ % pyenv install 3.13.7 
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.13.7.tar.xz...
-> https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tar.xz
Installing Python-3.13.7...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import lzma
  File "/Users/gaga/.pyenv/versions/3.13.7/lib/python3.13/lzma.py", line 27, in <module>
    from _lzma import *
ModuleNotFoundError: No module named '_lzma'
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
Installed Python-3.13.7 to /Users/gaga/.pyenv/versions/3.13.7
Read more »

要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv,但是对于这种需要在多个不同版本之间切换的 case,就只能使用 pyenv 了。

env

  • macbook pro 2019(monterey) intel
  • pyenv

1.安装

Read more »

在 Linux 下,history 默认会把命令记录在 当前 shell 会话 和 用户的历史文件(通常是 ~/.bash_history 或 ~/.zsh_history)中。如果你只想清除 特定命令 而不是全部历史。


1.查看历史命令编号

1
history
Read more »

人们在讨论数字化转型和现代应用程序开发时,其中经常出现的术语之一是云原生(Cloud-Native)。但是,云原生究竟意味着什么呢?


Michael Dell 曾经说过:“云不是一个地方,而是一种做 IT 的方式。 ”(the cloud isn’t a place, it’s a way of doing IT)。他说得对,云原生也是如此。

云原生是一种构建和运行应用程序的方法,利用了云计算交付模型的优势。云原生是关于如何创建和部署应用程序,而与在何处创建与部署无关。它适用于公有云和私有云。

Read more »

Mac 版 Office 2016(Microsoft Office 2016 for Mac)


1.版本背景

项目 内容
正式发布 2015 年 7 月 9 日
主要组件 Word、Excel、PowerPoint、Outlook、OneNote
架构变化 首次全面使用 64 位架构(后续更新中)
支持平台 macOS Yosemite(10.10)及以上,推荐 10.12~10.15
授权形式 零售版(Office 365 订阅)与 VL(批量授权版)
最后支持更新 2020 年 10 月(停止主流支持)
Read more »

云厂商的“抢占式实例”(或称为“竞价实例”)通常是指在云平台中,按照实时竞价方式提供的实例。这类实例通常是云服务商在数据中心的空闲计算资源上提供的按需、价格相对较低的计算实例。因为其基于资源剩余和竞价模型,使用时存在一定的不确定性和风险,云厂商可能随时回收这些资源。

抢占式实例特点

  1. 低成本:相比标准实例,抢占式实例通常价格更便宜,适合成本敏感型的应用。

  2. 资源随时可能被回收:抢占式实例的主要特点是,云服务商可以根据资源需求情况随时回收这些实例。因此,它们适合运行那些不需要持续稳定运行的负载。

  3. 短暂性:这些实例通常有最大使用时间限制,且云厂商会在资源紧张时优先回收它们。

  4. 适用场景:

    • 计算密集型任务(如大规模数据处理、数据分析、批量计算等)
    • 高可扩展性的微服务应用
    • 在任务完成后可以容忍实例中断的工作负载
    • 分布式系统中的部分任务,如容错机制较强的系统(例如 Hadoop、Spark)
  5. 实例恢复策略:部分云服务商提供抢占式实例的恢复策略(如阿里云的“弹性伸缩”),当实例被回收时,可以自动启动新的抢占实例或其他普通实例来代替。

阿里云竞价实例,竞价过程
4752d39945f8d177fe01875995e8c7a7.png

Read more »

{{.deployPath}} 看起来像 Go 的 text/template 或 html/template 模板语法。在模板里,{{.deployPath}} 表示取传入模板的数据结构中的 deployPath 字段或 key。

1. 用 struct 传值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import (
"os"
"text/template"
)

type Data struct {
DeployPath string
}

func main() {
tpl := `部署路径是: {{.DeployPath}}`
data := Data{DeployPath: "/opt/app"}

t := template.Must(template.New("test").Parse(tpl))
t.Execute(os.Stdout, data)
}

输出:

Read more »
0%