La siguiente respuesta fue descubierta al investigar las respuestas anteriores y la información en esta pregunta aquí y no se habría encontrado sin ellas. Cudos a ellos.
En mi sistema linuxmint (y supongo que la mayoría de los sistemas basados en ubuntu y posiblemente también basados en debian) hay un tmpfs propiedad del usuario montado automáticamente en /run/user/1000/
Use df -T
para verificar.
11:41:11 jesse @ Limbo: ~ $ df -T
Tipo de sistema de archivos 1K-blocks Usado Disponible Uso% Montado en
udev devtmpfs 15904812 4 15904808 1% / dev
tmpfs tmpfs 3184120 1700 3182420 1% / carrera
/ dev / sdb2 ext4 14248880 11464788 2037240 85% /
ninguno tmpfs 4 0 4 0% / sys / fs / cgroup
ninguno tmpfs 5120 0 5120 0% / carrera / bloqueo
ninguno tmpfs 15920584 848 15919736 1% / run / shm
ninguno tmpfs 102400 12 102388 1% / ejecución / usuario
/ dev / sdb3 ext4 100861352 90755700 4959136 95% / mnt / data
Debajo /run/user/
hay un directorio para cada usuario normal en el sistema
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
Estos directorios llevan el nombre de sus respectivos identificadores de usuario. Podemos obtener la identificación de usuario con id -u
ver man id
para obtener detalles sobre este comando.
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
Luego podemos usar el mktemp
comando con la --tmpdir
opción de crear archivos temporales y directorios en este sistema de archivos temporales, creando así archivos temporales en la RAM.
Siguiendo los consejos dados aquí , primero creo un directorio temporal y luego creo mis archivos temporales en eso:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
para crear un directorio temporal /run/user/1000/bash.w42BYxbG/
entonces
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
para crear un archivo temporal en él.
Esto facilita la limpieza de estos archivos, ya que todo lo que tengo que hacer es rm -r $mydir
.
Por defecto, todos estos archivos son propiedad y solo los puede leer el usuario que los creó.
Nota: La $(basename $0)
parte del comando extrae el nombre del script / proceso que ejecutó mktemp. Si tengo un script,
/home/jesse/scripts/myScript.sh
luego $(basename $0)
regresa
myScript.sh
cuando lo ejecuta este script. Por lo tanto, los comandos anteriores crearían /run/user/1000/myScript.sh.w42BYxbG/
y /run/user/1000/myScript.sh.w42BYxbG/myScript.sh.BCzSmq06
respectivamente.