GNU/Linux >> Belajar Linux >  >> Linux

Mengapa saya tidak dapat membuat tautan keras dari file perangkat selain direktori/dev?

Tapi saya hanya bisa membuat tautan keras di direktori /dev dan itu tidak mungkin di direktori lain.

Seperti yang ditunjukkan oleh pesan kesalahan, tidak mungkin membuat tautan keras di sistem file yang berbeda; Anda hanya dapat membuat tautan lunak (simbolis).

Misalnya, jika /home Anda berada di partisi yang berbeda dari partisi root Anda, Anda tidak akan dapat melakukan hard link /tmp/foo ke /home/user/ .

Sekarang, seperti yang ditunjukkan oleh @RichardNeumann, /dev biasanya dipasang sebagai sistem file devtmpfs. Lihat contoh ini:

[[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

Oleh karena itu, Anda hanya dapat membuat tautan keras ke file di /dev dalam /dev .


Tautan keras tidak dapat digunakan untuk mencapai apa yang Anda inginkan, karena tautan keras tidak berfungsi di antara sistem file.

Namun, Anda dapat mencapai apa yang Anda inginkan dengan mknod perintah.

  1. Jalankan ls -l /dev/devicefile . Anda akan melihat output seperti ini:

    crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
    
  2. Catat angka pada kolom ukuran (1, 9 ).
  3. Jalankan perintah mknod /path/to/destination c 1 9 (menggantikan nilai yang Anda inginkan).

Mengapa ini berhasil?

File perangkat adalah tautan keras yang efektif ke file abstrak yang diimplementasikan oleh kernel atau driver kernel. Meskipun Anda tidak dapat membuat tautan keras ke objek sistem file dari sistem file lain, ini bukanlah objek sistem file, jadi, dengan mengetahui nomor referensi mayor dan minornya, Anda dapat membuat referensi ke objek tersebut dari sistem file apa pun.


Tautan keras hanya membuat entri lain dalam direktori, menunjuk ke file (di mana file adalah file seperti hal, seperti direktori). Oleh karena itu, tautan keras tidak dapat mereferensikan file di sistem file lain.

Tautan lunak adalah teman Anda dalam hal ini. Gunakan ln -s . Tautan lunak dapat melintasi sistem file, dan bahkan dapat menunjuk ke sesuatu yang tidak ada.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Mengapa Rm Dapat Menghapus File Read-only?

  3. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  1. Cara memetakan perangkat /dev/sdX dan /dev/mapper/mpathY dari perangkat /dev/dm-Z

  2. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  3. Mengapa saya tidak bisa membuat file lebih besar dari 2 GB di Linux?

  1. Mengapa meletakkan hal-hal selain /home ke partisi terpisah?

  2. Mengapa dd from /dev/random memberikan ukuran file yang berbeda?

  3. /dev/sdb:Tidak ada file atau direktori seperti itu (tetapi /dev/sdb1 dll. ada)