GNU/Linux >> Znalost Linux >  >> Linux

Proč nemohu vytvořit pevný odkaz ze souboru zařízení v jiném adresáři než /dev?

Ale pevný odkaz jsem mohl vytvořit pouze v adresáři /dev a v jiných adresářích to nebylo možné.

Jak ukazuje chybová zpráva, není možné vytvořit pevný odkaz mezi různými systémy souborů; můžete vytvářet pouze měkké (symbolické) odkazy.

Pokud je například vaše /home je v jiném oddílu než váš kořenový oddíl, nebudete moci pevně propojit /tmp/foo do /home/user/ .

Nyní, jak zdůraznil @RichardNeumann, /dev je obvykle připojen jako souborový systém devtmpfs. Viz tento příklad:

[[email protected] ~]$ df
Filesystem                      1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos_centos7-root  46110724 3792836  42317888   9% /
devtmpfs                          4063180       0   4063180   0% /dev
tmpfs                             4078924       0   4078924   0% /dev/shm
tmpfs                             4078924    9148   4069776   1% /run
tmpfs                             4078924       0   4078924   0% /sys/fs/cgroup
/dev/sda1                         1038336  202684    835652  20% /boot
tmpfs                              815788      28    815760   1% /run/user/1000

Proto můžete vytvářet pouze pevné odkazy na soubory v /dev v rámci /dev .


Pevný odkaz nelze použít k dosažení toho, co chcete, protože pevné odkazy mezi systémy souborů nefungují.

S mknod však můžete dosáhnout toho, co chcete příkaz.

  1. Spusťte ls -l /dev/devicefile . Měli byste vidět výstup jako tento:

    crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
    
  2. Poznamenejte si číslo ve sloupci velikosti (1, 9 ).
  3. Spusťte příkaz mknod /path/to/destination c 1 9 (nahrazením požadovaných hodnot).

Proč to funguje?

Soubory zařízení jsou v podstatě pevné odkazy na abstraktní soubor implementovaný jádrem nebo ovladači jádra. I když nemůžete vytvořit pevné odkazy na objekty souborového systému z jiného souborového systému, nejedná se o objekty souborového systému, a tak, když znáte jejich hlavní a vedlejší referenční čísla, můžete na ně vytvořit odkaz z jakéhokoli systému souborů.


Pevné odkazy pouze vytvoří další položku v adresáři, ukazující na soubor (kde soubor je věc podobná souboru, například adresář). Proto pevné odkazy nemohou odkazovat na soubor v jiném souborovém systému.

Soft-links jsou v tomto případě vaším přítelem. Použijte ln -s . Softlinks mohou procházet napříč souborovými systémy a mohou dokonce ukazovat na něco, co tam není.


Linux
  1. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Jak namapovat zařízení /dev/sdX a /dev/mapper/mpathY ze zařízení /dev/dm-Z

  1. cp:nelze vytvořit adresář:Žádný takový soubor nebo adresář

  2. DD z /dev/zero do /dev/null...co se vlastně stane

  3. Proč v systému Linux nemohu vytvářet soubory větší než 2 GB?

  1. Proč dávat věci jiné než /home do samostatného oddílu?

  2. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp