Di mana direktori sementara di Linux?

63

Apakah Linux memiliki direktori sementara standar untuk penggunaan umum, seperti C:\Tempfolder Windows ? Jika demikian, di mana lokasinya? Saya menemukan pertanyaan SO tentang menemukan tmpdirektori secara terprogram , tetapi saya ingin mengatur lokasi temp di file konfigurasi XML sebelumnya.

Pops
sumber
1
Saya tahu ini sepertinya pertanyaan yang sangat mudah, tetapi saya tidak dapat menemukan jawaban yang jelas dan sederhana melalui pencarian. Banyak hasil yang saya dapatkan adalah untuk direktori temp / file khusus-program. Saya memang melihat banyak referensi /tmp, tetapi mereka ambigu tentang apakah itu standar untuk Linux atau hanya konvensi umum.
Pops
5
Windows C:\Tempjelas bukan standar. Windows 95 sudah %TEMP%menunjuk ke C:\WINDOWS\Temp.
grawity

Jawaban:

91

The Filesystem Hierarchy Standard versi 3.0 mengatakan:

/ tmp: File sementara

The /tmpdirektori harus dibuat tersedia untuk program yang membutuhkan file-file sementara.

Program tidak boleh berasumsi bahwa file atau direktori apa /tmppun disimpan di antara pemanggilan program.

Alasan

Standar IEEE POSIX.1-2008 mencantumkan persyaratan yang mirip dengan bagian di atas. Meskipun data yang disimpan dalam /tmpdapat dihapus dengan cara spesifik situs, disarankan agar file dan direktori yang berada di /tmpdihapus setiap kali sistem di-boot.

FHS menambahkan rekomendasi ini berdasarkan preseden historis dan praktik umum, tetapi tidak menjadikannya persyaratan karena administrasi sistem tidak berada dalam ruang lingkup standar ini.

/ var / tmp: File sementara disimpan di antara reboot sistem

The /var/tmpdirektori dibuat tersedia untuk program yang membutuhkan file-file sementara atau direktori yang diawetkan antara reboot sistem. Oleh karena itu, data yang disimpan dalam /var/tmplebih persisten daripada data dalam /tmp.

File dan direktori yang berada di /var/tmpdalamnya tidak boleh dihapus ketika sistem di-boot. Meskipun data yang disimpan dalam /var/tmpbiasanya dihapus dengan cara spesifik situs, direkomendasikan bahwa penghapusan terjadi pada interval yang lebih jarang daripada /tmp.

Juga The Open Group Base Spesifikasi Issue 7, Variabel Lingkungan menyebutkan sebagai berikut:

TMPDIR Variabel ini akan mewakili pathname dari direktori yang tersedia untuk program yang membutuhkan tempat untuk membuat file sementara.

Cristian Ciupitu
sumber
Sulit untuk berdebat dengan standar. Terima kasih!
Pops
11

Ini adalah pertanyaan lama sehingga hari ini ada opsi lain yang tersedia. Distribusi Linux yang mengandalkan systemd(yang 90% darinya) sekarang dapat menggunakan $XDG_RUNTIME_DIRdirektori ( Spesifikasi Direktori Dasar XDG ) untuk menyimpan jenis file sementara tertentu. Umumnya terletak di Jl /run/user/$uid. Ini adalah direktori per pengguna dengan 700izin yang memberikan keamanan yang lebih baik. Ini adalah tmpfsmount yang memberikan kinerja. Kelemahannya tmpfsadalah bahwa ia hanya boleh digunakan untuk menyimpan file dan soket kecil.

Saya melihatnya sebagai pernikahan /tmpdan /var/run.

oᴉɹǝɥɔ
sumber
Tentu saja teknologi telah meningkat sejak 5 tahun
lalu
10

Ya / tmp untuk penggunaan umum. Lihat di sini dan di sini Pada Filesystem Hierarchy Standard.

/ tmp / File sementara (lihat juga / var / tmp). Seringkali tidak disimpan di antara reboot sistem.

Dengan beberapa detail lainnya tercantum dalam PDF.

Serigala tua
sumber
2

Anda tidak dapat memilih nama direktori sementara tunggal sebelumnya yang akan berfungsi untuk sistem Linux apa pun. Bahkan, Anda juga tidak dapat melakukannya di Windows. Menurut artikel Wikipedia tentang folder sementara , direktori sementara pada Windows ditentukan oleh variabel lingkungan TEMP. Jika Anda hanya menggunakan c:\Tempsebagai direktori sementara pada sistem Windows yang mengatur TEMP ke sesuatu yang lain, maka setiap program yang menggunakan file XML Anda untuk memilih direktori sementara akan gagal.

Singkatnya, direktori sementara sistem ditentukan oleh lingkungan pada semua sistem operasi modern yang saya ketahui, termasuk Windows dan sistem mirip UNIX. Menetapkan jalur statis tunggal sebagai direktori sementara Anda hanya akan berfungsi selama standarnya belum diubah.

Lagi pula, direktori sementara standar dalam sistem Linux tipikal adalah /tmp. Ini setara dengan C:\Tempdalam arti bahwa itu hanya direktori sementara default, bukan universal. Bahkan jika /tmptersedia, jika pengguna (atau sistem) telah menetapkan variabel lingkungan TEMP, nilai variabel itu harus digunakan sebagai gantinya.

Anda dapat mencoba memilih direktori sementara relatif terhadap direktori home pengguna, yang dapat Anda buat.

Ryan Thompson
sumber
Dalam kasus saya, saya pikir ini asumsi yang aman bahwa default masih ada, tetapi ini jelas baik untuk diingat.
Pops
Beberapa program seperti bash, gcc, inkscape atau lynx menggunakan TMPDIRvariabel lingkungan.
Cristian Ciupitu
@Ryan, Mengapa /tmpmemimpin variabel temp?
Pacerier
0

Pertanyaan awal adalah: Apakah Linux memiliki direktori sementara standar. Jika demikian, di mana lokasinya? Folder tmp ditemukan di: Sistem File / tmp & Sistem File / var / tmp Konten / tmp dapat dihapus - jika Anda tahu file / folder mana yang diperlukan / tidak diperlukan oleh berbagai aplikasi pada "sesuai kebutuhan" dasar. File yang tidak diminta biasanya adalah yang diunduh oleh aplikasi untuk memfasilitasi aplikasi itu sendiri pada titik itu saja - karena itu tidak diperlukan lebih lanjut setelah aplikasi dilakukan. Folder / var / tmp tidak boleh disentuh sama sekali.

FranklynA
sumber
1
Jawaban ini tidak memberikan informasi lebih banyak daripada jawaban yang diterima, sehingga sangat tidak berguna.
zx485