আমরা কী / tmp এর বিষয়বস্তু ম্যানুয়ালি মুছে ফেলার কথা?


26

আমি এই ধারণার মধ্যে ছিলাম যে "পুরানো" ফাইলগুলি /tmpনিয়মিত মুছে ফেলা হবে। যাইহোক, এটি আমার কাছে মনে হচ্ছে এটি /tmpযতক্ষণ চাইবে বাড়বে এবং কিছুই মুছে যাবে না। কিছু লোক বলে /tmpথাকেন যে ডিস্কটি পূর্ণ হয়ে উঠলে কেবল একা থাকা এবং এর সামগ্রীগুলি মুছে ফেলা ভাল ।

আমার প্রশ্ন, /tmpসত্যিই নিজের যত্ন না নেওয়ার জন্য ডিজাইন করা হয়েছে? সেরা অনুশীলনগুলি কী কী?


1
সাধারণত /tmpপুনরায় বুট করার পরে পরিষ্কার হয়ে যায় তবে এটি সেখানে মাউন্ট করা ফাইল সিস্টেমের উপর নির্ভর করে। কি df -hবলে?
etagenklo

উত্তর:


27

প্রশ্নের উত্তর দিতে:

  • হয় /tmpস্বয়ংক্রিয়ভাবে খালি হওয়ার কথা: হ্যাঁ
  • আমাদের কী /tmpনিয়মিত এবং ম্যানুয়ালি ফাইলগুলি মুছতে হবে : না , আপনার সিস্টেম সেগুলি যত্ন নেবে।

আপনি যদি নিজেকে জিজ্ঞাসা করতে পারেন:

  • আমি /tmpযে কোনও কারণেই ফাইলগুলি মুছতে পারি (স্থানের প্রয়োজন, ট্রেসগুলি মুছতে চাই ইত্যাদি): এটি নির্ভর করে , পড়ুন

ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ড (এফএইচএস) বলেছেন :

/ Tmp ডিরেক্টরি অবশ্যই অস্থায়ী ফাইলগুলির জন্য প্রয়োজনীয় প্রোগ্রামগুলির জন্য উপলব্ধ করা উচিত।

প্রোগ্রামগুলি অবশ্যই ধরে নিবে না যে / টিএমপি-তে থাকা কোনও ফাইল বা ডিরেক্টরি প্রোগ্রামের অনুরোধের মধ্যে সংরক্ষিত আছে।

/var/tmp/একটি আছে অনুরূপ উদ্দেশ্য , কিন্তু না রিবুট সময় মুছে যাবে।

এটা তোলে হয় নিশ্চিত নয় যে /tmp/বা /var/tmp/নিয়মিত পরিষ্কার করা হয়। এটি আপনার বিতরণ এবং সেটিংসের উপর নির্ভর করতে পারে, যদিও বেশিরভাগ সিস্টেম সময়ে সময়ে কিছু পরিষ্কার করে up দ্বারা মন্তব্য দেখুন mike

আপনার যদি / টিএমপি-তে কোনও ফাইল মুছতে হয় তবে ফাইলটি ব্যবহৃত হচ্ছে কিনা তা আগে দেখুন। আপনি এটি সহ সহজেই এটি করতে পারেন:

lsof /tmp/file_to_delete

যদি আপনার এটি করার অধিকার থাকে, তবে এটি প্রক্রিয়াটির নাম, পিআইডি এবং ফাইলের ধরণের মতো সেই ফাইলটির হ্যান্ডেলটি ধারণ করার প্রক্রিয়াটি দেখায়। সত্যই সমস্ত প্রক্রিয়া দেখানোর জন্য, sudoব্যবহারকারীকে রুট হিসাবে প্রিপেন্ড করুন বা চালান ।

lsof +D /tmp

/tmpনীচে থাকা সমস্ত ফাইল এবং ডিরেক্টরিগুলি ( +D) যা এখন খোলা রয়েছে তা আপনাকে প্রদর্শন করবে । অবশ্যই আপনার এই ফাইলগুলি মুছে ফেলা উচিত নয়।

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


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

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

ফাইলগুলি ফাইল সিস্টেমে ডেটাसेट হয় যা একটি পথ এবং একটি ফাইল নামের মাধ্যমে একটি শ্রেণিবদ্ধ নেমস্পেসে অ্যাক্সেসযোগ্য করা হয়। একটি ফাইলের একাধিক নাম থাকতে পারে (হার্ড লিঙ্কগুলি), এবং প্রক্রিয়াটিতে কোনও ফাইলের জন্য ওপেন হ্যান্ডেল থাকতে পারে। যদি ফাইলটি অ্যাক্সেসযোগ্য না হয়, তবে এটির নাম এবং কোনও খোলা হ্যান্ডেল না থাকলে তা মুছে ফেলা হয়। মুছে ফেলা রোধ করা আমার দক্ষতার বাইরে এবং আইএমও এই প্রশ্নের ক্ষেত্র ছাড়িয়ে। "ম্যান্ডেটারি লকিং" সন্ধানের চেষ্টা করুন।
trapicki

[একটি সদৃশ উত্তর ছিল]
ট্র্যাপিকি

4

আমি মনে করি এটি ওএস ভেরিয়েন্ট নির্ভর। আমি কল্পনা করেছিলাম যে / টিএমপি সাধারণত রিবুট করার সময় সাফ হয়ে যায়, এবং প্রকৃতপক্ষে মিড সেশনের মধ্য দিয়ে নিজেকে পরিষ্কার করা সিস্টেমের পক্ষে নিরাপদ হবে না কারণ এটি কোন ফাইলগুলি সক্রিয় তা জানে না।

যদি আপনি সাহসী হন তবে আপনি ক্রন্টবায় একটি কমান্ড নিক্ষেপ করতে চাইতে পারেন যা একটি নির্দিষ্ট বয়সে ফাইলগুলি মুছে দেয় তবে এটি যদি এখনও ব্যবহৃত ফাইল মুছে ফেলা হয় তবে এটি কিছু সমস্যার কারণ হতে পারে। আপনি হয়ত কোনও কমান্ড চেষ্টা করতে পারেন (আমি এটি চেষ্টা করি নি)

সন্ধান / tmp -type এফ টাইম +10 -exec আরএম {} +

যা তাত্ত্বিকভাবে 10 দিনের মধ্যে / tmp এর অধীনে সমস্ত ফাইল সরিয়ে ফেলবে।


সম্ভবত এটি যুক্ত -rকরা উচিত
স্টিভেন পেনি

1
একেবারে -r যোগ করবেন না - এটির ফলস্বরূপ বা 10 দিনের পুরানো ফাইলগুলি যেখানে 10 দিন আগে তৈরি হয়েছিল সেই ডিরেক্টরিতে উপস্থিত রয়েছে সেগুলি কম কার্যকর হবে or প্রকৃতপক্ষে, কমান্ডটি সম্ভবত ফাইলগুলিতে অনুসন্ধান সীমাবদ্ধ করার জন্য / tmp -type f -ctime +10 -exec rm {} + খুঁজে পাওয়া উচিত। (
ফাইন্ড

1

/ Tmp এবং / var / tmp ডিরেক্টরিগুলি একটি সাধারণ সময়সূচীতে পরিষ্কার করা হয়। এটি আপনার ডিসট্রোর উপর নির্ভর করে। আমার সেন্টওএস সিস্টেম (RedHat এর ক্লোন) উপর একটা ক্রন চালানোর জন্য নির্ধারণ করা কাজ tmpwatch , একটি tmp, Dir ক্লিনার, একটি উপর দৈনিক সূচি । / Var / tmp এ থাকা ফাইলগুলিকে / tmp / এ থাকা ফাইলের চেয়ে কিছুটা বেশি দীর্ঘ আটকের অনুমতি দেওয়া হয়। আমি পুনরায় বুট করার জন্য যে স্ক্রিপ্টগুলি prun / tmp (তবে স্পষ্টভাবে / var / tmp নয়) দেখেছি, তা জেনেও যে সমস্ত প্রক্রিয়া নতুন হওয়ায় ফাইলটি খোলার কিছুই থাকতে পারে না।

সুতরাং, হ্যাঁ, / tmp বেসিক স্ক্রিপ্ট থেকে রক্ষণাবেক্ষণ আছে। এটি এখনও সেই রক্ষণাবেক্ষণ সময়ের বাইরে পূরণ করতে পারে। আপনি যদি ম্যানুয়ালি জিনিসগুলি পরিষ্কার করা বেছে নিয়ে থাকেন তবে সেরা সিসাদমিন অনুশীলনটি সতর্কতা অবলম্বন করা উচিত। এনএসবি সিসাদমিনস যখন একটি সাধারণ findস্ক্রিপ্ট চালিয়েছিল তখন মুছে ফেলা প্রয়োজনীয় সিস্টেম ফাইলগুলিকে নির্দেশ করে / টিএমপি-তে সিমলিংক সম্পর্কে সায়সাদমিন লোর কথা বলেছেন ।


2
Centos 7 এবং অন্যান্য রেডহ্যাটের মতো সংস্করণ 7+ সিস্টেমে সিস্টেমডে, ক্লিনআপটি /usr/lib/tmpfiles.d/tmp.conf এ কনফিগার করা হয়। এটি সিস্টেমডের টার্গেট সিস্টেমেড-টেম্পফিলস-ক্লিন.সার্ভিস দ্বারা প্রেরণ করা হয়েছে।
চমত্কার লিনাক্স ব্যবহারকারী

1

সেন্টওএস উপর সেখানে কাজ /etc/cron.dailyবলা tmpwatchযা হবে যাও recursively ফাইল যা একটি প্রদত্ত সময় জন্য অ্যাক্সেস করা হয়েছে সরিয়ে ফেলা হয়। সাধারণত, এটি ডিরেক্টরিগুলি পরিষ্কার করতে ব্যবহৃত হয় যা অস্থায়ী হোল্ডিং স্পেস যেমন / tmp এর জন্য ব্যবহৃত হয়।

এটি /etc/cron.daily/tmpwatchলিপি

#! / বিন / SH
পতাকা = -umc
/ usr / sbin / tmpwatch "$ পতাকা" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
        -এক্স '/ টিএমপি / এইচএসপিফায়দা_ *' 10 ডি / টিএমপি
/ usr / sbin / tmpwatch "$ পতাকা" 30d / var / tmp
ডি / ইন / / ক্যাশে / ম্যান, ক্যাটম্যান} / {বিড়াল?, এক্স 11 আর 6 / বিড়াল?, স্থানীয় / বিড়াল?}; করা
    যদি [-d "$ d"]; তারপর
        / usr / sbin / tmpwatch "gs পতাকা" -f 30 ডি "$ d"
    ফাই
সম্পন্ন

/tmp সিস্টেম পুনরায় বুট করার সময় ডিরেক্টরি সামগ্রীগুলি মুছে ফেলা হবে, কারণ চলমান প্রক্রিয়াটিতে ডিরেক্টরি থেকে ডিরেক্টরিগুলি অ্যাক্সেস থাকতে পারে।


0

আপনি এ থেকে সামগ্রী সরাতে পারেন /tmp/; তবে এটি করার সমস্যাটি হ'ল যদি আপনার কাছে এমন কোনও পরিষেবা থাকে যা নিয়মিতভাবে লিখিত হয় /tmp/এবং আপনি ফাইলগুলি মুছতে পারেন তবে পরিষেবাটি ক্র্যাশ হয়ে যেতে পারে বা পুনরায় চালু না হওয়া পর্যন্ত আপনি বিরতি পেতে পারেন।


0

FHS সংজ্ঞায়িত /tmpহিসাবে ডিরেক্টরির "অস্থায়ী ফাইল (দেখুন / var / tmp -র পরিবর্তে), প্রায়ই সিস্টেম পুনরায় বুট মধ্যে সংরক্ষিত", এবং /var/tmpহিসাবে "অস্থায়ী ফাইল পুনরায় বুট মধ্যে সংরক্ষিত করা"।

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

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


অনেকগুলি প্রোগ্রাম ফাইলগুলি /tmpযখন তাদের সাথে সম্পন্ন করা হয়, বা যখন তারা বেরিয়ে যায় তখন পরিষ্কার করার পক্ষে আরও ভাল কাজ করতে পারে তবে /tmpকোনও প্রোগ্রামের অস্বাভাবিক সমাপ্তির (ক্রাশ) পরে ফাইলগুলির সমস্যা এখনও রয়েছে ।
কেভিন ফেগান

0

আপনি যদি ডেবিয়ান (বা উবুন্টুর মতো একটি ডেরাইভেটিভ) চালাচ্ছেন তবে আপনার নিজের / ইত্যাদি / ডিফল্ট / আরসিএস ফাইলটি দেখতে হবে এবং TMPTIMEপরিবেশের পরিবর্তনশীলটি সামঞ্জস্য করতে হবে । সংজ্ঞা অনুসারে / টেম্পে থাকা কি এখানে পরবর্তী পুনরায় বুট করতে হবে না।

আমি সুপারিশ

  • TMPTIMEএকটি সার্ভারে ভেরিয়েবল ব্যবহার করে
  • ডেস্কটপে tmpfs (ram তে) হিসাবে মাউন্ট / tmp (আরও গতির জন্য)

0

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

du -hs /* | sort -h

আপনার সিস্টেম অস্থায়ী ফাইলগুলি পরিচালনার জন্য সিস্টেমেড পরিষেবাটি ব্যবহার করছে কিনা তা দেখার জন্য আপনি কেবল চেষ্টা করতে পারেন:

systemctl status systemd-tmpfiles-clean

নীচে আপনি নীচের মতো কিছু দেখতে পাবেন, যা আপনাকে জানায় যে পরিষেবাটি কখন শেষ হয়েছিল:

systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static; vendor preset: disabled)
   Active: inactive (dead) since Wed 2018-07-18 15:43:36 IST; 18h ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 30495 ExecStart=/usr/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
 Main PID: 30495 (code=exited, status=0/SUCCESS)

Jul 18 15:43:36 host-name systemd[1]: Starting Cleanup of Temporary Directories...
Jul 18 15:43:36 host-name systemd[1]: Started Cleanup of Temporary Directories.

মনে রাখবেন যে ক্লিন-আপটি সম্পন্ন হওয়ার সাথে সাথে এই পরিষেবাটি প্রস্থান করবে। একটি টাইমার পরিষেবা নিয়মিত এটি ট্রিগার করার জন্য দায়ী। আপনি এটি দিয়ে পরীক্ষা করতে পারেন:

systemctl status systemd-tmpfiles-clean.timer

এবং আপনার নিম্নলিখিতগুলির মতো কিছু আশা করা উচিত:

systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: disabled)
   Active: active (waiting) since Tue 2018-07-03 10:56:59 IST; 2 weeks 1 days ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

Jul 03 10:56:59 host-name systemd[1]: Started Daily Cleanup of Temporary Directories.
Jul 03 10:56:59 host-name systemd[1]: Starting Daily Cleanup of Temporary Directories.

আপনি যদি ফাইলগুলি সাফ করার জন্য দায়বদ্ধ প্রকৃত পরিষেবাটি আবার দেখেন তবে আপনি দেখতে পাবেন যে এটি সমস্ত কিছু চালিত রয়েছে:

/usr/bin/systemd-tmpfiles --clean

সুতরাং আপনি হয় সরাসরি এই আদেশটি চালাতে পারেন, বা এটি সঠিকভাবে করতে, শুধু করুন:

systemctl start systemd-tmpfiles-clean

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

অস্থায়ী ফাইলগুলির জেনেরিক হ্যান্ডলিংয়ের সন্ধানের জন্য এক জায়গা হতে পারে /usr/lib/tmpfiles.d/tmp.confযা নিম্নলিখিত প্রাসঙ্গিক লাইন থাকতে পারে:

# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d

আপনি যদি এটির সংক্ষিপ্ত সময়ের জন্য পরিবর্তন করতে পারেন, যদি আপনার সিস্টেমটি স্থানের বাইরে চলে যায়, উদাহরণস্বরূপ:

v /tmp 1777 root root 12h
v /var/tmp 1777 root root 1d

আপনি কী করছেন সে সম্পর্কে নিশ্চিত হতে man tmpfiles.dম্যানুয়ালটি পড়ুন do আবার, আমি এখানে উপস্থাপিত পদ্ধতিটি একটি সেন্টোস (রেডহ্যাট ভিত্তিক) এবং একটি উবুন্টু সিস্টেমে প্রাসঙ্গিক বলে মনে করেছি, তবে অন্যান্য বিতরণ সম্পর্কে আমি খুব বেশি জানি না।

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