Текущий рабочий каталог является собственностью каждого процесса, а не пользователей.
В 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
(для запуска команды с привилегиями суперпользователя )не требуется, поскольку доступ к этой информации там не ограничен.
Удаление каталогов (независимо от того, где они смонтированы ), обычно можно выполнить с помощью 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
, чтобы быть уверенным.