以下的答案被调查以前的答案,并在这个问题上的信息发现,这里并不会被发现,没有他们。对他们表示敬意。
在我的linuxmint系统上(我会假设大多数基于ubuntu的系统,也可能基于debian),有一个用户拥有的tmpfs自动挂载在 /run/user/1000/
使用df -T
检查。
11:41:11 jesse @ Limbo:〜$ df -T
文件系统类型1K块已使用可用用法已安装%
udev devtmpfs 15904812 4 15904808 1%/ dev
tmpfs tmpfs 3184120 1700 3182420 1%/运行
/ dev / sdb2 ext4 14248880 11464788 2037240 85%/
无tmpfs 4 0 4 0%/ sys / fs / cgroup
无tmpfs 5120 0 5120 0%/运行/锁定
无tmpfs 15920584 848 15919736 1%/ run / shm
无tmpfs 102400 12 102388 1%/运行/用户
/ dev / sdb3 ext4 100861352 90755700 4959136 95%/ mnt /数据
在/run/user/
该目录下,系统上的每个普通用户都有一个目录
12:07:35 jesse@Limbo:~$ ls -l /run/user
total 0
drwx------ 2 root root 40 Aug 7 09:50 0
drwx------ 8 jesse jesse 180 Aug 7 11:38 1000
这些目录以其各自用户的ID命名。我们可以使用id -u
see 获取用户ID,以man id
获取有关此命令的详细信息。
12:07:43 jesse@Limbo:~$ ls -l /run/user/$(id -u)
total 0
drwx------ 2 jesse jesse 60 Aug 7 09:50 dconf
dr-x------ 2 jesse jesse 0 Aug 7 09:50 gvfs
drwx------ 2 jesse jesse 80 Aug 7 09:50 pulse
lrwxrwxrwx 1 root root 17 Aug 7 09:50 X11-display -> /tmp/.X11-unix/X0
然后,我们可以使用mktemp
带有该--tmpdir
选项的命令在此tempfilesystem中创建临时文件和目录,从而在RAM中创建临时文件。
按照此处给出的建议,我首先创建一个临时目录,然后在其中创建临时文件:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
创建一个临时目录,/run/user/1000/bash.w42BYxbG/
然后
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
在其中创建一个临时文件。
这使清理这些文件变得容易,因为我要做的就是rm -r $mydir
。
默认情况下,所有这些文件均由创建它们的用户拥有并可读。
注意:该$(basename $0)
命令的部分提取执行mktemp的脚本/进程的名称。如果我有一个脚本,
/home/jesse/scripts/myScript.sh
则在由该脚本执行时$(basename $0)
返回
myScript.sh
。因此,上述命令将分别创建/run/user/1000/myScript.sh.w42BYxbG/
和/run/user/1000/myScript.sh.w42BYxbG/myScript.sh.BCzSmq06
。