Các Lược Giảng Chuyên Sâu về Sử Dụng Văn Lệnh BASH trong Linux/Bài 2A

Từ Thư viện Khoa học VLOS
Bước tới: chuyển hướng, tìm kiếm
Chia sẻ lên facebook Chia sẻ lên twitter Chia sẻ lên google-plus In trang này

Loạt bài "Các Lược Giảng Chuyên Sâu về Sử Dụng Văn Lệnh BASH trong Linux" của tác giả Làng Đậu giữ bản quyền 2006. Người đọc chỉ được sử dụng cho mụch đích học tập hay giảng dạy cho cá nhân. Cấm mọi hình thức sao chép, đăng lại, hay in lại nhằm mụch đích mua bán hay trục lợi mà không có sự cho phép chính thức của tác giả. Mọi thông tin về việc phổ biến rộng rãi có tính quảng bá tài liệu này cho mụch đích giáo dục xin liên lạc về vo_quang_nhan@yahoo.com

Bài 2A: Các thiết bị trong /dev, /proc, các tập tin cấu hình cơ bản

Tập tin thiết bị

Khái niệm và vai trò của các tập tin thiết bị

Như đã biết, Linux/UNIX truy cập đến các thiết bị phần cứng thông qua các bộ điều vận và các tập tin thiết bị. Mỗi thực thể phần cứng sẽ liên lạc trực tiếp và được truy cập bởi hệ điều hành (các thao tác xuất nhập) thông qua các tập tin thiết bị đại diện cho phần cứng đó. Tập tin thiết là một loại tập tin đặc biệt còn có tên gọi là nút thiết bị (node device). Mỗi nút thiết bị sẽ được đặc trưng bởi số nút hay số thiết bị (node number/device number) của nó. Số nút này gồm hai phần: Trọng số (Major number) và Khinh số (Minor number).

Trọng số được hạt nhân dùng để xác định bộ điều vận của thiết bị và khinh số sẽ giúp hạt nhân truy cập đến chính xác thực thể thiết bị nào (vì một bộ điều vận có thể điều khiển vận hành cùng lúc nhiều thiết bị -- hay nhiều thiết bị con của cùng một thiết bị). Tập tin thiết bị thường có tên viết tắt để gợi nhớ loại thiết bị nào và thường do sự quy định của bộ điều vận (nhưng không nhất thiết phải sử dụng tên đó).

Thí dụ: các nút thiết bị có tên bắt đầu bởi tiền tố fd sẽ đại diện cho các ổ mềm (floppy disk), tiền tố hd đại diện cho các ổ cứng (hard drive), sd đại diện cho các ổ SCSI (SCSI drvie), ...

Để biết được Số thiết bị của một thiết bi thì có thể dùng lệnh ls -l (xem hình). Mỗi một thực thể thiết bị thường có thể được gắn kết với hệ điều hành (hay là hệ thống tập tin) thông qua lệnh mount sau khi bộ điều vận tương ứng đã được tải; đồng thời cũng có thể tháo dỡ sự gắn kết của thiết bị này ra khỏi hệ thống tập tin bằng lệnh umount (hay lệnh fuser). Một tập tin thiết bị không nhất thiết phải gắn kết với bất kì một thiết bị nào (mà thường chỉ được gắn kết khi có lệnh từ hạt nhân thông qua bộ điều vận). Thông thường, tất cả các nút thiết bị được tạo ra sẵn trong thư mục /dev và các thư mục con của nó. Trong trường hợp không đủ nút thiết bị để gắn kết với các thực thể thiết bị phần cứng thì có thể tạo thêm các nút thiết bị mới bằng lệnh

 mknode[Tên_Tập_Tin] [Loại] [Trọng_số] [Khinh_số]

(trong đó [Loại] có thể là c cho thiết bị kiểu kí tự và b cho thiết bị kiểu khối)

hay lệnh

MAKEDEV [Tên_thiết_bị_chuẩn]

Các tập tin thiết bị cũng có thể xóa bỏ bằng lệnh rm hay lệnh unlink Devicenode.gif
Hình:  Hiển thị Số nút qua lệnh ls -l

Tóm lại, vai trò chính của các tập tin thiết bị là:

  • Là điểm nút để kết nối liên lạc giữa hạt nhân và thiết bị phần cứng. Mỗi thiết bị muốn hoạt động phải được gắn kết (mount) với các nút thiết bị và được điều vận bởi bộ điều vận
  • Hệ điều hành truy cập và xuất hay nhập (I/O) thông tin thông qua các nút thiết bị
  • Các nút thiết bị cho phép hệ điều hành nhận biết từng loại thiết bị bộ điều vận và thực thể của thiết bị thông qua các số thiết bị

Mỗi thiết bị phần cứng thường sẽ có số thiết bị tương ứng (Tuy nhiên, không có gì giới hạn cho phép một thiết bị phần cứng tùy theo cấu trúc có thể nối kết được với nhiều tập tin thiết bị.

Thí dụ: Trên một ổ cứng SCSI được phân chia làm hai ổ lôgic. Bản thân ổ cứng đó có thể được đại diện bởi tập tin thiết bị /dev/sda và mỗi phân hoạch (partition) của nó lại là một thiết bị con và do đó lại đưọc gán cho các nút thiết bị riêng là /dev/sda1 /dev/sda2 tương ứng)

Thí dụ:

 #To see the content of a CD-ROM which has been inserted into CDROM drive which named as /dev/hda:
 mount /dev/hda /mnt/cdrom/
 ls /mnt/cdrom/
 #Similar to a flopy disk has been inserted into the flopy drive /dev/fd0:
 mount /dev/fd0 /mnt/flopy/
 ls /mnt/flopy/
 # to see all devices already mounted:
 mount

Nội dung của /dev

/dev là thư mục chính chứa các tập tin thiết bị cũng như các socket. Một số tập tin trong /dev thay vì là tập tin thiết bị thì nó có thể thay thế bằng các tập tin liên kết mềm. Bảng thí dụ sau đây cho thấy vài nội dung chính của /dev

Ổ mềm:

brw-rw---- 1 root floppy 2, 0 Aug 2 2004 fd0 

Ổ IDE (cdrom hay ổ cứng):

brw------- 1 root disk 3, 0 Aug 2 2004 hda 

Ổ SCSI:

brw-rw---- 1 root disk 8, 0 Aug 2 2004 sda 

Modem - com1:

crw------- 1 root root 5, 64 Dec 07 15:30 cua0 

Modem - com1:

crw------- 1 root root 4, 64 Mar 15 06:02 ttyS0 

Liên kết thường thấy:

lrwxrwxrwx 1 root root 3 Nov 11 12:05 cdrom -> hda 

Liên kết thường thấy:

lrwxrwxrwx 1 root root 5 Nov 11 12:05 mouse -> psaux 

Liên kết thường thấy:

lrwxrwxrwx 1 root root 10 Mar 10 15:59 /dev/fax -> /dev/ttyS2 

Liên kết thường thấy:

lrwxrwxrwx 1 root root 10 Mar 13 16:29 /dev/modem -> /dev/ttyS2 

Thiết bị Loop :

brw-rw---- 1 root disk 7, 0 Aug 2 2004 loop0 

Thiết bị máy in:

crw-rw---- 1 root daemon 6, 0 Aug 2 2004 lp0 

Thiết bị SCIS tổng quát:

crw------- 1 root sys 21, 0 Aug 2 2004 sga 

Sau đây là một số tên tập tin thiết bị thường thấy:

/dev/tty*       	Các đầu cuối, các cổng liên tục (serial port), và giả thiết bị (pseudo devices - dùng trong telnet). 
/dev/fd*        	Ổ mềm
/dev/mt*        	Băng từ 
/dev/mouse      	mouse
/dev/cdrom	CD ROM
/dev/sd*	Ổ SCSI hay ổ USB
/dev/hd*	Ổ IDE (ổ cứng hay IDE CDROM)

Tùy theo hệ điều hành một số tập tin thiết bị có tên theo cú pháp quy định rõ ràng thí dụ như

SunOS 4.x - /dev/{r}sdAP
SunOS 5.x - /dev/{r}dsk/cCtAd0sS 
HPUX 10.X - /dev/{r}dsk/cCtAd0{sS} 
Digital Unix - /dev/{r}rzNP 
Linux - /dev/sdLK 

Trong đó

A = địa chỉ SCSI
C = Số (thứ tự) bộ điều khiển SCSI
K = Số thứ tự của partition dạng DOS 
L =  Tên ổ (drive letter) từ  "a" tới "h" 
N = 8 * số bộ điều khiển # + địa chỉ SCSI 
P = Patition kiểu BSD: (a,b,c,d,e,f,g), 
S = Lát chia (slice) kiểu System V (0,1,2,3,4,5,6).

Lưu ý: Để kiểm xem các phân hoạch của các ổ dữ liệu đã được gắn kết vào hệ thống tập tin trên Linux qua /dev có thể dùng lệnh df.

Thiết bị xuất/nhập chuẩn (stdin, stdout, stderr)

Trong linux thì các thiết bị xuất nhập chuẩn như :

  • Bộ mô tả tập tin stdin chính là nút thiết bị /dev/fd/0
  • Bộ mô tả tập tin stdout chính là nút thiết bị /dev/fd/1
  • Bộ mô tả tập tin stderr chính là nút thiết bị /dev/fd/2

Lưu ý: khi lập trình C/C++ người ta có thể truy cập đến các thiết bị xuất nhập này (thí dụ dùng lệnh

fd = open("/dev/fd/0", O_RDWR);

nhưng dẫu sao bạn sẽ không thể viết lên thiết bị này vì nó là stdin tức là ngỏ nhập chuẩn)

/dev/null

Đây là thiết bị NULL. Các thông báo từ các mệnh lệnh ra ngỏ stdout hay stderr nếu được đổi hướng vào NULL thì chúng sẽ không hiển thị nữa (mà thay vào đó chúng bị gạt bỏ). Diều này tiện dùng trong các câu lệnh mà người gọi lệnh không cần thiết phải nhận về các thông báo cùng như khôngmuốn hiển thị chúng ra

Thí dụ:

cp -f file1 file2 1>/dev/null 2>/dev/null  
# this command will be processed but will not display if it is succeed or failed

/dev/zero

Thiết bị đặc biệt này có nội dung chỉ chứa bit 0. Nó được ứng dụng trong trường hợp tạo ra một ổ nhớ RAM hay một thiết bị hồi chuyển (loop back)

Thí dụ1: tạo một ổ nhớ trong RAM

# how to create a  RAMDISK:
MNT=/mnt/ramdisk
MNT2=/mnt/ramfs
CNT=1000                 # 1MB RAM disk
BLCK=1024                # 1K (1024 byte) block size
DEV=/dev/ram0            #  ram device
if [ ! -d $MNT ] && [ ! -d $MNT2 ] ; then
   mkdir -p $MNT $MNT2
fi
dd </dev/zero >$DEV count=$CNT bs=$BLCK #read from /dev/zero and output to $DEV
mkfs.ext2 $DEV               # format an ext2 filesystem on it.
mount $DEV $MNT     # Mount RAM DISK to /mnt/ramdisk.
chmod 777  $MNT             
ls $MNT
# Above is, however, a long way to create a RAMDISK you may just do this command:
mount -t ramfs none $MNT2 

Thí dụ2: tạo một ổ nhớ dạng hồi chuyển

# How to create a 1MB loopback device in FAT format
MNT=/mnt/loopback
CNT=2048                 # 1MB FAT volume
BLCK=512                 # 0.5K 
IMG=./FATVOL             # FAT16 loop back device
if [ ! -d $MNT ]; then
    mkdir -p $MNT
fi
dd if=/dev/zero of=$IMG count=$CNT bs=$BLCK #read from /dev/zero and output to file FATVOL
mkfs.vfat $IMG           # format an ext2 filesystem on it.
mount -o loop $IMG $MNT          # Mount  to /mnt/loopback
chmod 777  $MNT             
echo "my 1st file" > $MNT/myfile.txt
ls $MNT

Lưu ý: Trong các thực nghiệm trên sau khi làm xong người dùng nên dùng lệnh umount để trả lại các ổ lưu trữ đã tạo ra.

/dev/loop[n]

Đây là các tập tin thiết bị đặc biệt thường được dùng để truy cập nội dung của các tập tin ảnh (image file) của các ổ nhớ khác. Một hệ điều hành thường sẽ cung cấp từ 7 cho đến 32 nút thiết bị hồi chuyển như vậy bắt đầu từ /dev/loop0, /dev/loop1, ....

Thí dụ1: Truy cập 1 ổ initrd là ổ khởi động RAM thường tìm thấy trong /boot

cp /boot/initrd ./initrd.gz   #the original image is often compressed
gzip -d ./initrd.gz           # It should extract initrd.gz into initrd 
mkdir -p /mnt/initrd
mount -o loop ./initrd /mnt/initrd
#see how the /dev/loop<n> device plays
mount
#Now access it
ls /mnt/initrd
#end of the fun
umount /mnt/linitrd 

Thí dụ2: Truy cập một tập tin myCDROM.iso (tập tin *.iso là tập tin ảnh của các CDROM)

mkdir -p /mnt/cdrom
mount -o loop myCDROM.iso /mnt/cdrom
ls /mnt/cdrom

Lưu ý: trong thí dụ2 trên; có nhiều hệ điều hành Linux mới (dùng với X window) sẽ tự động mặc định gắn kết thư mục /mnt/cdrom với ổ CDROM mỗi khi thực sự có một diã trong ổ. Để tránh sự trùng lặp khi gắn kết này, có thể tạo ra một thư mục bất kìthay vì thư mục /mnt/cdrom

Một bài viết khá thú vị có thể giúp bạn có thêm vài cách hữu hiệu để truy cập lên các phân hoạch của ổ diã có thể tìm thấy ở http://edseek.com/~jasonb/articles/linux_loopback.html

Các thiết bị cần biết khác

/dev/mem, /dev/kmem, và /dev/port

  • /dev/mem là tập tin thiết bị kiểu kí tự. Nội dung của nó cũng chính là nội dung của bộ nhớ máy tính. Các điạ chỉ byte trong /dev/mem được chuyển dịch như là điạ chỉ thực của bộ nhớ (RAM), Người "root" có thể đọc tất cả nội dung bộ nhớ nếu biết được vị trí của thông tin đó ở đâu trong /dev/mem. Có thể thử đọc nội dung của /dev/mem bằng lệnh cat
  • Tương tự /dev/kmem hoàn toàn giống /dev/mem nhưng ở đây nó là hình ảnh bộ nhớ ảo của máy tính
  • /dev/port cũng là một loại thiết bị kiểu kí tự nhưng ở đây chứa các thông tin I/O

/dev/hd[x][n], /dev/sd[x][n]

Cả hai loại này lần lượt theo thứ tự là các thiết bị lưu trữ kiểu IDE và SCSI Trong công thức tổng quát này thì [x] là các chữ trong bảng chữ cái Anh ngữ bắt đầu từ a và [n] (nếu có) sẽ là số phân hoạch của thiết bị.

Hệ thống tập tin Proc

proc (viết tắt của chữ process) là một hệ thống tập tin hay đúng hơn là một hệ thống tập tin giả (pseudo-filesystem) và được cập nhật theo thời gian thực (real time). Đây là thư mục chứa lượng rất lớn thông tin rất có giá trị liên quan đến các tiến trình đang chạy, cũng như là các một phần thông tin về các thiết bị phần cứng đã được nối vào máy tính (nhiều thông tin về các thiết bị này đã được các hạt nhân phiên bản mới cho thông tin vào thư mục /sys). Một hệ thống tập tin proc mới được hạt nhân tạo ra mỗi lần kernel bắt đầu chạy và biến mất khi tắt máy. Hệ thống tập tin này chứa trong bộ nhớ (RAM) và được hạt nhân gắn kết chúng vào với thư mục /proc. Với /proc, người ta có thể:

  • Kiểm tra xem module (hay bộ điều vận) nào đã được tải
  • Xem xét trạng thái tức thời của hạt nhân
  • Sự phân bổ bộ nhớ của hạt nhân cho các tiến trình
  • Một số phương thức để điều chỉnh tham số của các giá trị cài đặt cho hạt nhân -- cũng như một số thao tát quản lý mà không phải tái khởi động máy

Lưu ý: việc thay đổi các cài đặt trong hạt nhân cũng như trong các thao tác quản lý là một công cu vô cùng manh nhưng cũng là một "con dao hai lưỡi" đòi hỏi người dùng máy phải biết rõ mình đang làm gì? Mọi sai sót hay không hợp đều có thể gây hậu quả tai hại. Hơn nữa còn phải tùy theo phiên bản của hạt nhân có cho phép tiến hành việc điều chỉnh cụ thể hay không.

Truy cập /proc

Nếu chỉ để dọc thông tin, có thể dùng lệnh ls, grep, cat, ... lên các tập tin bên trong /proc. Tuy nhiên, kernel có thể đã gắn kết (mount) sẵn từ trước với thư mục /proc này bằng lệnh mount.

Thí dụ:

mount -fv -t proc proc /proc

hay đơn giản hơn

mount -t proc proc /proc 

Người ta chỉ có thể thay đổi các tham số trong /proc nếu như nó được mount dạng read-write. Có thể dùng lệnh grep để xem xem nó đã được gắn kết như thế nào:

grep 'proc' /proc/mounts
grep proc /proc/mounts
/proc /proc proc rw 0 0

Thí dụ trên cho thấy /proc đã được gắn kết với proc dùng tham số rw tức là có thể truy cập đọc và viết lên nó

Lưu ý: nếu dùng lệnh ls -l lên hầu hết các tập tin trong /proc thì sẽ nhận thấy chúng không chiếm hữu byte nào. Lý do là vì các "tập tin" này không hiện hữu (giả tập tin - pseudo file) trên ổ cứng và được trực tiếp tạo ra từ hạt nhân.

Các tập tin có ích trong /proc

Để đọc nội dung của các tập tin trong /proc nhằm biết đến các thông tin về hạt nhân, hệ điều hành, phần cứng ....có thể dùng lệnh cat đọc các nội dung này. Một số tập tin (kể cả các tập tin nằm trong thư mục con) quan trọng bao gồm:

  • /proc/cmdline - Các tham số đã truyền vào hạt nhân khi khởi động
  • /proc/cpuinfo - thông tin chi tiết về CPU
  • /proc/devices - Danh sách các thiết bị có thể dùng
  • /proc/diskstats - Trạng thái các ổ nhớ
  • /proc/filesystems - Các hệ thống tập tin được hỗ trợ
  • /proc/meminfo - thông tin chi tiết về RAM.
  • /proc/mounts - danh sách các hệ thống tập tin đang được gắn kết
  • /proc/modules - Các module đang đưọc tải
  • /proc/partitions - Các phân hoạch
  • /proc/version - Số phiên bản của Kernel

Các thư mục quan trọng bao gồm:

  • /proc/asound - Thông tin về thiết bị âm
  • /proc/bus - Thông tin về BUS
  • /proc/driver - Thông tin về bộ điều hợp
  • /proc/fs - Thông tin về hệ thống tập tin
  • /proc/ide - Thông tin về IDE
  • /proc/irq - Thông tin về các ngắt
  • /proc/scsi - Thông tin về scsi
  • /proc/tty - thông tin về các đầu cuối

...

Có thể thử xem nội dung của một tập tin trong thư mục này qua lệnh cat [tên_tập_tin]

Thông tin của các tiến trình

Mỗi tiến trình đang chạy được biểu thị là các thư mục có tên chính là các số danh định của tiến trình đó. Để có thể biết trạng thái của mỗi tiến trình có thể trước tiên dùng lệnh ps -A để tìm xem số danh định của tiến trình là bao nhiêu mới xem xét được.

Thí dụ: Giả sử bạn đang chạy trình duyệt mozilla. Để đọc trạng thái của các tiến trình của mozilla có thể ra lệnh:

 ps -A | grep "mozilla"

Nếu mozilla đang chạy bình thường thì hệ thống sẽ hiển thị dòng tương tự như sau:

   8768    ?    09:09:00 mozilla

   8774  ? 09:09:01 mozilla-bin

Cột đầu tiên là số tiến trình của mozilla và mozilla-bin. Để truy cập trạng thái của nó có thể đọc các tập tin trong thư mục /proc/8768/proc/8774 bằng lệnh ls và lệnh cat

Điều chỉnh các tham số của môi trường hay của hạt nhân

Cách tiến hành

Lưu ý: Các tham số đã có cài sẵn trong /proc thường rất hiệu lực cho máy chạy đưọc an toàn mọi thay đổi không cần thiết có thể dẫn đến trục trặc không lường trước. Chỉ nên tiến hành khi người dùng biết rõ hậu qủa công việc mình đang làm gì.

Các lệnh dùng để soạn thảo văn bản thông thường như vi, vim và các lệnh tương tự trong X window không thể dùng để thay đôi các tham số trong /proc.

Lệnh soạn thảo duy nhất có thể dùng với mức cẩn thận cao là echo [Các_Dòng_Cài_Đặt_Mới] > [Tên_Tập_Tin_Trong_/proc]

Thí dụ1:  Thay vì dùng lệnh hostname [Tên_Máy_Chủ] để đổi tên máy chủ, có thể dùng cách sau đây:

#see the old hostname:
cat /proc/sys/kernel/hostname  #display the current hostname 
$ echo "myhostname"  > /proc/sys/kernel/hostname
cat /proc/sys/kernel/hostname  #display the new changed hostname

Thí dụ2: "Cắm nóng" hay "lấy ra" một ổ cứng kiểu SCSI khỏi các khe SCSI. Một ổ cứng kiểu SCSI có thể được thêm vào khi máy đang chạy (tuy nhiên điều này chưa chắc đúng với mọi bộ điều hợp và mọi kernel phải thử nghiệm trước và cẩn thận có thể là hư hệ điều hành khi tiến hành!) - thí dụ này trích từ "Administer Linux on the fly" cuả Graham White Có thể thử cắm trực tiếp 1 ổ SCSI mới vào trong một chỗ trống (nếu máy không bị treo) có thể dùng lệnh sau đây để kết nối "nóng":

echo "scsi add-single-device w x y z" > /proc/scsi/scsi

Trong đó các tham số w, x, y, và z phải là các giá trị đúng:

  • w là số định danh của bộ điều hợp chủ (host adapter ID), bộ điều hợp đầu tiên có số định danh là 0
  • x là số kênh SCSI (SCSI channel) trêng bộ đièu hợp chủ, Trong đó, kênh đầu tiên là 0
  • y số định danh SCSI (SCSI ID) của ổ cứng
  • z là số LUN, số LUN đầu tiên là 0

Ngược lại, có thể lấy ra một ổ SCSI (ổ này phải không hề có một tiến trình nào liên hệ tới - như là không có I/O , ...)

echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

Các tham số thông dụng có thể điều chỉnh

  • /proc/sys/fs/file-max: Số tối đa của thẻ quản lý tệp (file handle) Số này có thể tăng lên khi mà hệ thống không thể cho phép mở thêm tập tin (qua lệnh open). Giá trị mặc định là : 4096
  • /proc/sys/fs/overflowuid và /proc/sys/fs/overflowgid: Lưu giữ các UID và GID cho các hệ thống tập tin hỗ trợ 16-bit. Giá trị mặc định là: 65534
  • /proc/sys/fs/super-max: Số tối đa củ bộ quản lý siêu khối (super block handlers). Mọi hệ thống tập tin gắn kết vào máy đều cần dùng số siêu khối này; máy có thể cần tăng lên nếu máy tính gắn kết với nhiều hệ thống tập tin.Giá trị mặc định là: 256
  • /proc/sys/kernel/ctrl-alt-del là giá trị nhị phân cho biết cách thức ứng xử một khi tổ hợp phím ctrl+alt+delete được bấm: Giá trị mặc định là 0:
    • 0 -- cho phép hệ thống chuyển sang chương trình init (ngưng máy) cho phép máy tái khởi động sau khi ngừng các tiến trình. Tương đương với lệnh shutdown.
    • 1 -- Tương đương với việc cắt ngang các tiến trình và tái khởi động lập tức. Tương đương với việc tắt điện
  • /proc/sys/kernel/domainname Thay đổi tên miền (domain) của máy trong mạng.
  • /proc/sys/kernel/hostname Thay đổi tên máy chủ.
  • /proc/sys/kernel/msgmax Cho cỡ lớn tối đa các thông báo từ một tiến trình đến tiến trình khác. Tăng giá trị này sẽ làm tăng bộ nhớ tiêu dụng bởi hệ điều hành. Giá trị mặc định là: 8192
  • /proc/sys/kernel/msgmnb Số byte tối đa cho một hàng thông báo (message queue) riêng lẽ. Giá trị mặc định là: 16384
  • /proc/sys/kernel/msgmni Số tối đa các định danh (ID) hàng thông báo. Giá trị mặc định là: 16
  • /proc/sys/kernel/panic Lượng thời gian (giây) mà hạt nhân sẽ chờ trước khi tái khởi động nếu nó bị hiện tượng "kernel panic". Khi cài giá trị 0 sẽ không cho phép tự tái khởi động trong trường hợp như thế xãy ra. Giá trị mặc định là: 0
  • /proc/sys/kernel/printk Bao gồm 4 con số xác định khi nào các thông báo biên bản (logging message) được gửi ra tùy theo mức độ quan trọng của nó. (Dùng lệnh man 2 syslog để biết thêm chi tiết). Bộ bố giá trị này là:
    • Console Log Level: Các thông báo mức cao hơn mức này sẽ được hiển thị ra đầu cuối
    • Default Message Log Level: Các thông báo không có quyền ưu tiên sẽ được hiển thị nếu ở mức ưu tiên này
    • Minimum Console Log Level: giá trị nhỏ nhất (ở mức ưu tiên cao nhất) mà  Console Log Level có thể được cài
    • Default Console Log Level: giá trị mặc định cho Console Log Level

Giá trị mặc định là: 6 4 1 7

  • /proc/sys/kernel/shmall Tổng số lượng bộ nhớ chia sẽ (shared memory) tính bằng byte có thể dùng ở bất kì thời điểm nào. Giá trị mặc định là: 2097152
  • /proc/sys/kernel/shmax Phân đoạn (segment) lớn nhất của bộ nhớ tính bằng byte cho phép trong hạt nhân. Giá trị mặc định là: 33554432
  • /proc/sys/kernel/shmmni/ Số tối đa các phân đoạn của bộ nhớ chia sẽ trong toàn bộ hệ thống. Giá trị mặc định là: 4096
  • /proc/sys/kernel/threads-max Số tối đa các phân luồng (thread) mà hạt nhân có thể dùng. Giá trị mặc định là: 2048
  • /proc/sys/net/core/message_burst thời gian đòi hỏi để có một thông báo cảnh cáo (tính bằng 1/10 giây. Các cảnh cáo nhận được trong khoảng thời gian ngắn hơn sẽ bị bỏ qua. Cách này dùng để ngăn chận các tấn công "Denial of Service" (Dịch vụ Khước từ) bởi nổ lực làm ngập chìm hệ thống máy tính bằng các thông báo. Giá trị mặc định là: 50 (5 seconds)
  • /proc/sys/net/core/message_cost Đánh giá giá trị của các cảnh cáo. Gía trị này càng cao cảnh cáo càng dể bị bỏ qua. Giá trị mặc định là: 5
  • /proc/sys/net/core/netdev_max_backlog Số tối đa các gói có thể được xếp hàng (queue) khi giao diện nhận được các gói nhanh nhơn khả năng xử lí của hạt nhân. Giá trị mặc định là: 300
  • /proc/sys/net/core/optmem_max Giá trị cỡ tối đa của bộ đệm cho phép của một ổ nối (socket).
  • /proc/sys/net/core/rmem_default Cỡ mặc định tính bằng byte của một bộ đệm ổ nối thu nhận (receive socket).
  • /proc/sys/net/core/rmem_max Cỡ tối đa (byte) của một bộ đệm ổ nối nhận.
  • /proc/sys/net/core/wmem_default Cỡ mặc định (byte) của một bộ đệm ổ nối gửi (send socket).
  • /proc/sys/net/core/wmem_max Cỡ tối đa (byte) của một bộ đệm ổ nối gửi.
  • /proc/sys/vm/buffermem Bộ 3 số điều khiển tổng phần trăm bộ nhớ của hệ thống dùng trong bộ nhớ đệm:

Phần trăm nhỏ nhất của bộ nhớ nên được dùng cho các bộ đệm
Hệ thống sẽ thử dùng và giữ lượng phần trăm bộ nhớ đệm này một khi bộ nhớ hệ thống bị cắt hay chỉ còn một lượng thấp của bộ nhớ hệ thống
Số phần trăm tối đa của bộ nhớ có thể dùng cho các bộ đệm
Giá trị mặc định là: 2 10 60

  • /proc/sys/vm/freepages Điều khiển cách thức hệ thống phản ứng với các mức độ khác nhau của bộ nhớ còn tự do:

Nếu số trang tự do đã đạt tới số giới hạn nhỏ nhất này thì chỉ có hạt nhân được phép cấp phát thêm bộ nhớ (cho các chương trình).
Nếu số trang tự do xuống thấp hơn giới hạn này thì hạt nhân sẽ bắt đầu "swap" (dùng bộ nhớ ảo trên các ổ cứng) mạnh hơn để có lại các phần nhớ tự do và bảo toàn hiệu năng của hệ thống.
Hạt nhân sẽ cố giữ lượng bộ nhớ tự do này. Dưới nó, quá trình "swaping kernel" bắt đầu
Giá trị mặc định là: 512 768 1024

  • /proc/sys/vm/kswapd Điều khiển cách thức mà kernel được phép để "swap" bộ nhớ:
    • Số tối đa các trang (page) mà hạt nhân cố gắng làm cho tự do trong 1 lúc. Nếu muốn tăng "băng thông" của quát trnìh swap có thể tăng số này.
    • Số lần nhỏ nhất mà hạt nhân cố gắng để làm tự do 1 trang trong mỗi thao tác swap.
    • Số trang mà kernel có thể viết trong 1 lần swap. Số này ảnh hưởng lớn nha6't đến hiệu năng của máy. Số lơn hơn thì nhiều dữ liệu hơn sẽ được "swap" và ít thời gian bỏ ra hơn cho việc kiếm (seeking) ổ dĩa. uy nhiên, nếu lớn qúa, cũng sẽ ảnh hưởng tới hiệu năng của hệ thống do bỵ ngập bởi hàng yêu cầu (request queue)

Giá trị mặc định là: 512 32 8

Bảng các tập tin thông dụng để tạo cấu hình cho Linux

Các tập tin sau đây sẽ có ích trong trường hợp bạm muốn cấu hình cho máy theo cách của mình và cùng có thể dùng trong các văn lệnh (nhất là các văn lệnh khởi động)

Tên Tập tin Mô tả
/etc/host.conf Cài đặt cách thức cho máy chủ miền (domain server) kiếm các tên chủ (hosname). Dùng lệnh man 5 host.conf để biết cách cấu hình.
/etc/hosts Danh mục các máy chủ đã biết tương ứng với IP. Có thể dùng IP cụ thể nếu hệ thống không tự động tạo ra (dhcp). Cho viẹc đặt tên miền đơn giản, /etc/hosts.conf thường yeu cầu nhìn và đây trưóc khi hỏi tên máy chủ , DNS hay NIS. Dùng lệnh man hosts xem chi tiết
/etc/issue
/etc/issue.net
Các tập tin này được đọc bởi mingetty để hiển thị dòng "chào đón" khi người dùng nối từ một đầu cuối (issue) hay từ telnet (issue.net). Chúng được dùng bởi rc.local.
/etc/<OS>-release số phiên bản phát hành của OS. Dùng bởi rc.local. (e.g. /etc/SuSE-release)
/etc/rc.d/rc Văn lệnh này thường được chạy trong mọi cấp độ (mà cấp độ này được dùng như là tham số của văn lệnh). Thí dụ ở cấp độ 5, chạy chế độ đồ họa có thể dùng lệnh : init 5. Tức là chạy máy ở cấp 5 (tức là cấp của chế độ đồ hoạ).
/etc/rc.d/rc.local Văn lệnh (có trong RedHat).Có thể được gọi từ rc, rc.sysinit, hay /etc/inittab.
/etc/rc.d/rc.sysinit Đây là văn lệnh khởi động đầu tiên được chạy (có trong RedHat)
/etc/rc.d/rc/rcX.d Các văn lệnh trong các thư mục rcX.d này sẽ được rc gọi (X là số cấp từ 1 tới 5) khi máy khởi động/đổi mức khởi động ở cấp X. Các văn lệnh có tên với tiền tố Sxx [Tên_Văn_lệnh] (xx là hai số tự nhiên từ 00 đến 99) sẽ được gọi khi khởi động và các văn lệnh với tiền tố (Kxx sẽ được gọi nếu có đổi trạng thái khởi động (như là khi tắt máy chẳng hạn). Văn lệnh có tiền tố với số nhỏ hơn sẽ được thi hành trước
/etc/group Chứa các tên nhóm còn hiệu lực và tên người dùng trong các nhóm. Một người dùng có thể có tên trong nhiều nhóm và có thể thực hiện được nhiều thao tác mà nhóm có tên cho phép.
/etc/nologin Nếu tập tin này tồn tại, login(1) chỉ cho phép người dùng root truy nhập. Các người dùng khác bị từ chối khi đăng nhập.
etc/passwd chứa các thông tin về tài khoản người dùng, GID, UID và trình bao mặc định cho người dùng đó
/etc/rpmrc Tập tin cấu hình của lệnh rpm.
/etc/securetty Chứa các tên thiết bị của tty trong đó sẽ cho phép root đăng nhập.
/etc/usertty
/etc/shadow
Chứa các mật khẩu mã hoá của các tài khoản và có thể có thông tin về tuổi tác của mật khẩu. Các miền bao gồm:

Tên đăng nhập
mật khẩu mã hoá
Số ngày kể từ tháng 01 Giêng, 1970 mà mật khẩu này đổi lần cuối
Số ngày trước khi mật khẩucó thể được thay đổi
Số ngày mà mật khẩu phải được thay đổi sau đó
Số ngày truớc khi mật khẩu bị hết hạn mà người dùng bị cảnh báo
Số ngày sau khi mật khẩu bị hết hạn thì tài khoản bị đóng
Số ngày kể từ 1 tháng Giêng 1970 mà tài khoản đã bị đóng

/etc/shells Danh mục các trình bao mà hệ thống hiện có
/etc/motd "Message Of The Day"; được dùng nếu quản lí muốn gửi vài thông báo tới mọi người.
/etc/mtab Đây chính là nội dung của tất cả các thiết bị hiện đang gắn kết với hệ thông (xem thêm /proc/mount và lệnh mount) .
/etc/fstab Danh sách tất cả các hệ thống tập tin có thể gắn kết được với máy tính.Khi máy khởi động nó se dùng tập tin này qua lệnh mount -a và các hệ thống tập tin nào có đánh số 1 ở cột kế chót trong fstab sẽ được gắn kết vào Linux
/etc/mtools.conf Cấu hình cho mọi thao tác trên các hệ thống tập tin kiểu DOS.
/etc/networks Danh sách tên địa chỉ của các mạng mà có thể truy cập được từ mạng tới máy được nối.
/etc/protocols Danh sách các giao thức hiện có và dùng được với giao thức TCP/IP. Xem thêm man protocols
/etc/resolv.conf Thông báo kernel tên máy chủ nào nên được truy trả khi có chương trình yêu cầu "giải quyết" một địa chỉ IP
/etc/rpc Các chỉ thị và quy tắt cho RPC có thể được dùng trong các việc gọi NFS, (gắn kết từ xa với các hệ thống tập tin, vv).
/etc/exports Các hệ thống tập tin được cho xuất (NFS) và các phép truy cập của chúngt.
/etc/services Chuyển dịch các tên dịch vụ mạng (network service name) sang thành số cổng/giao thức (port number /protocol). Sẽ dưọc đọc bởi inetd, telnet, tcpdump, ....
/etc/sysconfig Các tập tin cấu hình cho nhiều chương trình ở thư mục này
/etc/sysconfig/network Chức các tập tin cấu hình cho mạng
/etc/logrotate.conf Bảo trì các tập tin log trong thư mục /var/log .
/etc/ld.so.conf Tập tin cấu hình cho bộ liên kết động (Dynamic Linker)
/etc/inittab Tập tin cấu hình đầu tiên trong Linux/UNIX ; chương trình khởi động đầu tiên là init sẽ dựa trên inittab để chạy cho đúng tuỳ theo cấp và cũng dùng nó để điều khiển quá trình khởi động chính.
/etc/termcap Là cơ sở dữ liệu chứa mọi kiểu đầu cuối (terminal) và khả năng của chúng.
/etc/syslogd.conf Cấu hình cho tác trinh (daemon) syslogd. syslogd là trình nền lo về các thông báo đăng nhập đến từ các chương trình bên khác vào hệ thống.
/etc/conf.modules
/etc/modules.conf
Tập tin cấu hình cho kerneld. Đây là trình nền lo về việc tải thêm các module hạt nhân trong thời gian chạy (run time) khi cần.
/etc/xinetd.conf Cấu hình cho deamon xinetd. Được dùng trong nhiều chương trình như là ftp, telnet, vns, talk,....

/etc/xinetd.d Thư mục chứa các tập tin cấu hình cho nhiều úng dụng qua mạng như tp, telnet, vns, talk,....

Các tập tin tài nguyên thông dụng cho tài khoản người dùng

Các tập tin tài nguyên sau đây được dùng để tạo môi trường thuận tiện hay phù hợp với tài khoản người dùn; có thể dùng trong các văn lệnh để điều chỉnh một cách nhanh chóng các cài đặt cho người dùng

Tên Tập tin Mô tả
~/.bash_profile Nguồn điều chỉnh cho trình bao bash sau khi dùng  /etc/profile.
~/.bash_history Danh sách các mệnh lệnh đã thi hành.
~/.bashrc Nguồn điều chỉnh môi trường cho các trình bao không tương tác (non interactive). Nếu tập tin không tồn tại thì chỉ có các biến môi trường và biến toàn cục của bash được cài.
~/.emacs Được dùng bởi emacs khi bắt đầu chạy.
~/.forward Nếu tập tin này chứa một địa chỉ email thì tất cả các thư diện tử gửi tới chủ nhân của ~ sẽ được chuyển tới địa chỉ email này
~/.fvwmrc ~/.fvwm2rc Cấu hình cho fvwm và fvwm2 (là hai trình quản lí cơ sở cho X Window).
~/.hushlogin Tạo ra việc đăng nhập "lặng lẽ" không có thư thông báo
~/.mail.rc Tập tin tài nguyên cho chương trình email
~/.ncftp/ Thư mục chứa các thông tin khi nối vào internet nhằm tạo một giao diện mạnh và uyển chuyển cho FTP tiêu chuẩn. Được thiết kế để thay thế chương trình ftp mặc định của hệ thống.
~/.profile Giống như tập tin ~/.bash_profile
~/.exrc Cấu hình cho chươong trình soạn thảo văn bảm vi
Thí dụ: set ai sm ruler
~/.vimrc Cấu hình cho vim hoàn toàn tương tự.exrc.
~/.gtkrc Tài nguyên cho GNOME Toolkit.
~/.kderc Cấu hình KDE.
~/.netrc Tên mặc định và mật khẩu cho ftp.
~/.rhosts Dùng bởi r-tools: rsh, rlogin, .... Rất yếu trong an toàn
~/.rpmrc được đọc bởi rpm nếu /etc/rpmrc không tồn tại
~/.signature Các dòng thông báo sẽ được tự động thêm vào cuối thư khi được gửi từ tài khoản này
~/.twmrc Cấu hình cho twm (The Window Manager).
~/.xinitrc Đưuợc đọc bởi X khi khởi động chương trình. Hầu như dược dùng để chạy chương trình :. Thí dụ dòng :
exec /usr/sbin/startkde

được thêm vào sẽ làm cho trình quản lý cửa sổ KDE bắt đầu mỗi lần lệnh startx được gọi khi dùng tài khoản này

~/News/Sent-Message-IDs Danh mục lịch sử các tập tin email cho GNU.
~/.Xauthority Đọc và viết bởi chương trình xdm để xử lí chủ quyền .
~/.Xdefaults, ~/.Xdefaults-hostname Đọc bởi các ứng dụng X trong thời gian bặt đầu chạy trên một tên chủ. Nếu tập tin hosname không tim thấy thì sẽ tìm .Xdefaults thay vào.
~/mbox mail cũ của người dùng.

Bài kì tới: Toán tử, Vòng lặp, và Biểu thức chính quy, lệnh grep, đào sâu thêm thao tác chuyển hướng



Trở về mục lục

Đọc bài kế

Liên kết đến đây

Chia sẻ lên facebook Chia sẻ lên twitter Chia sẻ lên google-plus In trang này