Cơ bản về hệ thống File trong Unix/Linux
Một hệ thống file là một tập hợp logic của các file trên một vùng phân hoạch (partition) hoặc một đĩa. Một vùng phân hoạch là một nơi chứa thông tin và có thể tổ hợp thành một đĩa cứng nếu muốn.
Đĩa cứng của bạn có thể có các vùng phân hoạch đa dạng mà thường chỉ chứa một hệ thống file, như một hệ thống file /home.
Một hệ thống file một vùng phân hoạch cho phép duy trì và quản lý các hệ thống file khác nhau một cách logic.
Mọi thứ trong Unix được xem xét như là một file, bao gồm các thiết bị vật lý như DVD-ROMs, USB, đĩa mềm, ….
Cấu trúc thư mục trong Unix/Linux
Unix sử dụng một cấu trúc hệ thống file có thứ bậc, mà giống một cấu trúc cây từ trên xuống dưới, với root (/) tại cơ sở của hệ thống file và tất cả các thư mục khác trải ra từ đó.
Một hệ thống file là một tập hợp của các file và thư mục mà có các đặc tính sau:
Nó có một thư mục gốc (/) mà chứa các file và thư mục khác.
Mỗi file và thư mục được xác định duy nhất bởi tên của nó, thư mục mà trong đó nó cư trú, và một sự nhận diện duy nhất, được gọi theo cách đặc trưng là inode.
Theo quy ước, thư mục gốc có số inode là 2 và thư mục lost+found có số inode là 3. Số inode 0 và 1 không được sử dụng. Các số inode có thể được gửi bởi trình xác định trong chức năng -i của lệnh ls.
Nó có đặc tính khác nữa là tự chứa. Không có sự phụ thuộc giữa một hệ thống file này với một hệ thống file khác.
Các thư mục có các mục đích riêng và thường giữ các kiểu thông tin giống nhau để việc đặt vị trí các file dễ dàng. Dưới đây là các thư mục mà tồn tại trên các phiên bản lớn của Unix.
Thư mục | Miêu tả |
---|---|
/ | Nó là thư mục chính mà chỉ chứa các thư mục cần thiết ở cấp cao nhất trong cấu trúc file. |
/bin | Vị trí này đặt các file có thể chạy được. Chúng có sẵn cho mọi người dùng. |
/dev | Đây là các thiết bị điều khiển. |
/etc | Các lệnh thư mục Supervisors, các file định cấu hình, các file định cấu hình đĩa, danh sách người dùng hợp lệ, ethernet, host, là nơi để gửi các thông điệp nghiêm trọng. |
/lib | Chứa các file thư viện được chia sẻ và đôi khi các tệp liên quan đến Kernel. |
/boot | Chứa các file để khởi động hệ thống (boot). |
/home | Chứa thư mục chính cho các người sử dụng và các tài khoản khác. |
/mnt | Sử dụng để gắn kết (mount) các hệ thống file tạm thời, như cdroom và đĩa mềm …. |
/proc | Chứa tất cả các tiến trình được đánh dấu như một file bởi số tiến trình hoặc thông tin khác mà là động lực của hệ thống. |
/tmp | Giữ các file tạm thời được sử dụng giữa quá trình khởi động (boot) hệ thống. |
/usr | Được sử dụng cho các mục đích hỗn hợp, hoặc có thể được sử dụng bởi nhiều người sử dụng. Bao gồm các lệnh về hành chính, các file được chia sẻ, các file thư viện, và các cái khác. |
/var | Một thư mục đặc thù, chứa các file biến dài như các file đăng nhập và in và bất kỳ kiểu khác của file mà có thể chứa một số lượng biến của dữ liệu. |
/sbin | Chứa các file (có thể chạy) nhị phân, thường cho quản lý hệ thống. Ví dụ như các tiện ích fdisk và ifconfig. |
/kernel | Chứa các tệp kernel. |
Điều hướng hệ thống file trong Unix/Linux
Bây giờ bạn đã hiểu các cơ sở của hệ thống file, bạn có thể bắt đầu điều hướng file bạn cần. Bảng dưới là các lệnh bạn sẽ sử dụng để điều hướng hệ thống.
Lệnh | Miêu tả |
---|---|
cat filename | Hiển thị một tên file. |
cd dirname | Di chuyển bạn tới thư mục đã được xác định. |
cp file1 file2 | Sao chép một file/thư mục tới vị trí đã được xác định. |
file filename | Nhận diện kiểu file (nhị phân, văn bản, …). |
find filename dir | Tìm một file/thư mục. |
head filename | Chỉ phần bắt đầu của một file. |
less filename | Trình duyệt thông qua một file từ cuối hoặc từ đầu. |
ls dirname | Chỉ nội dung của thư mục đã được xác định. |
mkdir dirname | Tạo một thư mục đã được định trước. |
more filename | Trình duyệt thông qua một file từ đầu tới cuối. |
mv file1 file2 | Di chuyển vị trí hoặc đặt lại tên của một file/thư mục. |
pwd | Chỉ thư mục hiện tại mà người sử dụng hiện tại đang ở. |
rm filename | Gỡ bỏ một file. |
rmdir dirname | Gỡ bỏ một thư mục. |
tail filename | Chỉ phần cuối của một file. |
touch filename | Tạo một file trống hoặc sửa đổi các thuộc tính của một file.s đang tồn tại. |
whereis filename | Chỉ vị trí của một file. |
which filename | Chỉ vị trí của một file nếu nó trong PATH của bạn. |
Bạn có thể sử dụng Trang trợ giúp (Manpage Help) để kiểm tra cú pháp đầy đủ cho mỗi lệnh được đề cập ở đây.
Lệnh df trong Unix/Linux
Cách đầu tiên để quản lý không gian vùng phân hoạch là với lệnh df (viết tắt của disk free). Lệnh df -k hiển thị không gian đĩa sử dụng trong kilobyte, như hiển thị dưới đây:
$df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/vzfs 10485760 7836644 2649116 75% / /devices 0 0 0 0% /devices $
Một số các thư mục, như /devices, chỉ 0 kilobyte được sử dụng. Những file này là những hệ thống file đặc biệt, và mặc dù chúng cư trú ở trên đĩa dưới dấu gạch chéo, bởi chính chúng không chiếm dụng không gian của đĩa.
output của df -k thường giống trên tất cả các hệ thống Unix. Dưới đây liệt kê những thứ mà nó bao gồm:
Cột | Miêu tả |
---|---|
Filesystem | Tên hệ thống file. |
kbytes | Tổng số kilo byte có sẵn trên phương tiện lưu trữ |
used | Tổng số kilo byte đã được sử dụng (bởi file). |
avail | Tổng số kilo byte có sẵn cho sử dụng (còn lại chưa được sử dụng). |
capacity | Phần trăm của tổng số không gian đã được sử dụng bởi các file. |
Mounted on | Hệ thống file được gắn kết trên cái gì. |
Bạn có thể sử dụng chức năng -h (viết tắt của human readable) để hiển thị output trong một định dạng chỉ kích cỡ bằng lời chú giải theo cách dễ hiểu nhất.
Lệnh du trong Unix/Linux
Lệnh du (viết tắt của disk usage) cho bạn khả năng để xác định các thư mục để chỉ sự sử dụng không gian trên đĩa trên một thư mục cụ thể.
Lệnh này hữu ích nếu bạn muốn xác định phần không gian được sử dụng cho một thư mục cụ thể. Lệnh sau sẽ hiển thị số khối mà mỗi thư mục chiếm dụng. Một khối đơn có thể là 512 byte hoặc 1 kilo byte phụ thuộc vào hệ thống của bạn.
$du /etc 10 /etc/cron.d 126 /etc/default 6 /etc/dfs ... $
Chức năng -h tạo output để bạn dễ dàng hơn để nhận thức, lý giải.
$du -h /etc 5k /etc/cron.d 63k /etc/default 3k /etc/dfs ... $
Gắn kết (Mounting) hệ thống file trong Unix/Linux
Một hệ thống file phải được gắn kết để có thể được sử dụng bởi hệ thống. Để quan sát cái gì hiện tại được gắn kết (có sẵn để sử dụng) trên hệ thống của bạn, sử dụng lệnh sau:
$ mount /dev/vzfs on / type reiserfs (rw,usrquota,grpquota) proc on /proc type proc (rw,nodiratime) devpts on /dev/pts type devpts (rw) $
Thư mục /mnt, theo quy ước, là nơi những sự gắn kết tạm thời (như các đĩa CD-ROM, các đĩa mềm…) được đặt tại đó. Nếu bạn cần để gắn kết một hệ thống file, bạn có thể sử dụng lệnh mount với cú pháp sau:
mount -t file_system_type device_to_mount directory_to_mount_to
Ví dụ, nếu bạn muốn gắn kết một CD-ROM tới thư mục /mnt/cdrom, bạn có thể nhập từ bàn phím như sau:
$ mount -t iso9660 /dev/cdrom /mnt/cdrom
Điều này giả sử rằng thiết bị CD-ROM của bạn được gọi /dev/cdrom và bạn muốn kết nối nó tới /mnt/cdrom. Bạn tham khảo Man Page để có thông tin cụ thể hơn hoặc gõ mount -h từ dòng lệnh cho các thông tin giúp đỡ.
Sau khi gắn kết, bạn có thể sử dụng lệnh cd để điều hướng hệ thống file có mới nhất thông qua điểm kết nối mà bạn vừa mới tạo ra.
Bỏ gắn kết (unmounting) hệ thống file trong Unix/Linux
Để bỏ gắn kết hệ thống file từ hệ thống của bạn, sử dụng lệnh unmount bằng xác định điểm kết nối hoặc thiết bị.
Ví dụ, để gỡ bỏ cdrom, sử dụng lệnh sau:
$ umount /dev/cdrom
Lệnh mount cho bạn khả năng để truy cập vào hệ thống file, nhưng trên các hệ thống Unix hiện đại nhất, chức năng tự động kết nối thực hiện ngầm tiến trình này cho người sử dụng và không yêu cầu sự can thiệp nào.
Các hạn ngạch (quotas) người dùng và nhóm trong Unix/Linux
Các hạn ngạch người dùng và nhóm cung cấp các kỹ thuật mà bởi nó lượng không gian được sử dụng bởi một người dùng đơn hoặc tất cả người dùng trong một nhóm cụ thể có thể được giới hạn được xác định bởi người quản lý.
Các hạn ngạch hoạt động thông qua 2 sự giới hạn mà cho phép người dùng thực hiện một số hành động trong lượng không gian hoặc số lượng khối của đĩa mà người quản lý đã xác định giới hạn cho trước đó.
Giới hạn mềm (Soft Limit): Nếu người dùng sử dụng vượt quá lượng giới hạn, yêu cầu thêm phần không gian để sử dụng, sẽ được cấp thêm một số khối nữa.
Giới hạn cứng (Hard Limit): Khi người dùng sử dụng chạm tới mốc giới hạn, yêu cầu thêm cho phần không gian để sử dụng nữa, sẽ không có khối nào được thêm.
Dưới đây là các lệnh mà được sử dụng để quản lý hạn ngạch:
Lệnh | Miêu tả |
---|---|
quota | Hiển thị cách sử dụng đĩa và giới hạn cho một người sử dụng trong nhóm. |
edquota | Đây là bộ soạn hạn ngạch. Hạn ngạch người dùng hoặc nhóm có thể được chỉnh sửa bằng cách sử dụng lệnh này. |
quotacheck | Quét hệ thống file về cách sử dụng đĩa, tạo, kiểm tra và sửa chữa các file hạn ngạch. |
setquota | Nó cũng là một lệnh trong bộ soạn hạn ngạch. |
quotaon | Điều này tuyên bố tới hệ thống mà hạn ngạch đĩa nên được cho phép bật trên một hoặc nhiều hệ thống file. |
quotaoff | Điều này tuyên bố tới hệ thống mà hạn ngạch đĩa nên được cho phép tắt trên một hoặc nhiều hệ thống file |
repquota | In cách sử dụng của đĩa và các hạn ngạch cho hệ thống file đã được xác định. |
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học UNIX phổ biến khác tại VietJack:
- Quản lý File
- Thư mục
- Quyền truy cập File
- Cài đặt Unix/Linux
- Các tiện ích cơ bản
- Các Pipe & Bộ lọc (Filter)