Các Lược Giảng Chuyên Sâu về Sử Dụng Văn Lệnh BASH trong Linux/Bài 2A
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
Mục lục
Tập tin thiết bị[sửa]
Khái niệm và vai trò của các tập tin thiết bị[sửa]
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
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[sửa]
/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)[sửa]
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[sửa]
Đâ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[sửa]
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]
[sửa]
Đâ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[sửa]
/dev/mem,
/dev/kmem
,
và
/dev/port
[sửa]
-
/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ệnhcat
-
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]
[sửa]
[x]
[x]
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[sửa]
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
[sửa]
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
[sửa]
Để đọ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[sửa]
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
và
/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[sửa]
Cách tiến hành[sửa]
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[sửa]
-
/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
-
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
-
/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[sửa]
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.netCá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/shadowChứ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.confTậ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[sửa]
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