এমকেটেম্প দিয়ে অস্থায়ী ফাইলগুলি কতক্ষণ স্থায়ী হয়?


20

আমি ভাবছিলাম এমকেটেম্প দিয়ে কতক্ষণ টেম্প ফাইল তৈরি হয়েছিল। যে কোনও সময় অদৃশ্য হয়ে যেতে পারে এমন কোনও ফাইলের উপর নির্ভর করা আমার কাছে অবাক লাগে। আমি উবুন্টুতে আছি, যদি এটি গুরুত্বপূর্ণ হয়।

উত্তর:


17

তাই না? থেকে man mktemp:

DESCRIPTION
   Create  a  temporary  file  or directory, safely, and
   print its name.  TEMPLATE must  contain  at  least  3
   consecutive  `X's  in last component.  If TEMPLATE is
   not specified, use tmp.XXXXXXXXXX,  and  --tmpdir  is
   implied.   Files  are  created  u+rw, and directories
   u+rwx, minus umask restrictions.

mktempএকটি অনন্য ফাইলের নাম তৈরি করতে কেবল একটি এলোমেলো স্ট্রিং যুক্ত করুন। কেউ এটিকে স্বয়ংক্রিয়ভাবে সরিয়ে ফেলছে না।


যেহেতু কিছুটা আর্গুমেন্ট বলে মনে হচ্ছে তাই আসুন আরও কিছু বিশদে যাওয়া যাক। mktempএর ম্যান পেইজে লেখা আছে

যদি TEMPLATE নির্দিষ্ট না --tmpdirকরা হয়, ধরে নেওয়া হয়, --tmpdirনির্দিষ্ট না করা থাকলে, /tmpধরে নেওয়া হয়।

এর অর্থ হ'ল কেবল চলমান / tmp ডিরেক্টরিতেmktemp একটি ফাইল তৈরি করবে । হ্যাঁ, কোনও প্যারামিটার ছাড়াই চলমান একটি ফাইল তৈরি করবে যা সিস্টেম-নির্ভর পদ্ধতিতে সমস্ত কিছুর পাশাপাশি সাফ হয়ে যাবে । এই ধরণের ফাইলগুলির জন্য, নীচে ক্রিসের উত্তরে বর্ণিত হিসাবে পরিবর্তনশীলটি গুরুত্বপূর্ণ হবে। অনেক বিতরণের জন্য, ডিফল্ট প্রতিটি বুট সাফ করে দেয় কারণ সেট করা আছে । বেশিরভাগ (সমস্ত না থাকলে) বিতরণগুলিতে, এটি ফাইলে সেট করা আছে :tmp.RANDOM_STRING mktemp/tmp$TMPTIME/tmp$TMPTIME0/etc/default/rcS

$ grep TMPTIME /etc/default/rcS
TMPTIME=0

এখন, আপনি যদি না একটি টেমপ্লেট উল্লেখ, উদাহরণস্বরূপ mktemp fooXXXতারপর নামক একটি ফাইল fooXXXবর্তমান ডিরেক্টরী যেখানে তৈরি হয় XXXতিনটি র্যান্ডম অক্ষর দ্বারা প্রতিস্থাপিত হয়। আপনি বিশেষত এটি না করা বাছাই করা না হলে এই ফাইলটি কখনও মুছে ফেলা হবে না। কেবলমাত্র "অফিসিয়াল" অস্থায়ী ডিরেক্টরিগুলির মধ্যে ফাইলগুলি যেমন /tmpসিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়, এমন কোনও ম্যাজিক বিট নেই যা আপনি সেট করতে পারেন যা একটি অস্থায়ী ফাইল নির্দিষ্ট করে, বাইরের ফাইল /tmpএবং এর লোকগুলি স্বয়ংক্রিয়ভাবে মোছা হয় না।

আপনার মূল প্রশ্নের উত্তর দেওয়ার জন্য অবশ্যই অদৃশ্য হয়ে যায় যে কোনও ফাইলটি অদৃশ্য হয়ে যেতে পারে তার উপর নির্ভর করে, সেই কারণেই লোকেরা টিএমপি ফাইলের উপর নির্ভর করে না, তারা অস্থায়ীভাবে ডেটা ধরে রাখতে তৈরি করা হয়েছিল এবং আমরা তখন সেগুলি ভুলে যেতে পারি। একটি অবিচ্ছিন্ন, এলোমেলোভাবে নামকরণ করা ফাইল তৈরির অনেকগুলি উপায় রয়েছে। উদাহরণ স্বরূপ:

echo "foo" > $RANDOM.txt
echo "foo" > `mktemp fooXXX.txt`
echo "foo" > $$.txt

2
এটি আমার প্রশ্নের উত্তর দেয় না। এটি বলে যে এটি একটি "অস্থায়ী" ফাইল তৈরি করে এবং এটি কত দিন স্থায়ী হয় সে সম্পর্কে কোনও তথ্য দেয় না। তাহলে কি চিরকাল থাকে? Tmp ডিরেক্টরিটি কি সিস্টেম বুট হয়ে যায়?
এমওয়াইভি

@ মাকসিম আপডেট উত্তর দেখুন। এছাড়াও, আপনার প্রশ্নটি কখন tmpডিরেক্টরিটি ক্লিয়ার করা হয় তা জিজ্ঞাসা করে না তবে যখন তৈরি ফাইলগুলি mktempমোছা হয়। যেমন আপনি দেখতে পাচ্ছেন, দু'জনের অবশ্যই সম্পর্কিত নয় :)।
টেরডন

6

দয়া করে মনে রাখবেন যে টেম্প ফাইলগুলি সিস্টেম বুটআপ চলাকালীন বা টিএমপিটাইম অনুযায়ী মুছে ফেলা হতে পারে। আপনি কি আছে দয়া করে /etc/cron.daily/tmpwatch

/var/tmp/অন্যদিকে সাধারণত অনাক্রম্যতা থাকে tmpwatch

টেম্প ফাইলগুলি (সাধারণত) স্বল্প সময়ের জন্য তৈরি করা হয়। তাদের টেম্পের নাম রয়েছে তাই টাইমিং আক্রমণ চালানো সহজ নয় এবং সাধারণত প্রোগ্রামের প্রয়োজন হয় না তখন তারা মুছে ফেলা হয়। সাধারণত আপনার স্ক্রিপ্টটি খুব অল্প সময়ের জন্য এই ফাইলটি রাখবে, সাধারণত কিছু পাঠ্য বা অন্য ফাইলগুলি প্রক্রিয়াকরণ করে এবং এটি প্রয়োজনীয় না হওয়ার সাথে সাথে এটি সরিয়ে ফেলা হবে। যদি আপনার স্ক্রিপ্টটি ক্র্যাশ হয়ে যায় তবে আপনি / টিএমপি ফোল্ডার হাউসকিপিংয়ের পদ্ধতিগুলিও পড়ে থাকতে পারেন (যদি আপনি সেগুলি রাখার সিদ্ধান্ত নিয়ে থাকেন তবে)।

আপনাকে টেম্প ফাইল তৈরি করতে হবে না /tmp


যে mktempকোনও ডিরেক্টরিতে চালানো যেতে পারে এবং কেবল একটি স্বেচ্ছাসেবী ফাইলের নাম উত্পন্ন হয় তা দেখে, এটির সাথে যা কিছু করার আছে তা আমি দেখতে পাচ্ছি না tmpwatch
টেরডন

1
ডিফল্টরূপে mktempফাইল তৈরি করে /tmp/
ক্রিস

আপনি যদি নমুনা না দেন তবেই আমার আপডেট হওয়া উত্তরটি দেখুন।
টেরডন

1

টেম্প ফাইলগুলি তাদের নিজের থেকে দূরে যায় না। এগুলিকে টেম্প ফাইল বলা হয় কেবল আপনার স্ক্রিপ্ট বা সেশনে বা যেখানেই আপনি এগুলি তৈরি করছেন, আপনি যখন কাজটি সম্পন্ন করেন তখন সেগুলি মুছবেন বলে আশা করা হচ্ছে। বা এগুলি যদি আপনার জিনিস থাকে তবে তাদের চারপাশে রেখে দিন। mktemp কেবলমাত্র এমন একটি ফাইল নিয়ে আসার অনুমতি দেয় যা কিছু অনন্যরূপে নামকরণ করা হয় যাতে এটি কিছু বিদ্যমান ফাইল ওভাররাইট না করে।


কিছু সিস্টেম একটি ব্যবহার করবেন না TMPTIME?
ক্ষয়

@ হ্যাঁ তবে কেবল ক্লিয়ার /tmpবা অন্যান্য টিএমপি ডিরেক্টরিগুলি মুছে ফেলুন । এটি কেবল এলোমেলোভাবে ব্যবহারকারী দ্বারা নির্মিত ফাইলগুলি মুছবে না।
টেরডন

ডিফল্টরূপে mktempফাইল তৈরি করে /tmp/
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.