/ Tmp ডিরেক্টরিটি কীভাবে পরিষ্কার করা হয়?


300

/tmpডিরেক্টরিটি কীভাবে পরিষ্কার করা হয়? এটা কি স্বয়ংক্রিয়? যদি তা হয় তবে এটি কত ঘন ঘন পরিষ্কার করা হয়?


15
আমার অস্থায়ী ফাইলগুলি কখনই ডিস্কে লিখিত হয় না। এগুলি র‌্যাম ডিস্কে লিখিত হয়। আমি tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ ইত্যাদি / fstab লাগিয়েছি।
বেনামে

উত্তর:


192

বিঃদ্রঃ! এই উত্তরটি কমপক্ষে উবুন্টু 14.04 সাল থেকে পুরানো। বর্তমান পরিস্থিতির জন্য অন্যান্য উত্তর দেখুন এবং সেগুলি সঠিক প্রমাণিত হলে তাদেরকে উগ্রভাবে উত্সাহিত করুন। এছাড়াও মন্তব্য পোস্ট করুন যাতে আমি বর্তমানের সঠিক উত্তরের লিঙ্কটি এখানে রাখতে পারি।

14.04 এর জন্য https://askubuntu.com/a/759048/1366 দেখুন

16.10 এর জন্য https://askubuntu.com/a/857154/453746 দেখুন


২০১১ সালের পুরানো উত্তর:

পরিষ্কারটি /tmpআপস্টার্ট স্ক্রিপ্ট দ্বারা সম্পন্ন হয় /etc/init/mounted-tmp.conf। স্ক্রিপ্টটি আপস্টার্ট দ্বারা চালিত হয় /tmpপ্রতিটি সময় মাউন্ট হয়। ব্যবহারিকভাবে প্রতিটি বুট মানে।

স্ক্রিপ্টটি মোটামুটিভাবে নিম্নলিখিতগুলি করে: যদি কোনও ফাইল দিনের /tmpচেয়ে বেশি বয়সী হয় তবে $TMPTIMEএটি মোছা হবে।

এর ডিফল্ট মান $TMPTIME0, যার অর্থ প্রতিটি ফাইল এবং ডিরেক্টরি /tmpমুছে যায়। $TMPTIMEএটিকে পরিবেশগত পরিবর্তনশীল হিসাবে সংজ্ঞায়িত করা হয় /etc/default/rcS


এটি আর 14.04-র ক্ষেত্রে সত্য নয় (স্ক্রিপ্টটির আর অস্তিত্ব নেই)।
মার্টিন শ্রাইডার

@ মার্টিন শ্রয়েদার - স্ক্রিপ্টটি আমার সিস্টেমে বিদ্যমান আছে এবং এটি 14.04 এর একটি পরিষ্কার ইনস্টল এবং টেম্প্রেইপারের অস্তিত্ব নেই!
ল্যান্স হল্যান্ড

আমি এখন খিলান লিনাক্স ব্যবহার করছি তাই আমি যাচাই করতে পারি না। দুঃখিত। দয়া করে কেউ এটি যাচাই করুন এবং মন্তব্য করুন বা আমার উত্তর সম্পাদনা করুন।
লেসমান

4
উবুন্টুতে ১.0.০৪ টেম্প্রাইপারটি অন-সুরক্ষিত হিসাবে ছেড়ে দেওয়া হয়েছে দয়া করে দেখুন: fossies.org/linux/tmpreaper/debian/README. সুরক্ষা
tamerlaha

1
নং উবুন্টু 16.04 এ এটি কেবলমাত্র সিস্টেমড মেকানিজম দ্বারা দমন করা যায়। সেই দস্তাবেজটি পড়ুন, এবং আপনি প্রকৃতপক্ষে কী সন্ধান করবেন তা হ'ল নিরাপত্তাহীনতার দাবি করা নিরাপত্তা বিশ্লেষণ কেন ত্রুটিযুক্ত an
জেডিবিপি

141

ডিরেক্টরি প্রতিটি বুটে ডিফল্টরূপে ক্লিয়ার করা হয়, কারণ TMPTIMEডিফল্টরূপে 0 হয়।

এখানে আপনি নিম্নলিখিত ফাইলটিতে সময় পরিবর্তন করতে পারেন:

/etc/default/rcS

TMPTIME কিছু দিন পরে tmp dir কত ঘন ঘন ঘন ঘন পরিষ্কার হয় তা বলে says


9
সার্ভারের মতো পুনরায় বুট করা হয় না এমন মেশিনের জন্য প্রতিটি বুটে সাফ করা কার্যকর নয়। আমার / টিএমপি-তে 5 জিবি স্থান নেওয়ার জন্য আমার 500,000 এরও বেশি ফাইল রয়েছে কারণ আমার সার্ভারে 378 দিনের আপটাইম রয়েছে। আমি এটিকে পুনরায় চালু করতে নারাজ, কেবল কারণ পুনরায় বুট করা ফাইলগুলি সাফ করতে কয়েক ঘন্টা সময় নেয়।
rjmunro

10
আপনার ক্ষেত্রে আপনার tmpreaperএকটি সুযোগ দেওয়া উচিত ।
কিবিবি

1
একটি CRON কাজ সহজেই এটি সমাধান করতে পারে।
কেন শার্প

এছাড়াও tmpwatchএকটি উপযুক্ত সরঞ্জাম হতে হবে।
আরেকবুলস্কি

1
দেখে মনে হচ্ছে উবুন্টু / সিস্টেমড ইতিমধ্যে একটি সমাধান সরবরাহ করেছে। আমি আরও বলব কিন্তু .... সিস্টেমড।
কেন শার্প

65

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

/tmpক্লিনআপ ফ্রিকোয়েন্সি পরিবর্তন করা হচ্ছে

আপনার সিস্টেমটিকে /tmpপুনরায় বুট করার সময় সাফ করতে বলার ডিফল্ট সেটিংটি /etc/default/rcSফাইলটিতে রাখা হয়। মান আমরা তাকান পাবেন TMPTIME

বর্তমান মান TMPTIME=0ফাইলের বয়স সত্ত্বেও রিবুটে ফাইলগুলি মুছুন delete এই মানটিকে অন্য (ধনাত্মক) সংখ্যায় পরিবর্তন করলে কোনও ফাইলের মধ্যে কত দিন বেঁচে থাকতে পারে তার সংখ্যা পরিবর্তন হবে /tmp

TMPTIME=7

এই সেটিংটি ফাইলগুলিকে /tmpএক সপ্তাহ বয়সী না হওয়া পর্যন্ত থাকতে দেয় এবং তারপরে পরবর্তী রিবুটে মুছতে পারে। একটি নেতিবাচক সংখ্যা ( TMPTIME=-1) সিস্টেমকে কখনই কোনও কিছু মুছতে বলে না /tmp। এটি সম্ভবত আপনি চান এমন কিছু নয় তবে উপলভ্য।


1
ভাল ব্যাখ্যা। তবে কোন স্ক্রিপ্টে ক্লিনআপ কমান্ড রয়েছে? আমি দেখেছি /etc/init/mounted-temp.conf, তবে এর মধ্যে এমন লাইন রয়েছে start on mounted MOUNTPOINT=/tmpযা আমাকে মনে করে যে এটি প্রযোজ্য নয়।
enzotib

7
আপনি যদি কোনও ফাইল স্বয়ংক্রিয়ভাবে সরানো না চান তবে এটির /var/tmpবদলে রাখুন /tmp
গিলস

1
আপনার মেশিন ক্র্যাশ হয়ে যাওয়ার পরে সম্ভবত ওওমের কারণে ফাইলগুলি (রেন্ডার করা ভিডিও ফ্রেমগুলি) হারাতে চান না এমন ফাইলগুলি রাখাও সহজ। অবশ্যই আরও ভাল সমাধান হ'ল সমস্যাটি সমাধান করা। :-)
কেন শার্প

এটি কি সাইগউইনের ভিতরে করা যেতে পারে?
সিএমসিডিগ্রাগনকাই

46

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

আমি মনে করি সঠিক উত্তরটি হ'ল উবুন্টু 16.10 এর একটি নতুন সেটআপ রয়েছে। ম্যান পেজ "tmpfiles.d" এ নথিভুক্ত একটি ফোল্ডার /etc/tmpfiles.d রয়েছে। সেই ফোল্ডারে, / tmp মুছে ফেলা হবে কিনা তা নিয়ন্ত্রণ করতে একটি কনফিগারেশন ফাইল স্থাপন করা উচিত। 20 দিনের বয়স না হওয়া পর্যন্ত / টেম্পে ফাইল মোছা থেকে রিবুটগুলি বন্ধ করতে আমি এটি করছি:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

"20d" দ্বারা "-" প্রতিস্থাপন করুন যদি আপনি কখনও ফাইল মুছতে চান না। এটি আমার সেরা প্রচেষ্টা, সেই পুরুষ পৃষ্ঠাটি বিশদ সহ প্রায় দুর্ভেদ্য et

নতুন সেটআপটির সুবিধা হ'ল সিস্টেম রিবুট না করা সত্ত্বেও একটি ফাইল ক্লিনার চালিয়ে যেতে পারে (যেমন সর্বদা সার্ভারে থাকা অবস্থায়)। আমি মনে করি এটি একটি বড় প্লাস।



আমি দেখতে পেয়েছি যে আপনি হাইফেন ব্যবহার করে মূল ফাইলের অনুমতি এবং মালিককে সংরক্ষণ করতে পারেন:d /tmp/ - - - 20d
ডেভ ইয়ারউড

2
লক্ষণীয় বিষয়: আপনি নিজেই পরিষ্কারের কাজটি চালিয়ে আপনার কনফিগারেশনটি পরীক্ষা করতে পারেন:systemctl start systemd-tmpfiles-clean
ডেভ ইয়ারউড

@ পলজোহন 32 কি 16.10 এর পরে সংস্করণগুলির জন্য সত্য?
কাপাড

3
@ কেপ্যাড: আমি কেবল যাচাই করেছি যে এটি উবুন্টু 18.04-তেও কাজ করে।
জিন ভিনসেন্ট

26

উবুন্টু 14.04 এ এটি করা হয় tmpreaper, যা ক্রোন দ্বারা প্রতিদিন বলা হয় (থেকে /etc/cron.daily)। প্রোগ্রামটি /etc/default/rcSএবং এর মাধ্যমে কনফিগার করা যায় /etc/tmpreaper.conf


আমার সিস্টেমে, টেম্প্রেইপারটি /etc/cron.daily তে ছিল না - তবে আমি এটি
অ্যাপটি

10

14.04 এর আগে:

আপনি পুনরায় বুট করার সময় এটি পরিষ্কার হয়ে যায়।


14.04+ এর সাথে প্রদর্শিত হবে এটি কেবলমাত্র টেম্প্রেইপার ব্যবহার করে, "প্রতি বুট" স্ক্রিপ্ট
এফডাব্লুআইডাব্লু নয়

আমার 14.04 সিস্টেমগুলি সমস্ত পুনরায় বুট করার পরে পরিষ্কার হয়। এমনকি কখনও শুনিনি tmpreaper
কেন শার্প

আপনি যদি সিস্টেমটি কখনও পুনরায় চালু করেন না?
ফুক্লভ

7

একটি systemdউবুন্টু (15.10 এবং নতুন) এই systemd হল দ্বারা সম্পন্ন করা হয় ব্যবহার করে systemd-tmpfiles-cleanপরিষেবা এবং টাইমার:

$ systemctl cat systemd-tmpfiles-clean.service 
# /lib/systemd/system/systemd-tmpfiles-clean.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle

এবং

$ systemctl cat systemd-tmpfiles-clean.timer  
# /lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

তাই systemd-tmpfiles-cleanশাটডাউন চালায় এবং অন্যথায় প্রতিদিন একবার করে। এটি পরিষ্কার করা ফাইলগুলি অন্য উত্তরে/etc/tmpfiles.d উল্লিখিত ব্যবহার করে বাড়ানো যেতে পারে ।

আপনি টাইমার আচরণটি নিজেই ব্যবহার করে systemctl edit systemd-tmpfiles-clean.timerএবং বিভিন্ন সিস্টেমড Timerকনফিগারেশন বিকল্পগুলি (দেখুন man 5 systemd.timer) ব্যবহার করে পরিবর্তন করতে পারেন ।


আমি টাইমারটি 20 মিনিটে পরিবর্তন করেছি এবং আমি দেখতে পাই যে স্থিতি কমান্ডটি দেখায় যে এটি আসলে 20 মিনিট কনফিগারেশন ব্যবহার করছে। তবে আমার সমস্যা হ'ল /tmpএখনও পরিষ্কার হয়নি। এবং আমার এটি পরিষ্কার করা দরকার। এমনকি ম্যানুয়াল sudo systemctl start systemd-tmpfiles-cleanশুরুটি কৌশলটি করে না। কোন ধারণা কেন?
ব্যবহারকারী 2932688

5

উবুন্টু চলমান আমাদের সার্ভারগুলির মধ্যে একটিতে / টিএমপি-তে ফাইলগুলি সরিয়ে ফেলার জন্য আমাদের কাছে একটি স্ক্রিপ্ট রয়েছে এবং এটি রাত্রে চলে runs

লিপিটি হ'ল:

#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly

/usr/bin/find /tmp -type f -atime +2 -mtime +2  |xargs  /bin/rm -f &&

/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&

/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&

/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;

উপরের বিষয়বস্তুগুলিকে একটি ফাইল chmod 775 ফাইলের মধ্যে সংরক্ষণ করুন এবং এটি চালানোর জন্য ক্রোন এন্ট্রি তৈরি করুন। যেহেতু এটি একটি ওয়েব সার্ভার তাই আমরা সুস্পষ্ট কারণে এটি পুনরায় চালু করতে চাই না।


6
আপনি tmpwatch ব্যবহার করে ভাল হতে পারে ।
পুলি

9
শেষ লাইনটি অত্যন্ত বিপজ্জনক। সাধারণত, প্রত্যেকে চালাতে ln -s /usr /tmp/kaboomবা এমনকি সক্ষম হয় ln -s /* /tmp/...
ড্যানিয়েল অল্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.