Jawaban berikut ditemukan dengan menyelidiki jawaban sebelumnya dan info dalam pertanyaan ini di sini dan tidak akan ditemukan tanpa jawaban itu. Cudos kepada mereka.
Pada sistem linuxmint saya (dan saya akan menganggap sebagian besar sistem berbasis ubuntu dan mungkin berbasis debian juga) ada tmpfs milik pengguna yang dipasang secara otomatis pada /run/user/1000/
Gunakan df -T
untuk memeriksa.
11:41:11 jesse @ Limbo: ~ $ df -T
Sistem File Tipe 1K-blok Digunakan Tersedia Gunakan% Dipasang di
udev devtmpfs 15904812 4 15904808 1% / dev
tmpfs tmpfs 3184120 1700 3182420 1% / jalankan
/ dev / sdb2 ext4 14248880 11464788 2037240 85% /
tidak ada tmpfs 4 0 4 0% / sys / fs / cgroup
tidak ada tmpfs 5120 0 5120 0% / run / lock
tidak ada tmpfs 15920584 848 15919736 1% / run / shm
tidak ada tmpfs 102400 12 102388 1% / run / pengguna
/ dev / sdb3 ext4 100861352 90755700 4959136 95% / mnt / data
Di bawah ini /run/user/
ada direktori untuk setiap pengguna normal pada sistem
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
Direktori ini dinamai sesuai id pengguna masing-masing. Kita bisa mendapatkan id pengguna dengan id -u
melihat man id
detail pada perintah ini.
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
Kita kemudian dapat menggunakan mktemp
perintah dengan --tmpdir
opsi untuk membuat file temp dan direktori dalam sistem tempfiles ini sehingga membuat tempfile dalam RAM.
Mengikuti saran yang diberikan di sini saya membuat direktori temp terlebih dahulu dan kemudian membuat file temp saya di dalamnya:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
untuk membuat direktori temp /run/user/1000/bash.w42BYxbG/
lalu
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
untuk membuat tempfile di dalamnya.
Ini membuat membersihkan file ini mudah karena yang harus saya lakukan adalah rm -r $mydir
.
Secara default semua file ini dimiliki dan hanya dapat dibaca oleh pengguna yang membuatnya.
Catatan: $(basename $0)
Bagian dari perintah mengekstrak nama skrip / proses yang mengeksekusi mktemp. Jika saya memiliki skrip
/home/jesse/scripts/myScript.sh
maka $(basename $0)
kembali
myScript.sh
ketika dijalankan oleh skrip ini. Dengan demikian perintah di atas akan membuat /run/user/1000/myScript.sh.w42BYxbG/
dan /run/user/1000/myScript.sh.w42BYxbG/myScript.sh.BCzSmq06
masing - masing.