ຄໍາອະທິບາຍກ່ຽວກັບ“ ທຸກຢ່າງແມ່ນເອກະສານ” ແລະປະເພດຂອງແຟ້ມເອກະສານໃນ Linux


ຖ້າທ່ານເປັນຄົນ ໃໝ່ ສຳ ລັບ Linux, ຫລືເຄີຍໃຊ້ມັນເປັນເວລາສອງສາມເດືອນ, ທ່ານຕ້ອງໄດ້ຍິນຫລືອ່ານ ຄຳ ຖະແຫຼງການຕ່າງໆເຊັ່ນ "ໃນ Linux, ທຸກຢ່າງແມ່ນເອກະສານ".

ນັ້ນແມ່ນຄວາມຈິງທີ່ຈິງເຖິງແມ່ນວ່າມັນເປັນພຽງແນວຄິດທົ່ວໄປ, ໃນ Unix ແລະອະນຸພັນຂອງມັນເຊັ່ນ Linux, ທຸກຢ່າງຖືວ່າເປັນເອກະສານ. ຖ້າບາງສິ່ງບາງຢ່າງບໍ່ແມ່ນເອກະສານ, ຫຼັງຈາກນັ້ນມັນຕ້ອງໄດ້ເຮັດວຽກເປັນຂັ້ນຕອນໃນລະບົບ.

ເພື່ອເຂົ້າໃຈສິ່ງນີ້, ໃຫ້ຍົກຕົວຢ່າງ ຈຳ ນວນພື້ນທີ່ໃນລະບົບຮາກ (/) ຮາກຂອງທ່ານແມ່ນຖືກໃຊ້ເລື້ອຍໆໂດຍປະເພດ Linux ຂອງໄຟລ໌ຕ່າງໆ. ເມື່ອທ່ານສ້າງເອກະສານຫລືໂອນເອກະສານເຂົ້າໃນລະບົບຂອງທ່ານ, ມັນຄອບຄອງພື້ນທີ່ບາງສ່ວນໃນແຜ່ນດິດແລະມັນຖືວ່າເປັນຮູບແບບສະເພາະ (ປະເພດເອກະສານ).

ແລະລະບົບ Linux ກໍ່ບໍ່ແຕກຕ່າງລະຫວ່າງແຟ້ມເອກະສານແລະໄດເລກະທໍລີ, ແຕ່ໄດເລກະທໍລີເຮັດວຽກ ໜຶ່ງ ທີ່ ສຳ ຄັນ, ນັ້ນແມ່ນການເກັບຮັກສາເອກະສານອື່ນໆເປັນກຸ່ມໃນຊັ້ນ ລຳ ດັບເພື່ອໃຫ້ສະຖານທີ່ງ່າຍ. ທຸກໆສ່ວນປະກອບຂອງຮາດແວຂອງທ່ານແມ່ນຕົວແທນເປັນແຟ້ມແລະລະບົບສື່ສານກັບພວກມັນໂດຍໃຊ້ແຟ້ມເຫຼົ່ານີ້.

ແນວຄວາມຄິດດັ່ງກ່າວແມ່ນ ຄຳ ອະທິບາຍທີ່ ສຳ ຄັນກ່ຽວກັບຄຸນສົມບັດອັນຍິ່ງໃຫຍ່ຂອງ Linux ເຊິ່ງແຫຼ່ງຂໍ້ມູນການປ້ອນຂໍ້ມູນ/ຜົນຜະລິດຕ່າງໆເຊັ່ນ: ເອກະສານ, ໄດເລກະທໍລີຂອງທ່ານ (ໂຟນເດີຕ່າງໆໃນ Mac OS X ແລະ Windows), ຄີບອດ, ຈໍພາບ, ຈໍພາບ, ຮາດດິດ, ສື່ທີ່ຖອດອອກໄດ້, ເຄື່ອງພິມ, ໂມເດັມ, ເສມືນ ຢູ່ປາຍທາງແລະຍັງມີລະຫວ່າງຂະບວນການແລະການສື່ສານເຄືອຂ່າຍແມ່ນກະແສຂອງໄບຕ໌ທີ່ ກຳ ນົດໂດຍພື້ນທີ່ຂອງລະບົບແຟ້ມ.

ຂໍ້ໄດ້ປຽບທີ່ສັງເກດໄດ້ຂອງທຸກຢ່າງທີ່ເປັນເອກະສານແມ່ນວ່າເຄື່ອງມື, ເຄື່ອງໃຊ້ໄຟຟ້າແລະເອກະສານ Linux ທີ່ ກຳ ນົດໄວ້ກໍ່ສາມາດ ນຳ ໃຊ້ໄດ້ກັບຊັບພະຍາກອນການປ້ອນຂໍ້ມູນ/ຜົນຜະລິດຂ້າງເທິງ.

ເຖິງແມ່ນວ່າທຸກສິ່ງທຸກຢ່າງໃນ Linux ແມ່ນເອກະສານ, ແຕ່ມີເອກະສານພິເສດບາງຢ່າງທີ່ມີຫຼາຍກ່ວາພຽງແຕ່ເອກະສານ ສຳ ລັບເຕົ້າຮັບຍົກຕົວຢ່າງແລະທໍ່ຊື່.

ປະເພດຂອງເອກະສານທີ່ແຕກຕ່າງກັນໃນ Linux ແມ່ນຫຍັງ?

ໃນ Linux ມີພື້ນຖານສາມປະເພດຂອງແຟ້ມ:

<

  • ທຳ ມະດາ/ແຟ້ມປົກກະຕິ
  • ເອກະສານພິເສດ
  • ລາຍຊື່ໄດເລກະທໍລີ
  • ເຫຼົ່ານີ້ແມ່ນຂໍ້ມູນໄຟລ໌ບັນຈຸຂໍ້ຄວາມ, ຂໍ້ມູນຫລື ຄຳ ແນະ ນຳ ຂອງໂປແກຼມແລະມັນແມ່ນເອກະສານ ທຳ ມະດາທີ່ທ່ານສາມາດຄາດຫວັງໃນລະບົບ Linux ແລະພວກມັນປະກອບມີ:

    <

  • ເອກະສານທີ່ສາມາດອ່ານໄດ້
  • ເອກະສານຖານສອງ
  • ແຟ້ມຮູບພາບ
  • ແຟ້ມທີ່ບີບອັດແລະອື່ນໆ.
  • ເອກະສານພິເສດປະກອບມີດັ່ງຕໍ່ໄປນີ້:

    ໄຟລ໌ບລັອກ: ເຫຼົ່ານີ້ແມ່ນເອກະສານຂອງອຸປະກອນທີ່ໃຫ້ການປ້ອງກັນການເຂົ້າເຖິງສ່ວນປະກອບຂອງລະບົບຮາດແວ. ພວກເຂົາສະ ໜອງ ວິທີການສື່ສານກັບຄົນຂັບອຸປະກອນຜ່ານລະບົບແຟ້ມເອກະສານ.

    ລັກສະນະ ໜຶ່ງ ທີ່ ສຳ ຄັນກ່ຽວກັບໄຟລ໌ບລັອກແມ່ນພວກເຂົາສາມາດໂອນຂໍ້ມູນແລະຂໍ້ມູນໃຫຍ່ໆໃນເວລາ ກຳ ນົດ.

    ລາຍຊື່ຊັອກເກັດໄຟລ໌ບັອກໃນໄດເລກະທໍລີ:

    # ls -l /dev | grep "^b"
    
    brw-rw----  1 root disk        7,   0 May 18 10:26 loop0
    brw-rw----  1 root disk        7,   1 May 18 10:26 loop1
    brw-rw----  1 root disk        7,   2 May 18 10:26 loop2
    brw-rw----  1 root disk        7,   3 May 18 10:26 loop3
    brw-rw----  1 root disk        7,   4 May 18 10:26 loop4
    brw-rw----  1 root disk        7,   5 May 18 10:26 loop5
    brw-rw----  1 root disk        7,   6 May 18 10:26 loop6
    brw-rw----  1 root disk        7,   7 May 18 10:26 loop7
    brw-rw----  1 root disk        1,   0 May 18 10:26 ram0
    brw-rw----  1 root disk        1,   1 May 18 10:26 ram1
    brw-rw----  1 root disk        1,  10 May 18 10:26 ram10
    brw-rw----  1 root disk        1,  11 May 18 10:26 ram11
    brw-rw----  1 root disk        1,  12 May 18 10:26 ram12
    brw-rw----  1 root disk        1,  13 May 18 10:26 ram13
    brw-rw----  1 root disk        1,  14 May 18 10:26 ram14
    brw-rw----  1 root disk        1,  15 May 18 10:26 ram15
    brw-rw----  1 root disk        1,   2 May 18 10:26 ram2
    brw-rw----  1 root disk        1,   3 May 18 10:26 ram3
    brw-rw----  1 root disk        1,   4 May 18 10:26 ram4
    brw-rw----  1 root disk        1,   5 May 18 10:26 ram5
    ...
    

    ເອກະສານລັກສະນະ: ເຫຼົ່ານີ້ແມ່ນເອກະສານຂອງອຸປະກອນທີ່ໃຫ້ການເຂົ້າເຖິງ serial ທີ່ບໍ່ມີການຄວບຄຸມກັບສ່ວນປະກອບຮາດແວຂອງລະບົບ. ພວກເຂົາເຮັດວຽກໂດຍການສະ ໜອງ ວິທີການສື່ສານກັບອຸປະກອນຕ່າງໆໂດຍການໂອນຂໍ້ມູນ ໜຶ່ງ ຕົວເລກໃນແຕ່ລະຄັ້ງ.

    ລາຍຊື່ເຕົ້າຮັບແຟ້ມເອກະສານໃນໄດເລກະທໍລີ:

    # ls -l /dev | grep "^c"
    
    crw-------  1 root root       10, 235 May 18 15:54 autofs
    crw-------  1 root root       10, 234 May 18 15:54 btrfs-control
    crw-------  1 root root        5,   1 May 18 10:26 console
    crw-------  1 root root       10,  60 May 18 10:26 cpu_dma_latency
    crw-------  1 root root       10, 203 May 18 15:54 cuse
    crw-------  1 root root       10,  61 May 18 10:26 ecryptfs
    crw-rw----  1 root video      29,   0 May 18 10:26 fb0
    crw-rw-rw-  1 root root        1,   7 May 18 10:26 full
    crw-rw-rw-  1 root root       10, 229 May 18 10:26 fuse
    crw-------  1 root root      251,   0 May 18 10:27 hidraw0
    crw-------  1 root root       10, 228 May 18 10:26 hpet
    crw-r--r--  1 root root        1,  11 May 18 10:26 kmsg
    crw-rw----+ 1 root root       10, 232 May 18 10:26 kvm
    crw-------  1 root root       10, 237 May 18 10:26 loop-control
    crw-------  1 root root       10, 227 May 18 10:26 mcelog
    crw-------  1 root root      249,   0 May 18 10:27 media0
    crw-------  1 root root      250,   0 May 18 10:26 mei0
    crw-r-----  1 root kmem        1,   1 May 18 10:26 mem
    crw-------  1 root root       10,  57 May 18 10:26 memory_bandwidth
    crw-------  1 root root       10,  59 May 18 10:26 network_latency
    crw-------  1 root root       10,  58 May 18 10:26 network_throughput
    crw-rw-rw-  1 root root        1,   3 May 18 10:26 null
    crw-r-----  1 root kmem        1,   4 May 18 10:26 port
    crw-------  1 root root      108,   0 May 18 10:26 ppp
    crw-------  1 root root       10,   1 May 18 10:26 psaux
    crw-rw-rw-  1 root tty         5,   2 May 18 17:40 ptmx
    crw-rw-rw-  1 root root        1,   8 May 18 10:26 random
    

    ເອກະສານເຊື່ອມຕໍ່ສັນຍາລັກ: ການເຊື່ອມໂຍງສັນຍາລັກແມ່ນການອ້າງອີງໃສ່ເອກະສານອື່ນໃນລະບົບ. ດັ່ງນັ້ນ, ເອກະສານເຊື່ອມໂຍງແບບສັນຍາລັກແມ່ນແຟ້ມທີ່ຊີ້ໄປຫາເອກະສານອື່ນ, ແລະມັນສາມາດເປັນໄດເລກະທໍລີຫລືແຟ້ມປົກກະຕິ

    ລາຍຊື່ເຕົ້າຮັບເຊື່ອມຕໍ່ສັນຍາລັກໃນໄດເລກະທໍລີ:

    # ls -l /dev/ | grep "^l"
    
    lrwxrwxrwx  1 root root             3 May 18 10:26 cdrom -> sr0
    lrwxrwxrwx  1 root root            11 May 18 15:54 core -> /proc/kcore
    lrwxrwxrwx  1 root root            13 May 18 15:54 fd -> /proc/self/fd
    lrwxrwxrwx  1 root root             4 May 18 10:26 rtc -> rtc0
    lrwxrwxrwx  1 root root             8 May 18 10:26 shm -> /run/shm
    lrwxrwxrwx  1 root root            15 May 18 15:54 stderr -> /proc/self/fd/2
    lrwxrwxrwx  1 root root            15 May 18 15:54 stdin -> /proc/self/fd/0
    lrwxrwxrwx  1 root root            15 May 18 15:54 stdout -> /proc/self/fd/1
    

    ທ່ານສາມາດສ້າງລິ້ງທີ່ມີສັນຍາລັກໂດຍໃຊ້ ln utility ໃນ Linux ຄືໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້.

    # touch file1.txt
    # ln -s file1.txt /home/tecmint/file1.txt  [create symbolic link]
    # ls -l /home/tecmint/ | grep "^l"         [List symbolic links]
    

    ໃນຕົວຢ່າງຂ້າງເທິງ, ຂ້ອຍໄດ້ສ້າງແຟ້ມທີ່ມີຊື່ວ່າ file1.txt ໃນ/tmp directory, ຈາກນັ້ນສ້າງ link link ສັນຍາລັກ, /home/tecmint/file1.txt ເພື່ອຊີ້ໄປທີ່ /tmp/file1.txt.

    ທໍ່ຫລືທໍ່ຊື່: ເຫຼົ່ານີ້ແມ່ນເອກະສານທີ່ຊ່ວຍໃຫ້ການສື່ສານລະຫວ່າງຂັ້ນຕອນໂດຍການເຊື່ອມຕໍ່ຜົນຜະລິດຂອງຂັ້ນຕອນ ໜຶ່ງ ໄປສູ່ການປ້ອນຂໍ້ມູນຂອງຄົນອື່ນ.

    ທໍ່ຊື່ແມ່ນຕົວຈິງແລ້ວແມ່ນເອກະສານທີ່ຖືກ ນຳ ໃຊ້ໂດຍສອງຂະບວນການເພື່ອສື່ສານກັບແຕ່ລະອັນແລະມັນເຮັດ ໜ້າ ທີ່ເປັນທໍ່ Linux.

    ລາຍຊື່ເຕົ້າຮັບທໍ່ໃນໄດເລກະທໍລີ:

    # ls -l | grep "^p"
    
    prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe1
    prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe2
    prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe3
    prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe4
    prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe5
    

    ທ່ານສາມາດໃຊ້ປະໂຫຍດ mkfifo ເພື່ອສ້າງທໍ່ທີ່ມີຊື່ຢູ່ໃນ Linux ດັ່ງຕໍ່ໄປນີ້.

    # mkfifo pipe1
    # echo "This is named pipe1" > pipe1
    

    ໃນຕົວຢ່າງຂ້າງເທິງ, ຂ້ອຍໄດ້ສ້າງທໍ່ຊື່ທີ່ມີຊື່ວ່າ pipe1 , ຫຼັງຈາກນັ້ນຂ້ອຍໄດ້ສົ່ງຂໍ້ມູນບາງສ່ວນໃຫ້ມັນໂດຍໃຊ້ ຄຳ ສັ່ງແອັກໂກ້, ຫລັງຈາກນັ້ນຫອຍກໍ່ກາຍເປັນການໂຕ້ຕອບກັນໃນຂະນະທີ່ປະມວນຜົນການປ້ອນຂໍ້ມູນ.

    ຫຼັງຈາກນັ້ນຂ້ອຍກໍ່ເປີດຫອຍອື່ນແລະແລ່ນ ຄຳ ສັ່ງອີກ ລຳ ໜຶ່ງ ເພື່ອພິມອອກສິ່ງທີ່ຖືກສົ່ງໄປທໍ່.

    # while read line ;do echo "This was passed-'$line' "; done<pipe1
    

    ແຟ້ມຊັອກເກັດ: ເຫຼົ່ານີ້ແມ່ນແຟ້ມເອກະສານທີ່ໃຫ້ວິທີການສື່ສານລະຫວ່າງຂັ້ນຕອນ, ແຕ່ພວກເຂົາສາມາດໂອນຂໍ້ມູນແລະຂໍ້ມູນລະຫວ່າງຂັ້ນຕອນທີ່ເຮັດວຽກຢູ່ໃນສະພາບແວດລ້ອມທີ່ແຕກຕ່າງກັນ.

    ນີ້ຫມາຍຄວາມວ່າເຕົ້າຮັບສະຫນອງຂໍ້ມູນແລະການໂອນຂໍ້ມູນລະຫວ່າງຂະບວນການທີ່ເຮັດວຽກຢູ່ໃນເຄື່ອງທີ່ແຕກຕ່າງກັນໃນເຄືອຂ່າຍ.

    ຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນການເຮັດວຽກຂອງຊັອກເກັດຈະເປັນຕົວທ່ອງເວັບທີ່ເຮັດໃຫ້ມີການເຊື່ອມຕໍ່ກັບເວັບເຊີຟເວີ.

    # ls -l /dev/ | grep "^s"
    
    srw-rw-rw-  1 root root             0 May 18 10:26 log
    

    ນີ້ແມ່ນຕົວຢ່າງຂອງການສ້າງຊັອກເກັດຢູ່ໃນ C ໂດຍການໃຊ້ລະບົບ <ເຕົ້າຮັບ() ລະບົບ.

    int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );
    

    ໃນຂ້າງເທິງ:

    <

  • AF_INET ແມ່ນຄອບຄົວທີ່ຢູ່ (IPv4)
  • SOCK_STREAM ແມ່ນປະເພດ (ການເຊື່ອມຕໍ່ແມ່ນ TCP-oriented protocol)
  • 0 ແມ່ນໂປໂຕຄອນ (IP Protocol)
  • ເພື່ອອ້າງອີງໃສ່ເອກະສານຂອງຊັອກເກັດ, ໃຫ້ໃຊ້ socket_desc , ເຊິ່ງເທົ່າກັບເຄື່ອງອະທິບາຍເອກະສານ, ແລະໃຊ້ ອ່ານ() ແລະ ຂຽນ() ລະບົບຮຽກຮ້ອງໃຫ້ອ່ານແລະຂຽນຈາກເຕົ້າຮັບຕາມ ລຳ ດັບ.

    ເຫຼົ່ານີ້ແມ່ນເອກະສານພິເສດທີ່ເກັບມ້ຽນເອກະສານພິເສດທົ່ວໄປແລະເອກະສານພິເສດອື່ນໆແລະພວກມັນຖືກຈັດຢູ່ໃນລະບົບແຟ້ມ Linux ໃນ ລຳ ດັບຊັ້ນເລີ່ມຕົ້ນຈາກລະບົບຮາກ (/) .

    ລາຍຊື່ຊັອກເກັດຢູ່ໃນລະບົບ:

    # ls -l / | grep "^d" 
    
    drwxr-xr-x   2 root root  4096 May  5 15:49 bin
    drwxr-xr-x   4 root root  4096 May  5 15:58 boot
    drwxr-xr-x   2 root root  4096 Apr 11  2015 cdrom
    drwxr-xr-x  17 root root  4400 May 18 10:27 dev
    drwxr-xr-x 168 root root 12288 May 18 10:28 etc
    drwxr-xr-x   3 root root  4096 Apr 11  2015 home
    drwxr-xr-x  25 root root  4096 May  5 15:44 lib
    drwxr-xr-x   2 root root  4096 May  5 15:44 lib64
    drwx------   2 root root 16384 Apr 11  2015 lost+found
    drwxr-xr-x   3 root root  4096 Apr 10  2015 media
    drwxr-xr-x   3 root root  4096 Feb 23 17:54 mnt
    drwxr-xr-x  16 root root  4096 Apr 30 16:01 opt
    dr-xr-xr-x 223 root root     0 May 18 15:54 proc
    drwx------  19 root root  4096 Apr  9 11:12 root
    drwxr-xr-x  27 root root   920 May 18 10:54 run
    drwxr-xr-x   2 root root 12288 May  5 15:57 sbin
    drwxr-xr-x   2 root root  4096 Dec  1  2014 srv
    dr-xr-xr-x  13 root root     0 May 18 15:54 sys
    drwxrwxrwt  13 root root  4096 May 18 17:55 tmp
    drwxr-xr-x  11 root root  4096 Mar 31 16:00 usr
    drwxr-xr-x  12 root root  4096 Nov 12  2015 var
    

    ທ່ານສາມາດສ້າງໄດເລກະທໍລີໂດຍໃຊ້ ຄຳ ສັ່ງ mkdir.

    # mkdir -m 1666 linux-console.net
    # mkdir -m 1666 news.linux-console.net
    # mkdir -m 1775 linuxsay.com
    

    ບົດສະຫຼຸບ

    ດຽວນີ້ທ່ານຄວນມີຄວາມເຂົ້າໃຈຢ່າງຈະແຈ້ງວ່າເປັນຫຍັງທຸກຢ່າງໃນ Linux ແມ່ນເອກະສານແລະປະເພດຕ່າງໆຂອງໄຟລ໌ທີ່ສາມາດອອກຈາກລະບົບ Linux ຂອງທ່ານ.

    ທ່ານສາມາດເພີ່ມສິ່ງນີ້ຕື່ມໂດຍການອ່ານເພີ່ມເຕີມກ່ຽວກັບປະເພດເອກະສານແຕ່ລະປະເພດແລະມັນຖືກສ້າງຂື້ນ. ຂ້າພະເຈົ້າຫວັງວ່າປື້ມຄູ່ມືນີ້ຈະເປັນປະໂຫຍດແລະ ສຳ ລັບ ຄຳ ຖາມແລະຂໍ້ມູນເພີ່ມເຕີມທີ່ທ່ານຢາກແບ່ງປັນ, ກະລຸນາໃຫ້ ຄຳ ເຫັນແລະພວກເຮົາຈະປຶກສາຫາລືກັນຕື່ມ.