07/05/2018, 15:04

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

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ụcMiê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.
/binVị 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.
/etcCá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.
/libChứa các file thư viện được chia sẻ và đôi khi các tệp liên quan đến Kernel.
/bootChứa các file để khởi động hệ thống (boot).
/homeChứa thư mục chính cho các người sử dụng và các tài khoản khác.
/mntSử dụng để gắn kết (mount) các hệ thống file tạm thời, như cdroom và đĩa mềm ….
/procChứ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.
/tmpGiữ 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.
/varMộ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.
/sbinChứ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 fdiskifconfig.
/kernelChứ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 filenameHiển thị một tên file.
cd dirnameDi chuyển bạn tới thư mục đã được xác định.
cp file1 file2Sao chép một file/thư mục tới vị trí đã được xác định.
file filenameNhận diện kiểu file (nhị phân, văn bản, …).
find filename dirTìm một file/thư mục.
head filenameChỉ phần bắt đầu của một file.
less filenameTrình duyệt thông qua một file từ cuối hoặc từ đầu.
ls dirnameChỉ nội dung của thư mục đã được xác định.
mkdir dirnameTạo một thư mục đã được định trước.
more filenameTrình duyệt thông qua một file từ đầu tới cuối.
mv file1 file2Di chuyển vị trí hoặc đặt lại tên của một file/thư mục.
pwdChỉ thư mục hiện tại mà người sử dụng hiện tại đang ở.
rm filenameGỡ bỏ một file.
rmdir dirnameGỡ bỏ một thư mục.
tail filenameChỉ phần cuối của một file.
touch filenameTạ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 filenameChỉ vị trí của một file.
which filenameChỉ vị trí của một file nếu nó trong PATH của bạn.

Bạn có thể sử dụng để 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ộtMiêu tả
FilesystemTên hệ thống file.
kbytesTổng số kilo byte có sẵn trên phương tiện lưu trữ
usedTổng số kilo byte đã được sử dụng (bởi file).
availTổng số kilo byte có sẵn cho sử dụng (còn lại chưa được sử dụng).
capacityPhần trăm của tổng số không gian đã được sử dụng bởi các file.
Mounted onHệ 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ệnhMiêu tả
quotaHiể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.
quotacheckQué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.
setquotaNó 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
repquotaIn cách sử dụng của đĩa và các hạn ngạch cho hệ thống file đã được xác định.

Bạn có thể sử dụng để kiểm tra cú pháp đầy đủ cho mỗi lệnh được đề cập ở trên đây.

Loạt bài hướng dẫn học UNIX cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để 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:

0