oluşturulan dosyalar sonra her saniye tmp dizininde silinir


13

Yanlışlıkla / tmp dizininde sürekli olarak bazı dosyaların oluşturulduğunu ve hemen silindiğini fark ettim. ls -l /tmpBen art arda kullanarak oluşturulan dosyaları yakalamak başardı:

-rw------- 1 root root       0 Apr  2 19:37  YlOmPA069G
-rw------- 1 root root       0 Apr  2 19:37  l74jZzbcs6

veya başka bir örnek:

-rw------- 1 root root       0 Apr  2 19:44  AwVhWakvQ_
-rw------- 1 root root       0 Apr  2 19:44  RpRGl__cIM
-rw------- 1 root root       0 Apr  2 19:44  S0e72nkpBl
-rw------- 1 root root       0 Apr  2 19:44  emxIQQMSy2

4.18.0-16-jenerik ile Ubuntu 18.10 hakkında. Bu neredeyse yeni bir yükleme: Bazı sunucu yazılımları (nginx, mysql, php7.2-fpm) ekledim, ancak kapalı olanlar bile sorun devam ediyor.

Oluşturulan dosyalar nedir ve neden? Bu davranışı nasıl durdurabilirim? çok istenmeyen bir ilgili bir SSD

Teşekkür ederim!

GÜNCELLEME

Soru, RAM'de / tmp olmadığında ( tmpfs yok ) ilgilidir.
Suçlu yazılımı x2goserver.service'dir, aksi takdirde bir tane olmalıdır .


2
"bir SSD üzerinde çok istenmeyen biri" bunu açıklıyor musunuz? Bir tmpfs olarak / tmp'niz yok mu? neden olmasın? bellekteki dosyalar neden SSD'ye zarar verir?
Rinzwind

2
/ tmp mutlaka tmpfs olmayabilir, bu yüzden geçerli bir soru
Colin Ian King

2
Evet, en azından dizin meta verileri aslında önbellekte sıcak kalmak yerine diske geri yazılırsa, SSD'de istenmeyen bir durum olacaktır. Bu nedenle /tmpnormalde tmpfs (destek deposu olarak pagecache kullanan ramdisk dosya sistemi); sorunuzu tmpfs ile etiketlediniz , bu nedenle SSD'ler hakkındaki yorumlarınız yerinde görünmüyor.
Peter Cordes

1
büyük - bu bir zorunluluk var
adrhc

2
@PeterCordes " /tmpNormalde tmpfs üzerinde " ifadesinin normal bir Ubuntu kullanıcısı için geçerli olduğundan emin değilim - Yalnızca varsayılan Ubuntu yüklemesini kullanarak, /tmpdiskte ve OP'nin içine koymak için uygun fstab girişleri oluşturması gerekir tmpfs
Charles Green

Yanıtlar:


17

Bu dosyaları oluşturan işlemi algılamak için fnotifystat'ı yüklemenizi ve çalıştırmanızı öneririm:

sudo apt-get install fnotifystat
sudo fnotifystat -i /tmp

Açma / kapama / okuma / yazma etkinliğini aşağıdaki gibi yapan bir işlem göreceksiniz:

Total   Open  Close   Read  Write   PID  Process         Pathname
  3.0    1.0    1.0    0.0    1.0   5748 firefox         /tmp/cubeb-shm-5748-input (deleted)
  2.0    0.0    1.0    0.0    1.0  18135 firefox         /tmp/cubeb-shm-5748-output (deleted)
  1.0    1.0    0.0    0.0    0.0   5748 firefox         /tmp/cubeb-shm-5748-output (deleted)

3
Postscript: Bu aracın yazarıyım
Colin Ian King

1
Ve aynı zamanda soruyu ilk cevaplayan sizsiniz (artık bunu göremezsiniz). Bu arada iyi bir araç.
adrhc

+1 çok kullanışlı bir yardımcı program için. Zamanında da /tmp/...daha karmaşık DBUS yerine daemon ve kullanıcı alanı arasında IPC için dosya oluşturma sonraki projemi izlemek için kullanabilirsiniz .
WinEunuuchs2Unix

8

Hangi programın / işlemin dosyalara temas ettiğini belirleme

lsofHangi işlemlerin ve ikili dosyaların hangi dosyalara dokunduğunu / açıldığını belirlemek gibi araçlar kullanabilirsiniz . Dosyalar sık ​​sık değişirse bu sorun yaratabilir, bunun yerine sizi bilgilendirmek için bir saat ayarlayabilirsiniz:

$ sudo fnotifystat -i /tmp

Bazen, sadece kullanıcı veya grup sahibine bakmak size iyi bir ipucu verir (yani:) ls -lsha.


Put /tmpyerine diskin RAM'e

Arzu ederseniz, /tmpdizininizi RAM'e koyabilirsiniz . Bunun mevcut RAM'e dayalı akıllı bir hareket olup olmadığını ve okuma / yazmaların boyutunu ve sıklığını belirlemeniz gerekecektir.

$ sudo vim /etc/fstab

...
# tmpfs in RAM
tmpfs         /tmp         tmpfs         defaults,noatime,mode=1777      0 0
...
$ sudo mount /tmp
$ mount | grep tmp # Check /tmp is in RAM
tmpfs on /tmp type tmpfs (rw,noatime)

Yeterli RAM'iniz varsa, bu hem SSD'nizin uzun ömürlülüğü hem de sisteminizin hızı için çok iyi bir şey olarak düşünülebilir. Daha agresif olmak için tmpreaper(bazen tmpwatch) ince ayarlarsanız bunu daha küçük miktarlarda RAM ile bile başarabilirsiniz .


6

SSD'de çok istenmeyen biri

Sorunuzu ile etiketlediniz , bu yüzden bunun SSD ile nasıl bir ilgisi olduğu açık değil. Tmpfs bellek içi (veya daha doğrusu blok içi önbellek) bir dosya sistemidir, bu yüzden asla fiziksel bir diske vurmaz.

Ayrıca, /tmpdosya sisteminiz için fiziksel bir destek deponuz olsa bile , yalnızca birkaç kilobayt RAM'e sahip bir sisteminiz yoksa, bu kısa ömürlü dosyalar diske asla vurmaz, tüm işlemler önbellekte gerçekleşir.

Yani, başka bir deyişle, tmpfs kullandığınız için endişelenecek bir şey yoktur ve eğer olmasaydınız, endişelenecek bir şey olmayacaktır.


Yanlışlıkla da geçerli fs türü (tmpfs) ile etiketlenmiş böylece / tmp RAM tutmak. Şimdi kaldırdım ama benden de 1 cevap çok yararlı buluyorum.
adrhc

@adrhc: RAM'inizdeyse, SSD'nizle /tmphiçbir ilgisi yoktur, bu yüzden ne arzu edilir ne de istenmeyen ama aslında tamamen ilgisizdir.
Jörg W Mittag

Kabul ediyorum ama soru RAM'de / tmp olmadığında. Sadece RAM'de / tmp vardı; yine de, problem beni ilgilendiriyordu.
adrhc

0

İnsanlar SSD yazma dayanıklılığı konusunda çok endişeli. Boş bir dosya oluşturmanın ve silmenin saniyede 24 KB yazdığını ve popüler Samsung 860 EVO 250 GB için 150 TBW spesifikasyonunu kullandığını varsayarsak, aşınma 193 yıl alır!

(150 * 10 ^ 12) / ((2 * 3 * 4 * 1024) * 60 * 60 * 24 * 365.25) = 193

Ext4 dosya sistemleri için "tune2fs -l" tuşunu kullanarak Ömür Boyu yazma öğelerini bulun. Veya "smartctl -a" kullanın ve Total_LBAs_Written arayın. Her zaman SSD'nin çok fazla ömrü kaldığını görüyorum.


Soru "Oluşturulan dosyalar nedir ve neden? Bu davranışı nasıl durdurabilirim?" Sorusudur, "yanıtınız" soruya nasıl uyuyor?
bummi

Soruyu doğrudan cevaplamasa da, bu komutların nasıl kullanılacağı ile ilgili çok kesin olmasa da bu bilgiyi de yararlı buluyorum. Örneğin tune2fs ile alıyorum tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1.
adrhc

0

Yanlış /dev/nvme0...isim kullanıyordunuz :

$ sudo tune2fs -l /dev/nvme0n1
tune2fs 1.42.13 (17-May-2015)
tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1
Couldn't find valid filesystem superblock.

Doğru biçim:

$ sudo tune2fs -l /dev/nvme0n1p6
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   New_Ubuntu_16.04
Last mounted on:          /
Filesystem UUID:          b40b3925-70ef-447f-923e-1b05467c00e7
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2953920
Block count:              11829504
Reserved block count:     534012
Free blocks:              6883701
Free inodes:              2277641
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Flex block group size:    16
Filesystem created:       Thu Aug  2 20:14:59 2018
Last mount time:          Thu Apr  4 21:05:29 2019
Last write time:          Thu Feb 14 21:36:27 2019
Mount count:              377
Maximum mount count:      -1
Last checked:             Thu Aug  2 20:14:59 2018
Check interval:           0 (<none>)
Lifetime writes:          4920 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       1308352
Default directory hash:   half_md4
Directory Hash Seed:      a179d56c-6c68-468c-8070-ffa5bb7cd973
Journal backup:           inode blocks

Bildiğim kadarıyla NVMe SSD ömrü gider:

$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 38 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 22,351,778
data_units_written                  : 14,667,833
host_read_commands                  : 379,349,109
host_write_commands                 : 127,359,479
controller_busy_time                : 952
power_cycles                        : 1,925
power_on_hours                      : 1,016
unsafe_shutdowns                    : 113
media_errors                        : 0
num_err_log_entries                 : 598
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 38 C
Temperature Sensor 2                : 49 C
Temperature Sensor 3                : 0 C
Temperature Sensor 4                : 0 C
Temperature Sensor 5                : 0 C
Temperature Sensor 6                : 0 C
Temperature Sensor 7                : 0 C
Temperature Sensor 8                : 0 C

Buradaki kilit nokta:

percentage_used                     : 0%

18 aylık kullanımdan sonra SSD yüzde kullanımı% 0'dır. 3 yıllık kullanımdan sonra% 1'e ulaşırsa SSD'nin 300 yıl süreceğini biliyorum.

Açıkçası bu cevap diğer yorumlara cevap vermek için yorum bölümüne sığmayacaktır.


Tune2fs çıkışının hangi kısmı SSD'nin yaşam süresi ile ilgilidir?
adrhc

@adrhc Fraser Gunn'ın bir hata mesajı gösteren cevabıtune2fs hakkındaki yorumunuza yanıt olarak doğru arama yöntemini gösteriyordum.
WinEunuuchs2Unix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.