Câu trả lời sau đây được phát hiện bằng cách điều tra các câu trả lời trước đó và thông tin trong câu hỏi này ở đây và sẽ không được tìm thấy nếu không có chúng. Cudos cho họ.
Trên hệ thống linuxmint của tôi (và tôi sẽ giả sử hầu hết các hệ thống dựa trên Ubuntu và có thể dựa trên debian nữa) có một tmpfs do người dùng sở hữu được gắn tự động vào /run/user/1000/
Sử dụng df -T
để kiểm tra.
11:41:11 jlie @ Limbo: ~ $ df -T
Loại hệ thống tập tin Loại 1K được sử dụng Có sẵn Sử dụng% Được gắn trên
udev devtmpfs 15904812 4 15904808 1% / dev
tmpfs tmpfs 3184120 1700 3182420 1% / lần chạy
/ dev / sdb2 ext4 14248880 11464788 2037240 85% /
không có tmpfs 4 0 4 0% / sys / fs / cgroup
không tmpfs 5120 0 5120 0% / chạy / khóa
không có tmpfs 15920584 848 15919736 1% / lần chạy / shm
không có tmpfs 102400 12 102388 1% / lần chạy / người dùng
/ dev / sdb3 ext4 100861352 90755700 4959136 95% / mnt / dữ liệu
Bên dưới /run/user/
có một thư mục cho mỗi người dùng bình thường trên hệ thống
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
Các thư mục này được đặt tên theo id người dùng tương ứng của họ. Chúng ta có thể lấy id người dùng để id -u
xem man id
chi tiết về lệnh này.
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
Sau đó chúng ta có thể sử dụng mktemp
lệnh với --tmpdir
tùy chọn để tạo các tệp và thư mục tạm thời trong hệ thống tempfiles này, do đó tạo tempfiles trong RAM.
Theo lời khuyên được đưa ra ở đây, trước tiên tôi tạo một thư mục tạm thời và sau đó tạo các tệp tạm thời của mình trong đó:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
để tạo ra một thư mục tạm /run/user/1000/bash.w42BYxbG/
rồi
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
để tạo một tempfile trong đó.
Điều này làm cho việc dọn dẹp các tệp này dễ dàng vì tất cả những gì tôi phải làm là rm -r $mydir
.
Theo mặc định, tất cả các tệp này được sở hữu và chỉ có thể đọc được bởi người dùng đã tạo chúng.
Lưu ý: $(basename $0)
Phần của lệnh trích xuất tên của tập lệnh / tiến trình đã thực hiện mktemp. Nếu tôi có một tập lệnh
/home/jesse/scripts/myScript.sh
thì $(basename $0)
trả về
myScript.sh
khi được thực thi bởi tập lệnh này. Do đó, các lệnh trên sẽ tạo /run/user/1000/myScript.sh.w42BYxbG/
và /run/user/1000/myScript.sh.w42BYxbG/myScript.sh.BCzSmq06
tương ứng.