बनाई गई फ़ाइलें तो tmp निर्देशिका में हर दूसरे पर नष्ट कर दिया


13

गलती से मैंने देखा कि / tmp निर्देशिका में लगातार कुछ फ़ाइलें बनाई जाती हैं, फिर तुरंत हटा दी जाती हैं। ls -l /tmpबनाई गई फ़ाइलों को पकड़ने में मैं सफल रहा:

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

या एक और उदाहरण:

-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-जेनेरिक के साथ उबंटू 18.10 के बारे में है। यह एक लगभग ताज़ा स्थापित है: मैंने कुछ सर्वर सॉफ़्टवेयर (nginx, mysql, php7.2-fpm) को जोड़ा, लेकिन यहां तक ​​कि उन लोगों के साथ भी जो समस्या बनी रहती है।

फाइलें क्या और क्यों बनाई गई हैं? मैं इस व्यवहार को कैसे रोकूंगा? एक SSD पर एक बहुत अवांछनीय है

धन्यवाद!

अपडेट करें

सवाल तब होता है जब RAM ( tmpfs नहीं ) में tmp नहीं होता है ।
दोषी सॉफ्टवेयर x2goserver.service है अन्यथा एक होना चाहिए


2
"SSD पर एक बहुत अवांछनीय" कृपया इसे स्पष्ट करें? आपके पास tmpfs के रूप में / tmp नहीं है? क्यों नहीं? मेमोरी में फाइलें ssd को क्यों नुकसान पहुंचा सकती हैं?
रिनजविंड

2
/ tmp जरूरी नहीं कि tmpfs हो, इसलिए यह एक वैध प्रश्न है
कॉलिन इयान किंग

2
हां, यह एसएसडी पर अवांछनीय होगा, कम से कम अगर निर्देशिका मेटाडेटा वास्तव में कैश में गर्म रहने के बजाय डिस्क पर वापस लिखा गया है। यही कारण है कि /tmpआम तौर पर tmpfs (एक रैमडिस्क फाइलसिस्टम जो पेजकेक को अपने समर्थन स्टोर के रूप में उपयोग करता है) पर है; आपने tmpfs के साथ अपने प्रश्न को टैग किया है , इसलिए SSDs के बारे में आपकी टिप्पणी जगह से बाहर लगती है।
पीटर कॉर्डेस

1
महान - यह एक होना चाहिए
19 adrhc

2
@PeterCordes मुझे यकीन नहीं है कि बयान " /tmpसामान्य रूप से tmpfs पर है" एक सामान्य Ubuntu उपयोगकर्ता के लिए मान्य है - बस डिफ़ॉल्ट Ubuntu स्थापित का उपयोग कर रहा है, /tmpडिस्क पर है और ओपी को इसे डालने के लिए उपयुक्त fstab प्रविष्टियों को बनाने की आवश्यकता होगी tmpfs
चार्ल्स ग्रीन

जवाबों:


17

मैं सुझाव देता हूं कि इन फ़ाइलों को बनाने वाली प्रक्रिया का पता लगाने के लिए fnotifystat स्थापित करना और चलाना:

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

आपको ऐसी प्रक्रिया दिखाई देगी जो खुले / करीब / पढने / लिखने की गतिविधि को निम्न की तरह कर रही है:

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
पोस्टस्क्रिप्ट: मैं इस उपकरण का लेखक हूं: kernel.ubuntu.com/~cking/fnotifystat
कॉलिन इयान किंग

1
और आप पहले भी हैं जिन्होंने प्रश्न का उत्तर दिया (हालांकि अब वह दिखाई नहीं देता है)। यह एक अच्छा उपकरण है।
adrhc

एक बहुत ही उपयोगी उपयोगिता के लिए +1। समय के साथ-साथ मैं इसे /tmp/...अधिक जटिल DBUS के बजाय डेमन और उपयोगकर्ता स्थान के बीच IPC के लिए फाइल बनाने की अपनी अगली परियोजना की निगरानी के लिए उपयोग कर सकता हूं ।
विनयुनुच्स

8

निर्धारित करें कि कौन सा प्रोग्राम / प्रक्रिया फाइलों को छू रही है

आप उपकरण का उपयोग कर सकते हैं जैसे कि lsofयह निर्धारित करने के लिए कि कौन सी प्रक्रिया और बायनेरिज़ कौन सी फाइलों को छू / खोल रही हैं। यदि फ़ाइलें बार-बार बदलती हैं, तो यह परेशानी हो सकती है, इसलिए आप इसके बजाय आपको सूचित करने के लिए एक घड़ी सेट कर सकते हैं:

$ sudo fnotifystat -i /tmp

कभी-कभी, उपयोगकर्ता या समूह के मालिक को देखने से आपको एक अच्छा संकेत मिलता है (यानी:) ls -lsha


/tmpडिस्क के बजाय रैम में डालें

यदि आप चाहें, तो आप अपनी /tmpनिर्देशिका को रैम में डाल सकते हैं । आपको यह निर्धारित करना होगा कि क्या यह उपलब्ध रैम पर आधारित एक स्मार्ट चाल है, साथ ही साथ पढ़ने / लिखने का आकार और आवृत्ति भी है।

$ 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)

यदि आपके पास पर्याप्त रैम है, तो यह आपके एसएसडी की लंबी उम्र, साथ ही साथ आपके सिस्टम की गति दोनों के लिए बहुत अच्छी बात मानी जा सकती है। यदि आप अधिक आक्रामक होने के लिए tmpreaper(कभी-कभी tmpwatch) ट्वीक करते हैं, तो आप इसे कम मात्रा में रैम के साथ भी पूरा कर सकते हैं ।


6

एक SSD पर बहुत अवांछनीय है

आपने के साथ अपने प्रश्न को टैग किया है , इसलिए यह मेरे लिए बिल्कुल स्पष्ट नहीं है कि यह SSD से कैसे संबंधित है। Tmpfs एक इन-मेमोरी (या अधिक सटीक, इन-ब्लॉक-कैश) फाइल सिस्टम है, इसलिए यह कभी भी भौतिक डिस्क से नहीं टकराएगा।

इसके अलावा, यहां तक ​​कि अगर आपके पास आपके /tmpफाइल सिस्टम के लिए एक भौतिक बैकिंग स्टोर था , जब तक कि आपके पास केवल एक किलो किलोबाइट रैम के साथ एक प्रणाली नहीं होती है, तो वे अल्पकालिक फाइलें डिस्क को कभी नहीं मारेंगी, सभी ऑपरेशन कैश में होंगे।

इसलिए, दूसरे शब्दों में, चिंता की कोई बात नहीं है क्योंकि आप tmpfs का उपयोग कर रहे हैं, और यदि आप नहीं थे, तब भी चिंता की कोई बात नहीं होगी।


मैं RAM में / tmp रखता हूँ इसलिए गलती से मैंने अपने वर्तमान fs प्रकार (tmpfs) के साथ टैग कर दिया। मैंने इसे अभी हटा दिया है, लेकिन मुझे लगता है कि आप उपयोगी हैं, इसलिए मेरे से 1 अप भी उपयोगी है।
adrhc

@ आधार: यदि आपकी /tmpरैम में है, तो इसका आपके एसएसडी से कोई लेना देना नहीं है, इसलिए यह न तो वांछनीय है और न ही अवांछनीय है, लेकिन वास्तव में पूरी तरह से असंबंधित है।
जोर्ग डब्ल्यू मित्तग

मैं सहमत हूँ, लेकिन सवाल यह है कि जब RAM में / tmp नहीं है। यह सिर्फ इतना हुआ कि मेरे पास रैम में / tmp था; फिर भी, समस्या ने मुझे परेशान कर दिया।
adrhc

0

लोग SSD लेखन धीरज के बारे में बहुत अधिक चिंता करते हैं। यह मानते हुए कि एक खाली फ़ाइल बनाना और हटाना हर सेकंड में 24 kB लिखता है, और लोकप्रिय सैमसंग 860 EVO 250 GB के लिए 150 TBW कल्पना का उपयोग करते हुए, पहनने में 193 साल लगते हैं!

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

Ext4 फाइल सिस्टम के लिए, लाइफटाइम राइट्स खोजने के लिए "ट्यून 2 एफएस-एल" का उपयोग करें। या, "smartctl -a" का उपयोग करें और Total_LBAs_Written की तलाश करें। मुझे हमेशा लगता है कि एसएसडी में बहुत सारी ज़िंदगी बची है।


सवाल यह है कि "क्या फाइलें बनाई गई हैं और क्यों? मैं इस व्यवहार को कैसे रोकूंगा?", आपका "जवाब" सवाल पर कैसे फिट बैठता है?
बुम्मी

हालांकि सीधे सवाल का जवाब नहीं दे रहा हूं, मुझे यह जानकारी उपयोगी लगती है, हालांकि उन आदेशों का उपयोग करने के तरीके से संबंधित बहुत सटीक नहीं है। जैसे मुझे ट्यून 2 एफएटी tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1
16

0

आप गलत /dev/nvme0...नाम का उपयोग कर रहे थे :

$ 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.

सही प्रारूप है:

$ 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

जहाँ तक NVMe SSD का जीवनकाल है:

$ 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

यहां प्रमुख पंक्ति यह है:

percentage_used                     : 0%

18 महीने के उपयोग के बाद एसएसडी प्रतिशत का उपयोग 0% है। यदि 3 साल के उपयोग के बाद यह 1% हिट करता है तो मुझे पता है कि एसएसडी 300 साल तक चलेगा।

जाहिर है कि यह जवाब अन्य टिप्पणियों का जवाब देने के लिए टिप्पणी अनुभाग में फिट नहीं होगा।


ट्यून 2 एफएस आउटपुट से कौन सा भाग एसएसडी के जीवन काल से संबंधित है?
adrhc

@adrhc मैं फ्रेजर गन के उत्तरtune2fs पर आपकी टिप्पणी के जवाब में कॉल करने का सही तरीका दिखा रहा था जिसमें त्रुटि संदेश दिखाई दे रहा था।
विनयुनुच्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.