tmp 디렉토리에서 1 초마다 작성되고 삭제 된 파일


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의 일반적인 Ubuntu 18.10에 관한 것입니다. 이것은 거의 새로 설치되었습니다. 서버 소프트웨어 (nginx, mysql, php7.2-fpm)를 추가했지만 닫은 소프트웨어에서도 문제가 지속됩니다.

파일은 무엇이며 왜 생성됩니까? 이 행동을 어떻게 막을 수 있습니까? SSD 에서 매우 바람직하지 않은

감사합니다!

최신 정보

RAM에 / tmp가없는 경우 ( tmpfs 없음 ) 에 관한 질문입니다 .
유죄 소프트웨어는 x2goserver.service이며 그렇지 않은 경우 반드시 있어야합니다 .


2
"SSD에서 매우 바람직하지 않은 것"이 설명하십시오? tmpfs로 / tmp가 없습니까? 왜 안돼? 왜 메모리에있는 파일이 SSD를 손상시킬까요?
Rinzwind

2
/ tmp는 반드시 tmpfs 일 필요는 없으므로 유효한 질문입니다.
Colin Ian King

2
그렇습니다. 적어도 디렉토리 메타 데이터가 캐시에서 뜨겁게 유지되는 대신 실제로 디스크에 다시 쓰여지는 경우 SSD에서는 바람직하지 않습니다. 이것이 /tmp일반적으로 tmpfs (pagecache를 백업 저장소로 사용하는 램 디스크 파일 시스템)에있는 이유 입니다. 질문에 tmpfs 태그를 지정 했으므로 SSD에 대한 귀하의 의견이 적절하지 않은 것 같습니다.
Peter Cordes

1
위대한-그것은 필수입니다
adrhc

2
@PeterCordes "Uss." /tmp는 " 정상적으로 tmpfs에 있습니다"라는 문장 이 일반 우분투 사용자에게 유효 하다는 것을 확신하지 못합니다 -기본 우분투 설치를 사용하는 것만 /tmp으로 디스크에 있고 OP는 적절한 fstab 항목을 생성하여 tmpfs
Charles Green

답변:


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
Postscript : 저는이 도구의 저자입니다 : kernel.ubuntu.com/~cking/fnotifystat
Colin Ian King

1
또한 귀하는 질문에 가장 먼저 답변 한 사람입니다 (더 이상 눈에 띄지 않음). 그건 그렇고 좋은 도구입니다.
adrhc

매우 편리한 유틸리티 +1. /tmp/...더 복잡한 DBUS 대신 데몬과 사용자 공간간에 IPC 용 파일을 작성하는 다음 프로젝트를 모니터링하는 데 사용할 수 있기 때문에시기 적절 합니다.
WinEunuuchs2Unix

8

파일을 건 드리는 프로그램 / 프로세스 결정

lsof어떤 프로세스와 바이너리가 어떤 파일을 건드 리거나 열고 있는지 확인하는 등의 도구를 사용할 수 있습니다 . 파일이 자주 변경되면 문제가 될 수 있으므로 대신 알림을 설정하도록 시계를 설정할 수 있습니다.

$ sudo fnotifystat -i /tmp

때로는 단순히 사용자 또는 그룹 소유자를 보면 좋은 힌트를 제공 할 수 있습니다 (예 :) ls -lsha.


/tmp디스크 대신 RAM에 넣 습니다

원하는 경우 /tmp디렉토리를 RAM에 넣을 수 있습니다 . 사용 가능한 RAM과 읽기 / 쓰기의 크기 및 빈도에 따라 스마트 이동인지 확인해야합니다.

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

RAM이 충분하면 SSD의 수명과 시스템 속도 모두에 매우 좋은 방법으로 간주 할 수 있습니다. 더 공격적이되도록 tmpreaper(때로는 tmpwatch) 조정하면 더 적은 양의 RAM으로이 작업을 수행 할 수도 있습니다.


6

SSD에서 매우 바람직하지 않은 것

귀하의 질문에 태그를 지정 했으므로 이것이 SSD와 어떤 관련이 있는지는 분명하지 않습니다. Tmpfs는 메모리 내 (또는보다 정확하게는 블록 내 캐시) 파일 시스템이므로 실제 디스크에 절대 도달하지 않습니다.

또한 /tmp파일 시스템에 대한 실제 백업 저장소가 있더라도 몇 킬로바이트의 RAM이있는 시스템이없는 한, 수명이 짧은 파일은 디스크에 닿지 않으며 모든 작업은 캐시에서 수행됩니다.

다시 말해서, tmpfs를 사용하고 있기 때문에 걱정할 것이 없습니다. 그렇지 않은 경우에는 걱정할 것이 없습니다.


/ tmp를 RAM에 유지하므로 실수로 현재 fs 유형 (tmpfs)으로 태그를 지정했습니다. 나는 지금 그것을 제거했지만 나는 당신이 너무 유용하다고 생각합니다.
adrhc

@adrhc : /tmpRAM에 있으면 SSD와 관련이 없으므로 바람직하지 않거나 바람직하지 않지만 실제로는 완전히 관련이 없습니다.
Jörg W Mittag

동의하지만 RAM에 / tmp가없는 경우에 대한 질문입니다. RAM에 / tmp가있는 것은 방금 발생했습니다. 그래도 문제는 흥미로웠다.
adrhc

0

사람들은 SSD 쓰기 내구성에 대해 너무 걱정합니다. 빈 파일을 생성 및 삭제하면 초당 24kB가 기록되고 인기있는 Samsung 860 EVO 250GB에 대해 150TBW 사양을 사용한다고 가정하면 마모는 193 년이 걸립니다!

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

ext4 파일 시스템의 경우 "tune2fs -l"을 사용하여 수명 쓰기를 찾으십시오. 또는 "smartctl -a"를 사용하고 Total_LBAs_Written을 찾으십시오. 나는 항상 SSD에 남은 수명이 많다는 것을 알고 있습니다.


문제는 "어떻게 파일이 생성되고 왜?이 동작을 어떻게 중단합니까?"입니다. "답변"이 질문에 어떻게 맞습니까?
bummi

질문에 직접 대답하지는 않지만이 정보는 해당 명령을 사용하는 방법과 관련하여 매우 정확하지는 않지만 유용합니다. 예를 들어 tune2fs를 사용하면 얻을 수 tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1있습니다.
adrhc

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 개월 사용 후 SSD 사용률은 0 %입니다. 3 년 사용 후 1 %에 도달하면 SSD가 300 년 동안 지속될 것이라는 것을 알고 있습니다.

분명히이 답변은 다른 의견에 답하기 위해 의견 섹션에 적합하지 않습니다.


tune2fs 출력의 어떤 부분이 SSD의 수명과 관련이 있습니까?
adrhc

@adrhc 오류 메시지를 표시하는 Fraser Gunn의 답변tune2fs 에 대한 귀하의 의견에 대한 응답으로 올바른 호출 방법을 보여주었습니다.
WinEunuuchs2Unix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.