当前位置: 首页 > news >正文

Linux中为某个进程临时指定tmp目录

起因:

在linux下编译k8s,由于编译的中间文件太多而系统的/tmp分区设置太小,导致编译失败,但自己不想或不能更改/tmp分区大小,所以只能通过其他方式解决。

现象:

tmp分区大小:

解决方法:

1、为进程设置一个临时的环境变量TMPDIR指定/tmp的真实路径:

TMPDIR=/new_tmp/to/mypath ./myproc

2、或者设置导出的环境变量TMPDIR,使用之后再删除。

export TMPDIR=/new_tmp/to/mypath

使用过后删除:

unset TMPDIR

举例:

原理分析:

1、golang编译链接工具链临时工作目录分析(以 go1.23.3 linux/amd64 为例):

测试用例:eg.go

package mainimport ("fmt"
)func main() {fmt.Println("eg")
}

不带TMPDIR环境变量的编译链接测试:

带TMPDIR环境变量的编译链接测试:

原理是golang编译链接工具链创建work目录的时候最终调用的golang的tempDir函数:

func tempDir() string {dir := Getenv("TMPDIR")if dir == "" {if runtime.GOOS == "android" {dir = "/data/local/tmp"} else {dir = "/tmp"}}return dir
}

2、shell使用临时目录的原理分析:

shell如果想让TMPDIR环境变量生效,需要使用系统命令mktemp,如果直接操作的/tmp目录是不会生效的。

直接操作/tmp目录举例:

使用系统命令mktemp举例:

借助trap信号处理命令完整的使用mktemp的例子:

shell文件tmpfile.sh:

#!/bin/bashtrap 'rm -f "$TMPFILE"' EXIT
TMPFILE=$(mktemp) || exit 1
date > $TMPFILE
sleep 10
ls -lh $TMPFILE
cat $TMPFILE
date

这样进程退出时可以自动删除$TMPFILE,注意别误删。

--end--

http://www.xdnf.cn/news/313417.html

相关文章:

  • Go语言——string、数组、切片以及map
  • 今年我国已发生三级以上地震318次
  • 从创业踩雷到依法解债:湖北理元理律师事务所的危机拆解逻辑
  • 继电器负载知识
  • 小刚说C语言刷题—1044 -找出最经济型的包装箱型号
  • win11 怎样把D盘空间分给C盘一点
  • day18-API(常见API,对象克隆)
  • 将nginx设置成自启动,防止每次开机后都要自己手动启动
  • nginx服务--基础
  • C语言数组和函数的实践———扫雷游戏
  • 调用DeepSeek的API
  • 文献综述怎么写?高效阅读、智能整理,告别文献焦虑!
  • 感知器准则感知器神经元模型——等价
  • 电动双向金属硬密封蝶阀:四大领域流体控制的终极解决方案 -耀圣
  • Vue 项目中使用 EJS 模板动态注入环境变量
  • Vue3.5 企业级管理系统实战(十七):角色管理
  • String、StringBuilder、StringBuffer的区别
  • 0506--01-DA
  • TDengine 车联网案例
  • 2025.5.6总结
  • python setup.py install --user和pip install -e .的区别
  • HHsuite3 的 HHblits 和 HHsearch比较
  • android设备运行bcc程序报错
  • 5.6刷题并查集
  • Python-map从基础到进阶
  • SpringBoot Starter简介-笔记
  • https://juejin.cn/editor/drafts/7262346366541070395
  • RNN 与 CNN:深度学习中的两大经典模型技术解析
  • [HOT 100] 2646. 最小化旅行的价格总和
  • C语言| 递归实现斐波那契数列