- vừa được xem lúc

Hệ thống tập tin trên Linux

0 0 13

Người đăng: LamDN

Theo Viblo Asia

Nếu là một lập trình viên backend chắc hẳn bạn cũng không còn xa lại gì với Linux. Đây là hệ điều hành phổ biến thuộc họ UNIX với nhiều biến thể khác nhau, nó cũng là nhân của Android. Nếu như trên Windows, chúng ta thường không để tâm đến các thư mục hệ thống, mọi thao tác đều có thể thực hiện bằng giao diện đồ hoạ. Trên Linux, mọi thứ sẽ không dễ dàng như vậy. Khi thao tác với các file hay muốn biết những gì đang diễn ra trong hệ thống bạn có thể sẽ phải làm việc trên command line và cần biết cách tổ chức cũng như mục đích của từng thư mục.

Everything Is A File

Điều đầu tiên bạn cần biết đó là: Mọi thứ trong Linux đều là file. Chúng được phân cấp theo tiêu chuẩn FHS (Filesystem Hierarchy Standard). Hãy cùng đi qua từng thư mục để xem mục đích của chúng là gì. alt text

boot

Đây là nơi chứa tất cả các file cần thiết cho việc khởi động hệ điều hành. Nội dung của nó sẽ tuỳ thuộc vào loại boot loader được sử dụng (LILO hay GRUB). Với boot loader GRUB, bạn sẽ thấy xuất hiện thư mục grub:

ls /boot/grub/
default fonts gfxblacklist.txt grub.cfg grubenv i386-pc locale menu.lst menu.lst~ unicode.pf2

Đây là một thư mục quan trọng và bạn không nên đụng vào nó.

bin

Chứa các tập tin binary cơ bản, các lệnh mà bạn hay dùng như cd, ls, whoami... thực chất cũng chỉ là file. Có rất nhiều file trong thư mục này, mỗi file sẽ tương ứng với một lệnh và bạn có thể sử dụng nó ở bất cứ đâu. Bây giờ hãy thử copy một file và đổi tên nó:

sudo cp /bin/ls /bin/copy-of-ls

Bạn đã vừa copy file copy-of-ls từ file ls, và có một điều thú vị là khi bạn gọi:

copy-of-ls

Bạn sẽ thấy nó hoạt động không khác gì so với khi bạn dùng ls.

sbin

Tương tự như /bin, /sbin cũng chứa những file binary nhưng có một chút khác biệt là các file này thường liên quan đến hệ thống, một số file khác chỉ có thể truy cập bởi administrators.

ls /sbin/

Bạn sẽ thấy các file có tên giống với những lệnh quen thuộc:

ip shutdown ifconfig reboot

lib

Đây là nơi lưu trữ những thư viện dùng chung, phục vụ cho hệ thống và các chương trình mặc định trong /bin/sbin. Với các chương trình người dùng cài đặt, các thư viện hỗ trợ sẽ được lưu ở thư mục /usr/lib.

usr

Tập trung các tập tin, thư viện cho các chương trình của người dùng nhưng ở một cấp khác ít quan trọng hơn.

ls /usr
bin games include lib lib64 libexec local sbin share src tmp

Đây giống như phần mở rộng của hệ thống. Nếu như bạn không tìm thấy một lệnh nào đó trong thư mục /bin thì bạn có thể sẽ thấy nó trong /usr/bin, điều này cũng tương tự với /sbin.

home

Khi một user được tạo ra, một thư mục có cùng tên với user đó sẽ tạo được trong thư mục /home. Mỗi thư mục sẽ chứa dữ liệu cá nhân của user, có thể bao gồm cả hai thư mục là binsbin. Bạn có thể kiểm tra thư mục home của current user bằng lệnh:

ls ~
bin sbin

Chức năng của những thư mục này cũng là lưu trữ các file binary, chỉ khác là các file này ít được sử dụng hơn các file trong /bin/sbin.

root

Đây là thư mục cá nhân của người dùng root, người dùng có quyền cao nhất trong hệ thống Linux. Vì thế mà nó cũng khá đặc biệt khi không nằm trong thư mục /home giống những user thông thường khác. Người dùng bình thường có thể lưu trữ các tệp tin ở đây, nhưng cần quyền root để truy cập.

dev

Là thư mục chứa các tập tin đại diện cho các thiết bị phần cứng như màn hình, bàn phím, thiết bị mạng... Ngoài ra nó còn chứa các tệp tin đặc biệt như /dev/null, /dev/zero.

Mọi dữ liệu được ghi vào /dev/null sẽ bị loại bỏ, vì vậy nó thường được sử dụng để chuyển hướng hoặc bỏ qua đầu ra của một lệnh. Ví dụ sau sẽ ngăn hiển thị lỗi trên mà hình khi cat một file không tồn tại:

cat file_not_found 2>/dev/null

Trong khi đó, /dev/zero cung cấp nguồn dữ liệu vô hạn các byte có giá trị 0, nên nó được dùng để ghi đè, tạo file hoặc khởi tạo một vùng nhớ trên ổ cứng. Ví dụ sau sẽ tạo một tập tin có tên là myfile với kích thước 1GB:

dd if=/dev/zero of=myfile bs=1M count=1024

media và mnt

Đây là hai thư mục chức các điểm kết nối cho các thiết bị lưu trữ di động như USB, CD/DVD... Khi bạn cắm thiết bị lưu trữ di động vào máy tính, hệ thống sẽ tự động gắn kết thiết bị vào một thư mục con trong /media. Trong khi đó, việc sử dụng thư mục /mnt sẽ cho phép bạn gắn kết các hệ thống tập tin từ các thiết bị khác nhau, chẳng hạn như ổ cứng ngoài, ổ mạng NAS, v.v.

opt

Thư mục này chứa các chương trình đã được đóng gói. Ví dụ khi cài đặt powershell, bạn sẽ thấy thư mục microsoft/powershell/ trong thư mục /opt.

etc

Là nơi lưu trữ các file cấu hình của hệ thống và các chương trình người dùng cài đặt. Ví dụ:

  • /etc/passwd: Chứa thông tin về người dùng
  • /etc/shadow: Chứa mật khẩu được mã hóa
  • /etc/init.d: Chứa các tập tin khởi động cho các dịch vụ

Khi muốn thay đổi cấu hình của một chương trình nào đó, bạn cũng nên tìm đến thư mục này:

ls /etc/mysql/
conf.d my.cnf my.cnf.fallback

proc

Chứa các tập tin ảo cung cấp thông tin về các tiến trình đang chạy, thông tin hệ thống như phiên bản kernel, thời gian hoạt động. Nó cũng cho biết các thông tin khác về phần cứng như RAM, ROM, CPU...Bạn có thể lấy các thông tin này bằng việc cat các file tương ứng:

  • Lấy thời gian hoạt động
cat /proc/uptime
119820867.67 119161855.02
  • Lấy version hệ thống:
cat /proc/version
Linux version 6.1.66-91.160.amzn2023.x86_64 (mockbuild@ip-10-0-60-142)

snap

Chứa các gói phần mềm snap được cài đặt trên hệ thống. Đây là các gói snap là các gói phần mềm được đóng gói sẵn và có thể cập nhật độc lập. Nói qua về snap, đây là một hệ thống đóng gói và phân phối do Ubuntu Canonical phát triển. Bạn có thể xem thông tin của thư mục này bằng lệnh sau:

cat /snap/README

srv

Dùng để lưu trữ dữ liệu được chia sẻ bởi các dịch vụ mạng, thường thấy trên các máy chủ Linux. Ví dụ, dữ liệu web được chia sẻ bởi máy chủ web Apache có thể được lưu trữ trong thư mục /srv/www/htdocs.

sys

Đây là thư mục hệ thống, cung cấp giao diện cho phép truy cập và quản lý các thiết bị phần cứng thông qua các tập tin và thư mục. Cũng giống như /proc, các tập tin này thường không được ghi trực tiếp vào ổ đĩa. Ví dụ bạn có thể kiểm tra image size như sau:

cat /sys/power/image_size
1023934464

var

Lưu trữ các tập tin ghi lại trạng thái của hệ thống hoặc của ứng dụng. Đó có thể là các file log, email hay các file cơ sở dữ liệu... Chúng có thể tồn tại lâu dài mà không bị xoá sau khi reboot.

ls /var/
backups cache crash lib local lock log mail opt run snap spool tmp www

run

Là một hệ thống những tập tin tồn tại trên RAM (tempfs file), dùng để lưu trữ thông tin mô tả về hệ thống được tạo ra trong runtime. Mọi thứ sau đó sẽ bị xóa khi shutdown hoặc reboot hệ thống. Nó có thể chứa các tập tin PID (Process identifier) với quy ước đặt tên

.pid.

tmp

Là thư mục lưu trữ tệp tin tạm thời được tạo bởi các ứng dụng để sử dụng trong một phiên làm việc. Các tập tin này thường được xoá sau khi hệ thống khởi động lại, chúng cũng có thể được xoá bất cứ lúc nào.

Conclusion

Hiểu rõ hệ thống file Linux không chỉ giúp bạn dễ dàng tương tác với hệ điều hành, nó còn là bước đi đầu tiên giúp bạn nhanh chóng tìm được cách xử lý cho những vấn đề gặp phải. Hi vọng bài viết có thể giúp bạn tự tin và sử dụng Linux theo cách hiệu quả nhất.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 121

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 5

Hello 500 ae, sau 4 số trong seri này mình thấy có vẻ ae có hứng thú đọc chủ đề này ghê. Hi vọng những gì mình tìm hiểu được sẽ giúp ích được cho nhiều bạn hơn.

0 0 51

- vừa được xem lúc

Những lệnh command shell linux cơ bản có thể bạn chưa biết - Phần 1

Bài viết này sẽ liệt kê một số command cơ bản thường được dùng trong linux, tiện dụng cho các bạn khi sử dụng linux mà có thể bạn chưa biết. Tôi là ai, câu lệnh này sẽ cho bạn biết bạn đang sử dụng linux bằng tài khoản người dùng nào.

0 0 55

- vừa được xem lúc

Cách sử dụng lệnh SCP để truyền tệp an toàn

SCP (secure copy) là một tiện ích dòng lệnh cho phép bạn sao chép an toàn các tệp và thư mục giữa hai vị trí. . From your local system to a remote system. Between two remote systems from your local system.

0 0 55

- vừa được xem lúc

Người ta làm cách nào để backup thường xuyên thư mục rất lớn?

. Vấn đề về sao lưu thư mục lớn. Mình có lưu "sương sương" 300GB các tệp tin của người dùng upload lên, như hình ảnh hay các tệp đính kèm.

0 0 49

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 4

Sau một kì nghỉ tết trong thời buổi đại dịch vừa qua. Không còn những buổi dong chơi đi chúc tết nữa. Ở nhà ra số tiếp theo cho anh em đây. Dưới đây sẽ là 2 command được sử dụng nhiều nhất khi sử dụng file.

0 0 52