/ টেম্পের কি গ্যারান্টি আছে?


42

এর /tmpভিতরে থাকা কোনও ফাইলে লেখার আগে আমাকে কি পরীক্ষা করে তৈরি করা দরকার ? ধরে নিন যে কেউ রান করেনি sudo rm -rf /tmpকারণ এটি খুব বিরল ঘটনা


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

1
আপনার নিজের অস্থায়ী দির তৈরি করবেন না এবং পরিষ্কার করার জন্য পরবর্তী পুনরায় বুটের উপর ভরসা করার পরিবর্তে এটি শেষ হয়ে গেলে কেন এটি মুছবেন না?
ডাব্লুগ্রোলাও

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

1
@ WGrolau- এটিকে পরিষ্কার করার জন্য আমি রিবুটগুলিতে নির্ভর করি না। mktempসৌন্দর্য সত্যিই মহান, I'l সম্ভবত ব্যবহার শেষ।
আয়ুশ

7
@jamesqf হ্যাঁ, পুনরায় বুট করার নয় প্রয়োজনীয় পরিষ্কার /tmp। তবে, বিপরীতভাবে এটি করার অনুমতি দেওয়া হয়েছে, এবং সম্ভবত ডাব্লুগ্রোলাও এর থেকে অনেক দূরে এক্সট্রাপোল্ট করেছেন। আমার /tmpএকটি হয় tmpfsর্যাম অনুষ্ঠিত, তাই এটি শাটডাউনে সাফ পেতে নেই। তবুও, এটি কেবল সিস্টেমের বিশদ, যা এফএইচএস দ্বারা নিশ্চিত করা হয় না। সুতরাং, মূল মন্তব্যে বুটগুলির মধ্যে কোনও কিছুর উপস্থিতি বা অনুপস্থিতির উপর নির্ভর করা বোকামি /tmp
আন্ডারস্কোর_

উত্তর:


60

FHS ম্যান্ডেট যে /tmpঅস্তিত্ব, যেমন করে POSIX যাতে আপনি তার সেখানে হচ্ছে নির্ভর করতে পারেন (অনুবর্তী সিস্টেমে অন্তত কিন্তু সত্যিই এটা প্রায় কাছাকাছি উপর ইউনিক্সের মত সিস্টেম উপস্থিত হতে নিশ্চিত করা হয়েছে)। তবে আপনার উচিত নয়: সিস্টেম প্রশাসক বা ব্যবহারকারী অস্থায়ী ফাইলগুলির জন্য অন্যান্য অবস্থানগুলি পছন্দ করতে পারে। দেখুন একাধিক প্ল্যাটফর্মের উপর সঠিক tmp, Dir খোঁজা আরো বিস্তারিত জানার জন্য।


এটি অবশ্যই একটি নকশা ব্যর্থতা। /tmpএকটি নাম। $TMPDIRঅন্য নাম। আপনি যদি /tmpঅস্থায়ী ডিরেক্টরিটির সঠিক নাম হিসাবে গণনা করতে না পারেন তবে আপনি $TMPDIRসঠিক পরিবেশের পরিবর্তনশীলের নাম হিসাবে কেন গণনা করতে পারেন ? আমি কেন এই পরিবর্তনশীলটির $TMPDIRVARনাম পেতে চেক করব না ? ইন্ডিয়ারেশনের একটি স্তর যথেষ্ট এবং এটি ঠিক। এটি প্রকৃত সঞ্চয়স্থান সম্পর্কে কিছুই বলে না, এটি কেবল একটি নাম। /tmp
এমসাল্টারস

@ এসএমএলটাররা এর চেয়ে আরও কিছু বেশি আছে। নেমস্পেসগুলির আগে, $TMPDIRপ্রতিটি ব্যবহারকারীর পৃথক অস্থায়ী ডিরেক্টরি থাকতে পারে, বা এমনকি বিভিন্ন প্রোগ্রামের জন্য বিভিন্ন অস্থায়ী ডিরেক্টরি ব্যবহার করার অনুমতি দেয়; একটি একক এটি সরবরাহ /tmpকরে না (আবার, নামস্থান বা অনুরূপ কিছু ছাড়াই)। আমলে নেওয়ার মতো অনেকগুলি ইতিহাস (বা উত্তরাধিকার )ও রয়েছে।
স্টিফেন কিট

প্রতি ব্যবহারকারী একটি বৈধ পয়েন্ট, তবে সে জন্য একটি ভাল ডিজাইন ব্যবহার ~/tmpকরা উচিত। যা এখনও অবশ্যই শারীরিক অবস্থান হিসাবে একই হতে পারে /tmp
এমসাল্টারস

44

অনুশীলনে, /tmpউপস্থিতির বেশ গ্যারান্টিযুক্ত। তবে এটি উপস্থিত থাকলেও এর অর্থ এই নয় যে আপনার অস্থায়ী ফাইলগুলি সেখানে রাখা উচিত।

মান কনভেনশন ব্যবহার করা TMPDIRএনভায়রনমেন্ট ভেরিয়েবল। এটি উপস্থিত থাকলে এটি অস্থায়ী ফাইলগুলির জন্য একটি ডিরেক্টরিকে নির্দেশ করে। যদি এটি বিদ্যমান না থাকে তবে অস্থায়ী ফাইলগুলি এতে প্রবেশ করুন /tmp

শেল স্ক্রিপ্টে, আপনি "${TMPDIR:-/tmp}"অস্থায়ী ফাইল অবস্থান হিসাবে ব্যবহার করতে পারেন : TMPDIRএটি সেট হয়ে থাকলে এর মান এবং /tmpঅন্যথায় প্রসারিত হয়। অথবা আপনি TMPDIRশর্তসাপেক্ষে কমান্ডটি সহ এটি সেট না করে সেট করতে পারেন

: "${TMPDIR:=/tmp}"

এবং তারপরে ভিতরে অস্থায়ী ফাইলগুলি তৈরি করুন "$TMPDIR"

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

¹ এবং খালি নয় - যদি ভেরিয়েবলটি খালি থাকে তবে তা যেমন হয় তেমনিভাবে ব্যবহারযোগ্য হয় না এবং যদি কোনও ফাইলের নাম ধারণ করার কথা থাকে তবে খালি বা আনসেট ভেরিয়েবলগুলিকে একইভাবে আচরণ করা ভাল ধারণা it's


11
সম্ভবত আপনি উল্লেখ করতে পারেন যে ব্যবহারকারীদের ফাইলের নাম সংঘর্ষের আশা করতে হবে। সুতরাং / mktempটিএমপি-তে ফাইল তৈরির একমাত্র প্রস্তাবিত উপায় হ'ল আইএমও হ'ল আদেশটি এবং এটি automatically টিএমপিডিআইআর "স্বয়ংক্রিয়ভাবে হ্যান্ডেল করা উচিত
rudimeier

এই উত্তর আপনি চান। আমি বিন / বিন ছাড়া সিস্টেমগুলি দেখেছি / tmp।
জোশুয়া

1
এছাড়াও এ .10 ডিরেক্টরি স্ট্রাকচার এবং ডিভাইসগুলি জানিয়েছে: ... /tmpavailabilityতিহাসিক অ্যাপ্লিকেশনগুলির উপস্থিতি অনুমান করার জন্য ডিরেক্টরিটি POSIX.1-2-2008 এ ধরে রাখা হয়েছে। বাস্তবায়নগুলি পরিবেশের পরিবর্তনশীলগুলিতে উপযুক্ত ডিরেক্টরি নাম প্রদান TMPDIRকরতে উত্সাহিত করা হয় এবং TMPDIRঅস্থায়ী ফাইল তৈরির জন্য সামগ্রীগুলি ব্যবহার করতে অ্যাপ্লিকেশনগুলিকে উত্সাহ দেওয়া হয় । ...
অ্যান্ড্রু হেনেল

3
এটি mktempPOSIX তে নেই তা খুঁজে পাওয়ার জন্য দুঃখজনক , যদিও এটি ইতিমধ্যে GNU (লিনাক্স) , ওপেনবিএসডি , ফ্রিবিএসডি এবং ম্যাকোসের মতো জনপ্রিয় অপারেটিং সিস্টেমে রয়েছে ।
ফ্রাঙ্কলিন ইউ

1
যুক্ত করার mktempমতো বিষয় হ'ল লাইবসি , পার্ল এবং পাইথনের মতো অনেকগুলি স্ক্রিপ্টিং এবং প্রোগ্রামিং ভাষায় অনুরূপ ফাংশন উপলব্ধ ।
গৌরব

6

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

আপনার যদি কিছু বড় থাকে তবে ব্যবহার করুন /var/tmp/


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

2
আপনি অনুগ্রহ করে ব্যর্থতার কেসটি কীভাবে পরিচালনা করতে পারবেন তা নির্ভর করে, আমার ধারণা। মূল বিষয়টি হ'ল এটি ধরে নেওয়া উচিত না যে /tmpবড় ফাইলগুলি পরিচালনা করতে পারে। ধরা যাক এটি একটি মাঝারি গতির লিঙ্কের মাধ্যমে 10 জিবি ডাউনলোড। "ইউনিক্স ওয়ে" বা না, বেশ কয়েক ঘন্টা এটি কাজ করছে না তা খুঁজে পাওয়া বেশ দু: খজনক।
mattdm

1
@ মেটডেম তাড়াতাড়ি চেক করা দুর্দান্ত তবে ব্যর্থতাটি পরিচালনা করতে হবে। ডাউনলোড শুরু হওয়ার সাথে সাথে / টিএমপিতে 10 জিবি উপলব্ধ থাকে তবে আপনার ডাউনলোড চলাকালীন অন্য ব্যবহারকারী 5 জিবি অনুলিপি করে। এখন কি? হেহ।
জ্যান লিংস

স্পষ্টভাবে! আমি এটি ব্যর্থতা না পরিচালনা করার অজুহাত হিসাবে বলতে চাই না।
mattdm

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