Как можно перейти к местоположению, которое не отображается через «lsblk»?

Текущий рабочий каталог является собственностью каждого процесса, а не пользователей.

В Linux вы можете получить текущий рабочий каталог процесса с идентификатором $pid, выполнив readlink()для /proc/$pid/cwd, например, с помощью команды readlink/ realpathили :a/ :A/ :Pквалификаторы glob в zsh. Если вы не суперпользователь, это работает только для ваших собственных процессов, хотя (текущий рабочий каталог, например, какой другой файл, к которому в данный момент обращается процесс, является потенциально конфиденциальной информацией ).

$ ps
  PID TTY          TIME CMD
 9467 pts/1    00:00:00 zsh
14074 pts/1    00:00:00 ps
$ readlink /proc/9467/cwd
/usr/local
$ printf '%s\n' /proc/9467/cwd(:P)
/usr/local

Более портативно, вы можете использоватьlsof:

$ lsof -ap 9467 -d cwd
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
zsh     9467 chazelas  cwd    DIR  253,0     4096 786604 /usr/local

Затем вы можете комбинировать его с -u userвместо -p pid, чтобы получить cwd всех процессов, запущенных от имени этого пользователя:

sudo lsof -au user -d cwd

В некоторых системах, таких как FreeBSD,sudo(для запуска команды с привилегиями суперпользователя )не требуется, поскольку доступ к этой информации там не ограничен.

0
26.05.2020, 23:28
1 ответ

Удаление каталогов (независимо от того, где они смонтированы ), обычно можно выполнить с помощью rm -rf foo. Если он принадлежит root, вам может понадобиться sudo.

Помимо этого, я думаю, стоит упомянуть кое-что о точках монтирования. lsblkпоказывает, где в вашей файловой системе существуют определенные диски/разделы. Если что-то не указано там, это обычно является частью родителя. В вашем случае /dataможет быть смонтирован под /. Но это не обязательно правда.

Используйте команду mount, чтобы получить полный список того, что смонтировано. Вы увидите в списке свои точки монтирования lsblk, но вы также увидите точки монтирования диска, отличные от -.

Вот пример того, что вы можете увидеть. (Я добавил отступы, чтобы было легче читать):

user ~ $ mount
/dev/sda1       on /     type ext4
/dev/sda2       on /home type ext4
sysfs           on /sys  type sysfs
proc            on /proc type proc
tmpfs           on /run  type tmpfs
/tmp/debian.iso on /mnt  type iso9660

В данном случае у нас есть две точки монтирования диска -. Вы увидите их в lsblk. Это означает, что все на /находится на /dev/sda1, если что-то не смонтировано более конкретно. Например, /homeнаходится на /dev/sda2.

tmpfs— следующий по простоте объяснения тип. Это файловая система, которая существует в вашей оперативной памяти. Если вы выключите свою машину :пуф, она исчезнет. Запись временных файлов на монтирование tmpfs, например /run, будет выполняться быстрее, чем запись на диск, особенно на не -твердые -диски с насыщением.

У вас может быть некоторый опыт работы с файлами iso. Будучи подростком, я имел при себе несколько перезаписываемых компакт-дисков на случай, если мне понадобится «смонтировать» iso. Я бы записал его на компакт-диск, а затем прочитал компакт-диск, чтобы просмотреть файловую систему. Но вы также можете просто mount debian.iso /mntпросмотреть его в своей системе.Теперь этот конкретный тип файла -отображается как каталог в вашей файловой системе.

Типы

sysfsи proc— это специальные точки монтирования, используемые ядром. Вы можете просмотреть /proc, как если бы это была файловая система, но информация там на самом деле является информацией о текущих процессах, запущенных на вашем компьютере. Ничего из этого нет на физическом диске.

Чтобы ответить на ваш вопрос напрямую:

Why /data doesn't show up through lsblk commnad?

/data- это либо каталог на /dev/sda2, либо какой-то другой тип, будь то iso, tmpfsили что-то еще. Проверьте mount, чтобы быть уверенным.

2
18.03.2021, 23:32

Теги

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