Следующий ответ был обнаружен путем изучения предыдущих ответов и информации в этом вопросе здесь, и не было бы найдено без них. Слава им.
В моей системе 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% / пробег / шм
нет tmpfs 102400 12 102388 1% / прогон / пользователь
/ dev / sdb3 ext4 100861352 90755700 4959136 95% / mnt / data
В разделе /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 -u
см. 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
опцией для создания временных файлов и каталогов в этой системе временных файлов, создавая тем самым временные файлы в оперативной памяти.
Следуя приведенному здесь совету, я сначала создаю временный каталог, а затем создаю свои временные файлы в нем:
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
соответственно.