การเรียกดูไฟล์ในแผ่นซีดีรอมหรือดีวีดีบนลีนุกซ์

บนลีนุกซ์เมื่อใส่แผ่นซีดีรอมหรือดีวีดีเข้าไปในไดร์ฟแล้ว หากต้องการเรียกดูไฟล์ในแผ่นต้องทำการ mount ตัวไดร์ฟ (/dev) กับไดเร็คทอรีหรือพาธ (path) บนลีนุกซ์ แล้วถึงจะดูไฟล์ภายใต้พาธนี้ได้

หมายเหตุ หากติดตั้งชุดโปรแกรม Desktop Environment เช่น GNOME ด้วย อาจมีโปรแกรมช่วย mount ตัวไดร์ฟโดยอัตโนมัติ (automount) คือเมื่อใส่แผ่นเราก็สามารถเรียกดูไฟล์ในแผ่นได้เลย ถ้าเป็นแบบนี้ก็ไม่จำเป็นต้องใช้คำสั่ง mount

หากติดตั้งลีนุกซ์โดยใช้แผ่นแล้ว ส่วนใหญ่จะมีการสร้างลิ้งค์ไฟล์ (soft link) ไว้เป็นชื่อ /dev/cdrom หรือ /dev/dvd

ตัวอย่างเช่นหากติดตั้ง CentOS 6.2 จะมี soft link ชี้ไปที่ /dev/sr0

[root@cent6 ~]# ls -l /dev/cdrom
lrwxrwxrwx. 1 root root 3 Mar 31 13:45 /dev/cdrom -> sr0
[root@cent6 ~]# ls -l /dev/dvd
lrwxrwxrwx. 1 root root 3 Mar 31 13:45 /dev/dvd -> sr0
[root@cent6 ~]# ls -l /dev/sr0
brw-rw----. 1 root cdrom 11, 0 Mar 31 13:45 /dev/sr0

เราสามารถใช้คำสั่ง mount ตามด้วยชื่อไดร์ฟ /dev/cdrom หรือ /dev/dvd หรือแม้แต่ /dev/sr0 ก็ได้

เวลา mount ไดร์ฟแบบใช้ชั่วคราวเช่น cdrom หรือ dvd นิยม mount กับพาธ /mnt

ตัวอย่างการ mount ไดร์ฟที่มีแผ่นติดตั้ง CentOS 6.2 แผ่นที่ 1 เข้ากับพาธ /mnt

[root@cent6 ~]# mount /dev/dvd /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

เมื่อ mount แล้ว จะไม่สามารถกดปุ่ม eject เพื่อเอาแผ่นออกได้

ตัวอย่างการใช้คำสั่ง ls เพื่อดูไฟล์ในแผ่น

[root@cent6 ~]# cd /mnt/
[root@cent6 mnt]# ls -l
total 658
-rw-r--r--. 2 root root 14 Dec 16 09:39 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 EFI
-rw-r--r--. 2 root root 212 Dec 15 11:32 EULA
-rw-r--r--. 2 root root 18009 Dec 15 11:38 GPL
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 images
drwxr-xr-x. 2 root root 2048 Dec 11 06:36 isolinux
drwxrwxr-x. 2 500 500 630784 Dec 16 09:43 Packages
-rw-r--r--. 2 root root 1354 Dec 9 19:58 RELEASE-NOTES-en-US.html
drwxr-xr-x. 2 root root 4096 Dec 16 09:46 repodata
-rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 2 root root 1734 Dec 9 19:57 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root 3380 Dec 16 09:46 TRANS.TBL

เมื่อสิ้นสุดการใช้งาน ต้องการเอาแผ่นออกมาจากไดร์ฟ เราต้องออกจากพาธ /mnt ก่อน แล้วใช้คำสั่ง umount ตามด้วยพาธที่ mount ไว้

[root@cent6 mnt]# cd ~
[root@cent6 ~]# umount /mnt

หรืออาจใช้คำสั่ง eject เพื่อ umount แล้วสั่งให้ไดร์ฟเอาแผ่นออกด้วย

[root@cent6 ~]# eject

ปัญหาการ umount ไม่ได้

หากพาธที่ mount แผ่นไว้ ถูกใช้งานอยู่ เช่นมี user เรียกดูไฟล์ภายใต้พาธนี้อยู่ จะไม่สามารถ umount ได้

[root@cent6 ~]# mount /dev/dvd /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@cent6 ~]# cd /mnt/
[root@cent6 mnt]#
[root@cent6 mnt]# umount /mnt
umount: /mnt: device is busy.
 (In some cases useful info about processes that use
 the device is found by lsof(8) or fuser(1))

หากเราทราบผู้ที่ใช้พาธนี้อยู่ ก็สามารถบอกให้ cd ออกจากพาธได้ แต่ถ้าไม่ทราบ หรือหาไม่เจอ ต้องใช้คำสั่ง fuser เพื่อหาโปรเซสที่เรียกใช้พาธนี้อยู่

ใช้คำสั่ง fuser ตามด้วยพาธที่ mount แผ่นไว้

[root@cent6 ~]# fuser /mnt
/mnt: 1357c

ตัวเลข 1357 คือ PID ของโปรเซสที่เรียกใช้พาธนี้อยู่ ใช้คำสั่ง ps เพื่อดูว่าโปรเซสนี้คืออะไร

[root@cent6 ~]# ps -ef | grep 1357
root 1357 1353 0 13:49 pts/0 00:00:00 -bash

ในที่นี้ 1357 คือโปรเซส bash มีคนล็อกอินอยู่ที่หน้าจอ TTY pts/0 เราสามารถใช้คำสั่ง w เพื่อดูว่า pts/0 ล็อกอินมาจากที่ไหนได้

[root@cent6 ~]# w
 15:34:22 up 1:48, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.5.1 13:49 4:42 0.07s 0.07s -bash
root pts/1 192.168.5.2 15:29 0.00s 0.02s 0.00s w

จากผลลัพธ์คำสั่ง w จะเป็นว่า pts/0 เป็นการล็อกอินด้วย root จาก 192.168.5.1 เราก็สามารถไปแจ้งเตือนเพื่อให้ออกจากพาธได้

แต่ถ้าลองใช้คำสั่ง ps แล้ว ไม่สามารถหาเจอได้ว่าใครกำลังใช้อยู่ อาจต้อง kill โปรเซสนั้นไป หรือใช้คำสั่ง fuser ตามด้วยออปชั่น ‘-k’ เพื่อ kill โปรเซสทั้งหมดที่เรียกพาธอยู่

[root@cent6 ~]# fuser /mnt
/mnt: 1357c
[root@cent6 ~]# fuser -k /mnt
/mnt: 1357c
[root@cent6 ~]# fuser /mnt
[root@cent6 ~]# umount /mnt

ก็จะสามารถ umount พาธ แล้วเอาแผ่นออกจากไดร์ฟได้

Leave a Reply

Your email address will not be published.