ຄໍາອະທິບາຍກ່ຽວກັບ“ ທຸກຢ່າງແມ່ນເອກະສານ” ແລະປະເພດຂອງແຟ້ມເອກະສານໃນ 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 ຂອງທ່ານ.
ທ່ານສາມາດເພີ່ມສິ່ງນີ້ຕື່ມໂດຍການອ່ານເພີ່ມເຕີມກ່ຽວກັບປະເພດເອກະສານແຕ່ລະປະເພດແລະມັນຖືກສ້າງຂື້ນ. ຂ້າພະເຈົ້າຫວັງວ່າປື້ມຄູ່ມືນີ້ຈະເປັນປະໂຫຍດແລະ ສຳ ລັບ ຄຳ ຖາມແລະຂໍ້ມູນເພີ່ມເຕີມທີ່ທ່ານຢາກແບ່ງປັນ, ກະລຸນາໃຫ້ ຄຳ ເຫັນແລະພວກເຮົາຈະປຶກສາຫາລືກັນຕື່ມ.