A seguinte resposta foi descoberta investigando as respostas anteriores e as informações nesta questão aqui e não teria sido encontrado sem eles. Cudos para eles.
No meu sistema linuxmint (e eu diria que a maioria dos sistemas baseados no ubuntu e possivelmente baseados no Debian também) existe um tmpfs de propriedade do usuário montado automaticamente em /run/user/1000/
Use df -T
para verificar.
11:41:11 jesse@Limbo:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
udev devtmpfs 15904812 4 15904808 1% /dev
tmpfs tmpfs 3184120 1700 3182420 1% /run
/dev/sdb2 ext4 14248880 11464788 2037240 85% /
none tmpfs 4 0 4 0% /sys/fs/cgroup
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 15920584 848 15919736 1% /run/shm
none tmpfs 102400 12 102388 1% /run/user
/dev/sdb3 ext4 100861352 90755700 4959136 95% /mnt/data
Em /run/user/
existe um diretório para cada usuário normal no 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
Esses diretórios são nomeados de acordo com os IDs de seus respectivos usuários. Podemos obter o ID do usuário com id -u
see man id
para detalhes 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
Podemos então usar o comando mktemp
com a opção --tmpdir
para criar arquivos e diretórios temporários neste sistema de tempfiles, criando assim arquivos temporários na RAM.
Seguindo o conselho fornecido aqui , crio um diretório temporário primeiro e, em seguida, arquivos temporários em que:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
para criar um diretório temporário /run/user/1000/bash.w42BYxbG/
then
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
para criar um arquivo temporário.
Isso facilita a limpeza desses arquivos, pois tudo que eu preciso fazer é rm -r $mydir
.
Por padrão, todos esses arquivos são de propriedade e legíveis apenas pelo usuário que os criou.
Note: The $(basename $0)
portion of the command extracts the name of
the script/process that executed mktemp. If I have a script
/home/jesse/scripts/myScript.sh
then $(basename $0)
returns
myScript.sh
when executed by this script. Thus the above commands would create /run/user/1000/myScript.sh.w42BYxbG/
and /run/user/1000/myScript.sh.w42BYxbG/myScript.sh.BCzSmq06
respectively.