/ Tmp නාමාවලිය පිරිසිදු කරන්නේ කෙසේද?


316

කොහොමද ඇත /tmpබහලුම පිරිසිදු? එය ස්වයංක්‍රීයද? එසේ නම්, එය කොපමණ වාරයක් පිරිසිදු කරන්නේද?


15
මගේ තාවකාලික ලිපිගොනු කිසි විටෙක තැටියට ලියා නොගනී. ඒවා RAM තැටියකට ලියා ඇත. මම tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab එකට දැම්මා .
නිර්නාමික

Answers:


199

සටහන! අවම වශයෙන් උබුන්ටු 14.04 සිට මෙම පිළිතුර යල් පැන ඇත. වර්තමාන තත්වය සඳහා වෙනත් පිළිතුරු බලන්න. ඒවා නිවැරදි බව ඔප්පු වුවහොත් ඒවා කෝපයෙන් ඉහළට ඔසවන්න. වර්තමාන නිවැරදි පිළිතුරට සබැඳියක් තැබීමට මට අදහස් දක්වන්න.

14.04 සඳහා https://askubuntu.com/a/759048/1366 බලන්න

16.10 සඳහා https://askubuntu.com/a/857154/453746 බලන්න


2011 සිට පැරණි පිළිතුර:

පිරිසිදු කිරීම /tmpසිදු කරනු ලබන්නේ උඩුමහලේ පිටපතෙනි /etc/init/mounted-tmp.conf. ස්ක්‍රිප්ට් එක /tmpසවිකරන සෑම අවස්ථාවකම ඉහළට ක්‍රියාත්මක වේ. ප්‍රායෝගිකව එයින් අදහස් වන්නේ සෑම ඇරඹුමකදීම ය.

ස්ක්‍රිප්ට් දළ වශයෙන් පහත සඳහන් දේ කරයි: ගොනුවක් දින /tmpවලට වඩා පැරණි $TMPTIMEනම් එය මකා දැමෙනු ඇත.

හි පෙරනිමි අගය $TMPTIME0 වේ, එයින් අදහස් කරන්නේ සෑම ගොනුවක්ම සහ නාමාවලිය /tmpමකා දැමෙනු ඇති බවයි. $TMPTIMEයනු පරිසර විචල්‍යයකි /etc/default/rcS.


එය තවදුරටත් 14.04 සඳහා සත්‍ය නොවේ (පිටපත තවදුරටත් නොපවතී).
මොනිකා නැවත

Ar මාටින් ෂ්‍රෝඩර් - ස්ක්‍රිප්ට් එක මගේ පද්ධතියේ පවතින අතර එය පිරිසිදු ස්ථාපනය 14.04 ක් වන අතර tmpreaper නොපවතී!
ලාන්ස් හොලන්ඩ්

මම දැන් ආරුක්කු ලිනක්ස් භාවිතා කරන බැවින් මට සත්‍යාපනය කළ නොහැක. සමාවන්න. කරුණාකර යමෙක් මෙය සත්‍යාපනය කර මගේ පිළිතුර අදහස් දක්වන්න හෝ සංස්කරණය කරන්න.
lesmana

4
ubuntu හි 16.04 tmpreaper ආරක්ෂිත නොවන ලෙස අතහැර දමා ඇත කරුණාකර බලන්න: fossies.org/linux/tmpreaper/debian/README.security
tamerlaha

1
නැත. උබුන්ටු 16.04 හි එය හුදෙක් පද්ධතිමය යාන්ත්‍රණයක් මගින් අභිබවා යයි. එම ලේඛනය කියවන්න, ඔබ සැබවින්ම සොයාගන්නේ අනාරක්ෂිත බව කියා සිටින ආරක්ෂක විශ්ලේෂණය දෝෂ සහිත වන්නේ මන්ද යන්න පැහැදිලි කිරීමකි.
JdeBP

142

සෑම ඇරඹුමකදීම නාමාවලිය පෙරනිමියෙන් නිෂ්කාශනය වේ, මන්ද TMPTIMEපෙරනිමියෙන් 0 වේ.

මෙන්න ඔබට පහත ගොනුවේ කාලය වෙනස් කළ හැකිය:

/etc/default/rcS

TMPTIME දින ගණනක් තුළ ටී.එම්.පී.


9
සෑම ඇරඹුමකදීම ඉවත් කිරීම සේවාදායකයක් මෙන් කිසි විටෙකත් නැවත ආරම්භ නොකරන යන්ත්‍රයකට සුදුසු නොවේ. මගේ සේවාදායකයට දින 378 ක් අතිකාල ඇති බැවින් මගේ / ටීඑම්පී හි 5Gb ඉඩ ප්‍රමාණයක් ගන්නා ලිපිගොනු 500,000 කට වඩා තිබේ. නැවත පණගැන්වීමේදී එම ලිපිගොනු ඉවත් කිරීමට පැය ගණනක් ගත වන නිසා මම එය නැවත ආරම්භ කිරීමට මැලි වෙමි.
rjmunro

10
ඔබේ නඩුවේදී ඔබට tmpreaperඅවස්ථාවක් ලබා දිය යුතුය .
qbi

1
CRON රැකියාවකට එය පහසුවෙන් විසඳිය හැකිය.
කෙන් ෂාප්

එසේම tmpwatchසුදුසු මෙවලමක් විය යුතුය.
අරෙක්බුල්ස්කි

1
උබුන්ටු / සිස්ටම් දැනටමත් විසඳුමක් සපයන බව පෙනේ. මම තවත් කියන්නම් .... systemd.
කෙන් ෂාප්

68

කරන අතර /tmpෆෝල්ඩරය දිගු කාලීන ගබඩා ගොනු කිරීමට තැනක් නොවේ, ඉඳහිට ඔබ වඩා ටිකක් වැඩි කාලයක් දේවල් තබා ගැනීමට අවශ්ය ඔබ නැවත ආරම්භ ඊළඟ වතාවේ උබුන්ටු පද්ධති මත පෙරනිමි වන. /tmpපරීක්‍ෂණය අතරතුරදී මම යමක් බාගත කර , වෙනස්කම් සිදු කිරීමෙන් පසු නැවත ආරම්භ කර නැවත මුල් දත්ත නැති වූ බව මම දනිමි . ඔබගේ /tmpලිපිගොනු තව ටිකක් කල් තබා ගැනීමට ඔබ කැමති නම් මෙය වෙනස් කළ හැකිය .

/tmpපිරිසිදු කිරීමේ සංඛ්‍යාතය වෙනස් කිරීම

/tmpනැවත පණගැන්වීමේදී ඔබේ පද්ධතියට ඉවත් කිරීමට පවසන පෙරනිමි සැකසුම /etc/default/rcSගොනුවේ රඳවා ඇත . අපි බලමු වටිනාකම TMPTIME.

TMPTIME=0ගොනුවේ වයස නොතකා නැවත පණගැන්වීමේදී ලිපිගොනු මකන්න යැයි කියනු ලබන වත්මන් වටිනාකම . මෙම අගය වෙනත් (ධනාත්මක) අංකයකට වෙනස් කිරීමෙන් ගොනුවකට පැවතිය හැකි දින ගණන වෙනස් වේ /tmp.

TMPTIME=7

මෙම සිටුවම මඟින් ලිපිගොනු /tmpසතියක් වයසැති වන තෙක් රැඳී සිටීමට ඉඩ ලබා දෙන අතර ඊළඟ නැවත පණගැන්වීමේදී ඒවා මකා දමනු ඇත . Negative ණ සංඛ්‍යාවක් ( TMPTIME=-1) පද්ධතියට පවසන්නේ කිසි විටෙකත් කිසිවක් මකා නොදමන ලෙසයි /tmp. මෙය බොහෝ විට ඔබට අවශ්‍ය දෙයක් නොව, ලබා ගත හැකිය.


1
හොඳ පැහැදිලි කිරීමක්. නමුත් පිරිසිදු කිරීමේ විධානය තිබෙන්නේ කුමන පිටපතෙහිද? මම දැක ඇත්තෙමි /etc/init/mounted-temp.conf, නමුත් එය start on mounted MOUNTPOINT=/tmpඅදාළ නොවන බව මා සිතන රේඛාවක් ඇත.
enzotib

7
ගොනුවක් ස්වයංක්‍රීයව ඉවත් කිරීමට ඔබට අවශ්‍ය නැතිනම්, ඒ /var/tmpවෙනුවට එය දමන්න /tmp.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

1
ඔබේ යන්ත්‍රය බිඳ වැටෙන විට ඔබට අහිමි වීමට අවශ්‍ය නැති ගොනු (විදැහුම් වීඩියෝ රාමු) තබා ගැනීමද පහසුය, සමහර විට OOM නිසා විය හැකිය. වඩා හොඳ විසඳුමක් වනුයේ ඇත්ත වශයෙන්ම ගැටලුව විසඳීමයි. :-)
කෙන් ෂාප්

සිග්වින් තුළ මෙය කළ හැකිද?
CMCDragonkai

51

මම මෙය උබුන්ටු 16.10 හි පරීක්ෂා කරමි. සංස්කරණය කිරීම / etc / default / rcS තවදුරටත් කිසිදු බලපෑමක් නොකරන බව මට සහතික කළ හැකි අතර, ඔබ එම ගොනුවේ දැමූ දේ කුමක් වුවත් tmp හි ඇති ගොනු නැවත පණගැන්වීමෙන් අතුගා දමනු ලැබේ. අනෙක් අය සඳහන් කරන පරිදි, tmpreaper තවදුරටත් භාවිතා නොවේ.

මම හිතන්නේ නිවැරදි පිළිතුර උබුන්ටු 16.10 හි නව සැකසුමක් ඇති බවයි. "Tmpfiles.d" නම් පිටුවේ ලේඛනගත කර ඇති /etc/tmpfiles.d ෆෝල්ඩරයක් ඇත. එම ෆෝල්ඩරයේ, / tmp මකා දැමිය යුතුද යන්න පාලනය කිරීම සඳහා වින්‍යාස ගොනුවක් තැබිය යුතුය. දින 20 ක් පැරණි නම් මිස / tmp තුළ ගොනු නැවත මකා දැමීම නැවැත්වීමට මම මෙය කරන්නේ:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

ඔබට කිසි විටෙකත් ලිපිගොනු මකා දැමීමට අවශ්‍ය නැතිනම් "20d" වෙනුවට "-" ආදේශ කරන්න. මෙය මගේ හොඳම උත්සාහයයි, එම මිනිසා පිටුව විස්තරාත්මකව කිව නොහැකි තරම්ය.

නව සැකසුමෙහි ඇති වාසිය නම් පද්ධතිය නැවත ආරම්භ කර නොතිබුණද ගොනු පිරිසිදු කරන්නෙකුට තවමත් ක්‍රියාත්මක විය හැකි වීමයි (සෑම විටම සේවාදායකයේ මෙන්). ඒක ලොකු ප්ලස් එකක්, මම හිතන්නේ.



d /tmp/ - - - 20d
යටි ඉර

2
සඳහන් කිරීම වටී: පිරිසිදු කිරීමේ කාර්යය අතින් ක්‍රියාත්මක කිරීමෙන් ඔබට ඔබේ වින්‍යාසය පරීක්ෂා කළ හැකිය:systemctl start systemd-tmpfiles-clean
ඩේව් යාර්වුඩ්

10 pauljohn32 මෙය 16.10 න් පසු අනුවාද සඳහාද සත්‍යයක්ද?
kapad

3
apkapad: මෙය උබුන්ටු 18.04 හි ද ක්‍රියාත්මක වන බව මම තහවුරු කර ගතිමි.
ජීන් වින්සන්ට්

26

උබුන්ටු 14.04 හි මෙය සිදු කරනු ලැබේ tmpreaper, එය දිනපතා ක්‍රෝන් (වෙතින් /etc/cron.daily) ලෙස හැඳින්වේ . වැඩසටහන හරහා /etc/default/rcSසහ වින්‍යාසගත කළ හැකිය /etc/tmpreaper.conf.


මගේ පද්ධතියේ, tmpreaper /etc/cron.daily හි නොතිබුණි - නමුත් මට එය apt-get සමඟ ස්ථාපනය කිරීමට හැකි විය
ජෝ ජර්මස්කා

1
සටහන: ඔබ 16 සහ 18 යන දිනවල tmpreaper ස්ථාපනය නොකළ යුතුය, b / c එයට බිල්ට් පද්ධතියක් ඇත
jitbit

11

14.04 ට පෙර:

ඔබ නැවත ආරම්භ කරන සෑම අවස්ථාවකම එය පිරිසිදු වේ.


14.04+ සමඟ දිස්වන අතර එය භාවිතා කරන්නේ tmpreaper මිස "per boot" ස්ක්‍රිප්ට්
නොවේ FWIW

මගේ 14.04 පද්ධති සියල්ලම නැවත පණගැන්වීමේදී පිරිසිදු කරයි. කවදාවත් අහලා නැහැ tmpreaper.
කෙන් ෂාප්

ඔබ කිසි විටෙකත් පද්ධතිය නැවත ආරම්භ නොකරන්නේ නම් කුමක් කළ යුතුද?
phuclv

11

දී 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).


මම ටයිමරය 20min ලෙස වෙනස් කර ඇති අතර, තත්ව විධානය මඟින් එය සැබවින්ම 20min වින්‍යාසය භාවිතා කරන බව පෙනේ. නමුත් මගේ ගැටලුව වන්නේ /tmpතවමත් පිරිසිදු නොකිරීමයි. මට එය පිරිසිදු කිරීමට අවශ්‍යයි. අතින් ආරම්භ කිරීම පවා sudo systemctl start systemd-tmpfiles-cleanඋපක්‍රමය නොකරයි. කිසියම් අදහසක් ඇයි?
user2932688

4

උබුන්ටු ධාවනය වන අපගේ එක් සේවාදායකයක, / tmp හි ගොනු ඉවත් කිරීමට අපට ස්ක්‍රිප්ට් එකක් ඇති අතර එය රාත්‍රියේ ක්‍රියාත්මක වේ.

පිටපත:

#!/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 ගොනුවකට සුරකින්න සහ එය ක්‍රියාත්මක කිරීම සඳහා ක්‍රෝන් ඇතුළත් කිරීමක් සාදන්න. මෙය වෙබ් සේවාදායකයක් බැවින් පැහැදිලි හේතු නිසා එය නැවත ආරම්භ කිරීමට අපට අවශ්‍ය නැත.


7
ඔබට tmpwatch භාවිතා කිරීම වඩා හොඳ විය හැකිය .
පූලි

9
අවසාන පේළිය අතිශයින්ම භයානක ය. සාමාන්‍යයෙන්, සෑම කෙනෙකුටම ධාවනය කිරීමට ln -s /usr /tmp/kaboomහෝ හැකියාවක් ඇත ln -s /* /tmp/...
ඩැනියෙල් ඇල්ඩර්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.