Случайно перемещенный `/ tmp` - замены не сохранятся

Я сделал sudo mv / tmp / var / lib / apt / lists , не понимая, что он переместит всю папку, а не только ее содержимое.

С тех пор я делаю (как предлагалось в Случайно удалила папку tmp )

sudo mkdir -m 1777 /tmp

при запуске, но через некоторое время она снова исчезает. Что я могу сделать? как я могу это отладить?

Похоже, что / tmp переименован в /snapshot.0 (или с более высоким индексом, если другие снимки уже существуют).

Перезапуск не решает эту проблему. Но завершение работы без / tmp тоже не проблема, при запуске появляется новый / tmp . Однако через 4 минуты он переименовывается в другой снимок.

Что происходит без / tmp:

  • нет завершения табуляции в bash (иногда)
  • не запускаются программы, такие как Chrome-браузер и системный монитор
  • apt-get, похоже, также полагается на / tmp

В настоящее время я выполняю sudo mv /snapshot.0 / tmp всякий раз, когда / tmp исчезает.

Эксперименты:

Я запускаю компьютер (как мы увидим, / tmp все еще там, по-видимому, он пережил перезапуск) и открываю терминал, на котором выполняю:

$ while true; do 
   t=$(date +%H:%M:%S);      #timestamp as hour minute seconds
   date;ls -lt / | head -3;  print out date and most recent folders in /
   ls -l /tmp        > ~/Desktop/ls.tmp.log.${t}; 
   ls -l /snapshot.0 > ~/Desktop/ls.snap.log.${t}; 
   sleep 60; 
done;

Я больше ничего не делаю! войдите в терминал:

Di 23. Jun 19:44:12 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:44 tmp
drwxr-xr-x  34 root root       1000 Jun 23 19:42 run
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:45:12 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:44 tmp
dr-xr-xr-x  13 root root          0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:46:12 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:44 tmp
dr-xr-xr-x  13 root root          0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:47:12 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:44 tmp
dr-xr-xr-x  13 root root          0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:48:12 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:44 tmp
dr-xr-xr-x  13 root root          0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:49:13 CEST 2020
total 2097264
drwxrwxrwt  18 root root       4096 Jun 23 19:48 snapshot.0
dr-xr-xr-x  13 root root          0 Jun 23 19:44 sys
ls: cannot access '/tmp': No such file or directory

Итак, в течение 5 минут / tmp был переименован в /snapshot.0.

нет разницы между ls.tmp.log.19: 4 [4-8]: 12 Также нет разницы между ls.tmp.log.19:48:12 и ls.snap.log.19: 49: 13 , поэтому он не может быть содержимым / tmp .

Прогресс:

Пока я надеялся на решение, которое сделает вещи такими, какими они были раньше (без переустановки системы), предложение Гиоргоса Саридакиса символических ссылок действительно работает помогает много. Однако я все еще не могу запустить системный монитор:

$ gnome-system-monitor 
cannot create temporary directory for the root file system: Permission denied

, несмотря на то, что у меня установлены все разрешения:

$ ls -lt /
total 2097264
drwxrwxrwt   8 root root       4096 Jun 27 15:21 snapshot.0
-rw-r--r--   1 root root          0 Jun 27 15:10 lifesign
...
lrwxrwxrwx   1 root root         11 Jun 23 22:12 tmp -> /snapshot.0

Думаю, мне все-таки придется написать демона ...

Я написал сценарий:

#!/bin/bash
while true;
do
    if [ ! -d "/tmp" ];
    then mv /snapshot.0  /tmp 2>> /home/t/tmp.rename.bg.err;
     date >> /home/t/tmp.rename.bg.log;
    fi;
    sleep 10;
done

то есть выполняется с

sudo bash tmp.rename.sh &

после входа в систему. Это не идеально, но мне пока не нужно писать демонов.

0
задан 17 June 2020 в 00:22

2 ответа

Просто удалите создать один после загрузки и сделайте новый каталог tmp следующим образом:

sudo mkdir -m 1777 /tmp
chown root:root /tmp

здесь -m называется режимом создания каталога,, который Установите для битов разрешений на доступ к файлам вновь созданного каталога указанное значение режима.

После выполнения приведенной выше команды, теперь выполните команду ниже, чтобы проверить разрешения каталога.

ls -ld /tmp

и он должен выглядеть следующим образом

Screenshot

0
ответ дан 22 June 2020 в 01:31

Похоже, вы наткнулись на постоянную часть ядра, я считаю, что это не может быть решено должным образом.

Если нет желания переустанавливать всю систему, почему бы вам не попробовать создать символическую (или жесткую) ссылку с /snapshot.0 на /tmp:

sudo ln -s /snapshot.0 /tmp 

Если это не сработает, я бы сделайте небольшой демон, чтобы постоянно проверять, есть ли /tmp, и создавать его, если он не найден (возможно, с разрешениями блокировки).

Трудная ситуация, сочувствую :)

2
ответ дан 23 June 2020 в 18:32

Другие вопросы по тегам:

Похожие вопросы: