Cards

tmp direktoriyasındaki faylların təmizlənməsi

/tmp direktoriyasındaki faylların avtomatik şəkildə silinməsi, təmizlənməsi.


Bütün Linux sistemlərində /tmp adında sistemə bərkidilmiş direktoriya vardır və tmpfs adında xüsusi fayl sisteminə malikdir. Bu fayl sistemi virtualdır və sistem açılmağa başladıqda avtomatik olaraq sistemə bərkidilir. İstəsəniz /tmp direktoriyasını hər bir tətbiqin istəyinə uyğun olaraq ayrı ayrılıqda bərkidə bilərsiniz. /tmp direktoriyası, tətbiqlərin əməliyyatları vaxtı keçici, müvəqqəti fayllar (və ya sessiya faylları) üçün istifadə olunur. Bu fayllar tətbiqin işləri qurtardıqdan sonra tətbiq tərəfindən avtomatik olaraq silinir. Nizamlı olaraq isə, sistem işə başlayanda ümumi olaraq bu direktoriya təmizlənir. Sistem üzərində gələn tətbiqlər əasasən öz işləri bitdikdən sonra buradaki fayllarını təmizləyirlər, ancaq bəzi tətbiqlər isə bunu istəmir, etmir.

Bizim də bu faylları öz tərəfimizdən silməyimiz lazımdır, ancaq əgər biz bəzi işlək faylları siləsi olsaq, onlar hazırki sessiyanın dayandırılmasına gətirib çıxara bilər.

Ancaq biz, /tmp direktoriyası dolduqda artıq oradaki istifadə olunmayan faylları, köhnə sessiya fayllarını və ya lazımsız faylları silməliyik. Əks təqdirdə server, sistem üzərindəki tətbiqlər işləyə bilməyəcək və /tmp direktoriyasına hər hansı bir faylı yazmaq istədilərində xəta xəbərdarlıqları ilə qarşılaşacağıq.

Bu məqalədə /tmp direktoriyası daxilindəki faylları ən yaxşı hansı formada təmizləyərik, ondan danışacağıq.

Df əmrindən istifadə edərək /tmp direktoriyasının necə, hansı şəkildə hara bərkidildiyinə nəzər yetirə bilərik.

┌─[alliswell@parrot]─[~]
└──╼ $df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           793M  9.3M  784M   2% /run
/dev/sda3        58G   28G   28G  50% /
tmpfs           3.9G   89M  3.8G   3% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs           793M   48K  793M   1% /run/user/1000
/dev/sdb1       932G  598G  335G  65% /media/alliswell/Local Disk

 

Hansı tip faylların /tmp-də toplandığına da baxa bilərsiniz:

┌─[alliswell@parrot]─[~]
└──╼ $ls -lh /tmp
total 36K
drwx------ 2 alliswell alliswell 4.0K Dec  7 15:57 mozilla
drwx------ 2 root      root      4.0K Dec  7 14:38 pulse-PKdhtXMm
drwx------ 2 alliswell alliswell 4.0K Dec  7 14:40 ssh-56FUKAOl
drwx------ 3 root      root      4.0K Dec  7 14:38 systemd-private-ModemManager.service-Whe2PW
drwx------ 3 root      root      4.0K Dec  7 14:38 systemd-private-systemd-logind.service-THA7zj
drwx------ 3 root      root      4.0K Dec  7 14:40 systemd-private-upower.service-7HSvbS
drwx------ 3 root      root      4.0K Dec  7 14:38 systemd-private-xplico.service-tyRyuw
drwx------ 2 alliswell alliswell 4.0K Dec  7 14:42 Temp-2df2b9ff-ea38-4581-836b
drwx------ 3 alliswell alliswell 4.0K Dec  7 15:29 Temp-a923ffa6-2380-4b29-9283

 

Silmə məsələsinə aşağıdakı üç variantdan istifadə etməklə nail olmaq olar.

    atime: File Last Access Time – Qısaca izah edəsi olsaq, bizə hansısa əmr, skript və ya proqram əməliyyatının hansısa fayl və ya direktoriyaki məlumata olan çıxışını göstərir.
    ctime: File Last Change Time – ctime, bizə fayl və ya direktoriya meta məlumatlarınızın nə vaxt dəyişdiyini göstərir. Bu da, fayl atributlarının mülkiyyət, qrup və s. dəyişdirildiyi mənasına gəlir.
    mtime: File Last Modify Time – mtime, bizə fayl məzmunlarının dəyişdirilməsinin və ya yaddaşa verilməsinin tarixini göstərir. mtime və ctime atributlar dəyişikənə qədər demək olar ki, eynidir.


Metod-1 : mtime istifadə edərək, /tmp-də müəyyən tarixdən öncəki faylların silinməsi

Bu əmrlər, müəyyən etdiyiniz gündən əvvəlki faylların silinməsində sizə kömək edəcəkdir. Seçimlərinizi istəyinizə uyğun olaraq istifadə edə bilərsiniz.

Aşağıdaki əmrin icrasında mtime-dan istifadə edərək 2 günə qədərki faylları silək:

# find /tmp -type f -mtime +2 -delete;
və ya
# find /tmp -type f -mtime +2 -exec rm -f {} \;
və ya
# find /tmp -type f -mtime +2 | xargs rm -f


Metod-2 : atime istifadə edərək, /tmp-də müəyyən tarixdən öncəki faylların silinməsi

Bu əmrlər, müəyyən etdiyiniz gündən əvvəlki faylların silinməsində sizə kömək edəcəkdir. Seçimlərinizi istəyinizə uyğun olaraq istifadə edə bilərsiniz.

Aşağıdaki əmrin icrasında atime-dan istifadə edərək 2 günə qədərki faylları silək:

# find /tmp -type f -atime +2 -delete;
və ya
# find /tmp -type f -atime +2 -exec rm -f {} \;
və ya
# find /tmp -type f -atime +2 | xargs rm -f

 

Metod-3 : ctime istifadə edərək, /tmp-də müəyyən tarixdən öncəki faylların silinməsi

Aşağıdaki əmrin icrasında ctime-dan istifadə edərək /tmp-dəki son 5 saata qədər olan faylları silək:

# find /tmp -type f -mmin -300 -delete;
və ya
# find /tmp -type f -mmin -300 -exec rm -f {} \;
və ya
# find /tmp -type f -mmin -300 | xargs rm -f


Metod-4 : Shell skript istifadə edərək /tmp-dəki faylların silinməsi.

Yuxarıdaki üsullar, tapşırığın yerinə yetirilməsi üçün insan hərəkətinə ehtiyac duyur. Biz, bu əməliyyatları 24/7 nəzarətdə saxlaya bilmərik. Çünki bir neçə komputer və ya onlarla, yüzlərlə serverdə əməliyyat aparası olsaq, həllimiz nə olacaq?

Buna görə də avtomatik skriptdən istifadə etməli olacağıq. /tmp direktoriyasını təmizləmək üçün kiçik bir shell skript yaza bilərik və bu skript /tmp-dəki son 5 saata qədər olan faylları siləcək.


# vi /opt/script/tmp-cleanup.sh

#!/bin/bash
find /tmp -type f -mmin -300 -exec rm -f {} \;

 

və nəticə olaraq, bunu bir cronjob-a əlavə edərək, skriptin hər 5 saatda bir işə düşməsini təmin edə bilərik.

# crontab -e
0 */5 * * * /bin/bash /opt/script/tmp-cleanup.s

 

 

07.12.2019 17:31
alliswell

blog comments powered by Disqus