Где установлен мой / tmp?

9
$ df /tmp
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/root      480589544 42607368 413546516  10% /

$ ls /dev/root
ls: cannot access /dev/root: No such file or directory

Я хотел проверить, находится ли моя установка Debian по умолчанию /tmpв оперативной памяти или на диске, но теперь я совершенно сбит с толку. Почему несуществующее устройство будет указано как тип файловой системы? Что значит "установлен на /"?

Вот вывод mount:

/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=811520k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=1013960,mode=755)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1623020k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
none_debugfs on /sys/kernel/debug type debugfs (rw,relatime)
cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,size=12k)
cgmfs on /run/cgmanager/fs type tmpfs (rw,relatime,size=100k,mode=755)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/run/cgmanager/agents/cgm-release-agent.systemd,name=systemd)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=811520k,mode=700,uid=1000,gid=1000)
Vorac
источник
1
Выход кажется очень спартанским. Не могли бы вы опубликовать вывод mountкоманды?
Руи Ф Рибейро
/tmpэто точка монтирования Вопрос, который вы хотите задать: «Какой раздел / устройство смонтирован в / tmp?»
Уильям Перселл
И формулировка таким образом (я думаю) проясняет ваше замешательство. /dev/rootустройство смонтировано в корне файловой системы ( /)
Уильям Перселл,

Ответы:

8

Если вывод такой, как указано выше, он находится на жестком диске. Вы можете получить /dev/root, посмотрев на командную строку ядра:

$ cat /proc/cmdline | grep root
BOOT_IMAGE=/boot/vmlinuz-3.19.0-32-generic root=UUID=0cde5cf9-b15d-4369-b3b1-4405204fd9ff ro

Так /dev/rootэквивалентно разделу с UUID, напечатанным выше; ваши будут отличаться. Чтобы посмотреть этот UUID, используйте

$ sudo blkid
/dev/sda1: UUID="0cde5cf9-b15d-4369-b3b1-4405204fd9ff" TYPE="ext4" 
/dev/sda5: UUID="37bc6a9c-a27f-43dc-a485-5fb1830e1e42" TYPE="swap" 
/dev/sdb1: UUID="177c3cec-5612-44a7-9716-4dcba27c69f9" TYPE="ext4" 

Как видите, соответствующий раздел есть /dev/sda1. Итак, вы /tmpна жестком диске. Еще одна дешевая распродажа df- это точка монтирования /. Если вы смонтированы /tmpв ОЗУ, вы получите

$ df /tmp
Filesystem     1K-blocks  Used Available Use% Mounted on
tmpfs            3640904    20   3640884   1% /tmp
s3lph
источник
7

Выход df /tmpдает ответ: «Установленный на» списках столбцов /, поэтому /tmpявляется частью файловой системы, смонтировано на /, т.е. корневой файловой системы. Это не отдельная файловая система.

Чтобы быть более точным, вы должны выполнить df /tmp/: if /tmpявляется символической ссылкой, затем df /tmpперечисляет информацию о местонахождении символической ссылки, тогда как df /tmp/перечисляет информацию о целевом каталоге.

Упоминание /dev/rootв колонке устройства связано с тем, что оно указано в /etc/mtab. Вы можете найти реальное устройство, посмотрев в /proc/mountsс </proc/mounts awk '$2 == "/" {print $1}'или findmnt /.

Жиль "ТАК - перестань быть злым"
источник
+1 за df /tmpи findmnt /.
Ахан
0

df /path/to/target показывает, какая файловая система содержит целевую папку, общее количество байт, использованных байтов, доступный процент и точку монтирования.

В примере, задокументированном в этом вопросе, папка /tmp/находится в файловой системе с меткой root, которая находится на блочном устройстве /dev/sda1.

mount | grep targetпокажет любые файловые системы, содержащие имя цели, как указано в /etc/mtab. Если целевая папка не является отдельной файловой системой, mount не предоставит вам точную информацию напрямую.

Однако, чтобы узнать, какое устройство содержится /tmp/, используйте dfдля получения имени файловой системы ( /dev/root) и точки монтирования ( /), а затем mountвыполните поиск в выходных данных, чтобы найти устройство или точку монтирования и определить, какое блочное устройство содержит эту файловую систему.

Важно различать устройство и файловую систему, потому что не всегда существует соотношение 1: 1. Блочное устройство может быть разделено, и каждый раздел будет иметь файловую систему. Каждый раздел может иметь свой тип файловой системы. Каждый раздел имеет свое уникальное имя и UUID и может иметь псевдонимы.

Xalorous
источник
-2

Чтобы проверить это, mountболее уместно. Вы можете попробовать это, и grep выводит на 'tmp'

Пример :

$  mount | grep tmp
tmpfs on /dev/shm type tmpfs ...

Здесь говорится, что мой раздел /dev/shmмонтируется с помощью tmpfs (временное хранилище файлов, т.е. в оперативной памяти). Если ваш раздел не смонтирован с помощью tmpfs, значит, он не находится в энергозависимой памяти.

fduff
источник
Я ожидал увидеть tmpfs on /tmp.
Vorac
Напротив, dfдает информацию напрямую, тогда mount | grepкак не дает информацию надежно (она пропустит случаи, когда /tmpесть символическая ссылка, и она не будет работать для чего-то подобного, /var/tmpтак как /varили /var/tmpможет быть точкой монтирования).
Жиль "ТАК - перестань быть злым"
mountв основном печатает содержимое файла mtab ( /etc/mtab). Это показывает только смонтированные файловые системы. Если целевая папка не является отдельной файловой системой, вы не найдете ее с помощью mount. Однако, если вы используете df /path/to/target, он точно скажет вам, какое блочное устройство содержит целевую папку, и где это устройство смонтировано. Затем вы можете использовать mountдругие инструменты для определения типа файловой системы и другой информации. В примере с OP ваше предложение не будет показывать, где смонтирована папка / tmp /, так как его / tmp / не отдельная файловая система, а часть /.
Ксалори