คำตอบต่อไปนี้ถูกค้นพบโดยการตรวจสอบคำตอบก่อนหน้าและข้อมูลในคำถามนี้ที่นี่และจะไม่ถูกค้นพบหากไม่มีพวกเขา ขอชื่นชมพวกเขา
ในระบบ linuxmint ของฉัน (และฉันจะถือว่าเป็นระบบที่ใช้ Ubuntu ส่วนใหญ่และอาจเป็นเดเบียนด้วย) มี 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% / run / lock
ไม่มี tmpfs 15920584 848 15919736 1% / run / shm
ไม่มี tmpfs 102400 12 102388 1% / run / user
/ 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
ตัวเลือกในการสร้างไฟล์ชั่วคราวและไดเรกทอรีในระบบ tempfiles นี้ซึ่งเป็นการสร้าง tempfiles ใน RAM
ทำตามคำแนะนำที่นี่ฉันสร้างไดเรกทอรีชั่วคราวก่อนแล้วสร้างไฟล์ชั่วคราวของฉันในที่:
mydir=$(mktemp -dt "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
เพื่อสร้างไดเรกทอรีชั่วคราว/run/user/1000/bash.w42BYxbG/
แล้ว
myfile=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=$mydir)
เพื่อสร้าง tempfile ในนั้น
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
ตามลำดับ