Dưới đây là danh sách các nguồn hữu ích về Unix/Linux. Bạn nên tham khảo chúng để hiểu sâu
hơn những chủ đề chúng tôi đã đề cập trong loạt bài này.
Tutorialspoint − Loạt bài hướng dẫn của chúng tôi xây dựng dựa trên nguồn này.
Bell Labs − Quá trình tạo Hệ điều hành UNIX. Cung cấp tổng quan và lịch sử của Hệ điều
hành UNIX.
BSD UNIX − FreeBSD là một Hệ điều hành UNIX bậc cao cho Server, desktop, và các
Platform hiện đại.
Linux Online − Linux là một Hệ điều hành Unix-type miễn phí được tạo lần đầu bởi Linus
Torvalds với sự hỗ trợ của các nhà lập trình trên toàn Thế giới.
Unix @ Wikipedia − Một miêu tả ngắn gọn về Hệ điều hành Unix.
The Unix Forums − Một diễn đàn cho những người yêu Unix. Chia sẻ ý tưởng và suy nghĩ
của bạn với các Chuyên gia về Unix
161 trang |
Chia sẻ: truongthinh92 | Lượt xem: 1824 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tài liệu Unix, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
© vietjack.com
Trang chia sẻ các bài học online miễn phí Page 122
Sử dụng từ khóa lớp ký tự chữ cái, lệnh này chỉ in những dòng trong tệp /etc/syslog.conf mà bắt
đầu với một ký tự chữ cái.
$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
Bảng sau là một danh sách đầy đủ của các từ khóa lớp ký tự trong GNU sed.
Lớp ký tự Miêu tả
[[:alnum:]] Thuộc chữ cái-số [a-z A-Z 0-9]
[[:alpha:]] Bảng chữ cái [a-z A-Z]
[[:blank:]] Các ký tự khoảng trống (spaces hoặc tabs)
[[:cntrl:]] Các ký tự điều khiển
[[:digit:]] Các số [0-9]
[[:graph:]] Bất kỳ ký tự nhìn thấy nào (trừ các khoảng trống trắng)
[[:lower:]] Các ký tự viết thường [a-z]
[[:print:]] Các ký tự có thể in được (các ký tự không phải ký tự điều khiển)
[[:punct:]] Các ký tự dấu chấm câu
[[:space:]] Khoảng trống trắng
[[:upper:]] Các ký tự viết hoa [A-Z]
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 123
[[:xdigit:]] Các ký số thập lục phân [0-9 a-f A-F]
Tham chiếu & trong Unix/Linux
Siêu ký tự & trong sed biểu diễn nội dung của mẫu mà được kết nối. Ví dụ, giả sử bạn có một tệp
gọi là phone.txt chứa đầy các số điện thoại, như sau:
5555551212
5555551213
5555551214
6665551215
6665551216
7775551217
Bạn muốn tạo một code khu vực (3 ký số đầu tiên) được bao quanh bởi dấu ngoặc đơn để dễ dàng
hơn khi đọc. Để thực hiện điều này, bạn có thể sử dụng ký tự thay thế &, giống như:
$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217
Ở đây trong phần mẫu bạn đang kết nối 3 ký số đầu tiên, và sau đó sử dụng & bạn đang đổi chỗ
cho 3 ký số này với dấu ngoặc đơn bao quanh.
Sử dụng nhiều lệnh sed trong Unix/Linux
Bạn có thể sử dụng nhiều lệnh sed trong một lệnh sed đơn như sau:
$ sed -e 'command1' -e 'command2' ... -e 'commandN' files
Tại đây, command1 tới commandN là các kiểu lệnh sed đã được bàn luận ở trên. Những lệnh này
được áp dụng tới mỗi dòng trong một danh sách các file được cung cấp bởi các file.
Sử dụng kỹ thuật tương tự, chúng ta có thể viết ví dụ số điện thoại trên như sau:
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 124
$ sed -e 's/^[[:digit:]]\{3\}/(&)/g' \
-e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
Ghi chú: Trong ví dụ trên, thay vì lặp lại các từ khóa lớp ký tự [[:digit:]] 3 lần, bạn đổi nó với \{3\},
mà có nghĩa là để kết nối Regular Expression ở trước 3 lần. Tại đây tôi sử dụng \ để xuống dòng,
bạn nên gỡ bỏ nó trước khi chạy lệnh này.
Tham chiếu ngược trong Unix/Linux
Siêu ký tự & là hữu ích, nhưng hữu ích hơn là khả năng định nghĩa các khu vực cụ thể trong một
Regular Expression để bạn có thể tham chiếu chúng trong các chuỗi đổi vị trí. Bằng việc định nghĩa
các phần cụ thể của một Regular Expression, sau đó bạn có thể xem lại những phần này với một
ký tự tham chiếu đặc biệt.
Để tham chiếu ngược, đầu tiên bạn phải định nghĩa một khu vực và sau đó xem lại khu vực đó. Để
định nghĩa một khu vực, bạn chèn ký tự dấu ngoặc đơn trong dấu chéo ngược quanh mỗi khu vực
bạn quan tâm. Khu vực đầu tiên mà bạn bao quanh với dấu chéo ngược sau đó được tham chiếu
bởi \1, khu vực thứ hai bởi \2, và tiếp tục.
Giả sử phone.txt có các số liệu sau:
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
Bây giờ bạn thử lệnh sau:
$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 125
code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217
Ghi chú:Trong ví dụ trên, mỗi Regular Expression bên trong dấu ngoặc đơn sẽ được tham chiếu
ngược bởi \1, \2, . Tại đây, tôi sử dụng \ để xuống dòng, bạn nên gỡ bỏ chúng trước khi chạy
lệnh.
Cơ bản về hệ thống File trong Unix
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.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 126
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.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 127
/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.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 128
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
$
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 129
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
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 130
...
$
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 đỡ.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 131
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.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 132
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.
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 ở trên đây.
Quản lý người dùng trong Unix
Có 3 kiểu tài khoản trên một hệ thống Unix:
1. Tài khoản gốc (Root account): Nó còn được gọi là superuser và sẽ có sự điều khiển
tuyệt đối tới hệ thống. Một superuser có thể chạy bất cứ lệnh nào mà không bị hạn chế.
Người sử dụng này có thể được ví như người quản lý hệ thống.
2. Các tài khoản hệ thống: Các tài khoản hệ thống được cần cho các hoạt động riêng trong
hệ thống như tài khoản mail và các tài khoản sshd. Những tài khoản này thường được cần
cho một số chức năng riêng trên hệ thống của bạn, và bất cứ sự chỉnh sửa nào tới chúng
có thể ảnh hưởng bất lợi tới hệ thống.
3. Các tài khoản người dùng cá nhân: Các tài khoản này cung cấp sự truy cập mang tính
tương tác tới hệ thống với người dùng và nhóm sử dụng và thường bị giới hạn truy cập vào
những file và thư mục có tính chất quan trọng.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 133
Unix hỗ trợ một khái niệm là tài khoản nhóm Group Account mà tạo nhóm một số tài khoản một
cách logic. Mỗi tài khoản sẽ là một phần của bất cứ tài khoản nhóm nào. Nhóm trong Unix đóng vai
trò quan trọng trong việc thực hiện sự quản lý về tiến trình và cho phép tới file.
Quản lý người và nhóm sử dụng trong Unix/Linux
Có 4 file chính quản lý người sử dụng:
1. /etc/passwd: Giữ tài khoản người dùng và thông tin mật khẩu. File này giữ các thông tin
quan trọng về các tài khoản trên hệ thống Unix.
2. /etc/shadow: Giữ mật khẩu được biên thành mật mã của tài khoản tương ứng. Không phải
tất cả các hệ thống đều hỗ trợ file này.
3. /etc/group: File này giữ thông tin nhóm cho mỗi tài khoản.
4. /etc/gshadow: File này giữ các thông tin tài khoản nhóm bảo mật.
Bạn có thể kiểm tra tất cả các file trên với lệnh cat.
Dưới đây là các lệnh có trong phần lớn các hệ thống Unix để tạo và quản lý các tài khoản cá nhân
và nhóm.
Lệnh Miêu tả
useradd Thêm các tài khoản cá nhân tới hệ thống.
usermod Chỉnh sửa các thuộc tính của tài khoản cá nhân.
userdel Xóa các tài khoản cá nhân từ hệ thống.
groupadd Thêm các tài khoản nhóm tới hệ thống.
groupmod Chỉnh sửa các thuộc tính của tài khoản nhóm.
groupdel Dỡ bỏ các tài khoản nhóm khỏi hệ thống.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 134
Bạn có thể sử dụng các lệnh trong Trang trợ giúp (Manpage Help) để kiểm tra cú pháp đầy đủ
cho mỗi lệnh được đề cập ở trên.
Tạo một nhóm trong Unix/Linux
Bạn có thể sẽ cần tạo các nhóm trước khi tạo bất kỳ một tài khoản nào, nếu không thì bạn phải sử
dụng các nhóm đang tồn tại trên hệ thống của bạn. Bạn sẽ có tất cả các nhóm được liệt kê trong
tệp /etc/groups.
Tất cả các nhóm mặc định sẽ là các nhóm tài khoản cụ thể trên hệ thống và nó không được đề
nghị để sử dụng chúng cho các tài khoản thông thường. Vì thế, dưới đây là cú pháp để tạo một
nhóm tài khoản mới.
groupadd [-g gid [-o]] [-r] [-f] groupname
Bảng dưới liệt kê chi tiết các tham số:
Tùy chọn Miêu tả
-g GID Giá trị số của ID nhóm.
-o Tùy chọn này cho phép để thêm nhóm với GID không duy nhất.
-r Dấu hiệu này chỉ thị sự thêm nhóm tới tài khoản hệ thống.
-f
Tùy chọn này khiến cho nó chỉ thoát ra với trạng thái thành công nếu nhóm
đã xác định đã tồn tại. Với –g, nếu GID đã tồn tại, thì GID khác (duy nhất)
được chọn.
groupname Tên nhóm thực sự được tạo.
Nếu bạn không xác định bất cứ tham số nào thì hệ thống sẽ sử dụng các giá trị mặc định.
Ví dụ sau sẽ tạo một nhóm developers với các giá trị mặc định, mà được chấp thuận bởi hầu hết
các nhà quản lý.
$ groupadd developers
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 135
Chỉnh sửa một nhóm trong Unix/Linux
Để chỉnh sửa một nhóm, sử dụng cú pháp lệnh groupmod:
$ groupmod -n new_modified_group_name old_group_name
Để thay đổi tên nhóm developers_2 thành deverloper, bạn gõ như sau:
$ groupmod -n developer developer_2
Dưới đây là cách thay đổi GID thành 545:
$ groupmod -g 545 developer
Xóa một nhóm trong Unix/Linux
Để xóa một nhóm đang tồn tại, tất cả thứ bạn cần làm là lệnh groupdel và tên nhóm đó. Để xóa
nhóm developer, lệnh là:
$ groupdel developer
Lệnh này chỉ gỡ bỏ nhóm, không phải bất kỳ file nào liên quan tới nhóm. Các file là vẫn có thể truy
cập được bởi người sở hữu của nó.
Tạo một tài khoản cá nhân trong Unix/Linux
Hãy cùng chúng tôi xem cách tạo một tài khoản cá nhân mới trên hệ thống Unix của bạn. Dưới đây
là cú pháp để tạo một tài khoản cá nhân:
useradd -d homedir -g groupname -m -s shell -u userid accountname
Bảng dưới liệt kê chi tiết các tham số:
Tùy chọn Miêu tả
-d homedir Xác định thư mục chính cho tài khoản.
-g groupname Xác định một tài khoản nhóm cho tài khoản cá nhân này.
-m Tạo thư mục chính nếu nó không tồn tại.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 136
-s shell Xác định shell mặc định cho tài khoản cá nhân này.
-u userid Bạn có thể xác định ID cá nhân cho tài khoản này.
accountname Tên tài khoản cá nhân thực sự được tạo ra.
Nếu bạn không xác định bất kỳ tham số nào thì hệ thống sẽ sử dụng các giá trị mặc định. Lệnh
useradd chỉnh sửa các tệp /etc/passwd, /etc/shadow, /etc/group và tạo một thư mục chính.
Dưới đây là ví dụ mà sẽ tạo một tài khoản mcmohd thiết lập thư mục chính của nó tới
/home/mcmohd và nhóm là developers. Người sử dụng này là Kenny Chính mà được chỉ định cho
nó.
$ useradd -d /home/mcmohd -g developers -s /bin/ksh mcmohd
Trước khi thông báo lệnh trên, bảo đảm rằng bạn đã có nhóm developers được tạo bằng
lệnh groupadd.
Khi một tài khoản cá nhân được tạo, bạn có thể thiết lập mật khẩu cho nó bằng cách sử dụng
lệnh passwd như sau:
$ passwd mcmohd20
Changing password for user mcmohd20.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Khi bạn gõ passwd accountname, nó cung cấp cho bạn tùy chọn để thay đổi mật khẩu được cung
cấp nếu bạn là superuser, nếu không thì bạn chỉ có thể thay đổi mật khẩu sử dụng lệnh tương tự
nhưng không xác định tên tài khoản của bạn.
Chỉnh sửa một tài khoản
Lệnh usermod cho bạn khả năng để tạo các thay đổi tới một tài khoản cá nhân đang tồn tại từ
dòng lệnh. Nó sử dụng các đối số như lệnh useradd, cộng với đối số -l, mà cho phép bạn thay đổi
tên tài khoản.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 137
Ví dụ, để thay đổi tên tài khoản cá nhân mcmohd thành mcmohd20 và thay đổi thư mục chính, bạn
sẽ cần thông báo lệnh sau:
$ usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20
Xóa một tài khoản trong Unix/Linux
Lệnh userdel có thể được sử dụng để xóa một tài khoản cá nhân đang tồn tại. Lệnh này là rất
nguy hiểm nếu không được sử dụng với sự cẩn trọng.
Chỉ có một đối số hoặc một tùy chọn có sẵn cho lệnh: .r, để gỡ bỏ thư mục chính và mail của tài
khoản.
Ví dụ, để gỡ bỏ tài khoản mcmohd20, bạn cần thông báo lệnh sau:
$ userdel -r mcmohd20
Nếu bạn muốn giữ thư mục chính cho các mục sau, bạn không sử dụng tùy chọn .r. Bạn có thể gỡ
bỏ thư mục chính vào lần sau.
Hiệu năng hệ thống trong Unix
Mục đích của chương hướng dẫn này là giới thiệu phân tích hiệu năng bằng các công cụ có sẵn để
giám sát và quản lý hiệu năng trên các hệ thống Unix, và để cung cấp một nguyên tắc chỉ đạo
chung về cách để phát hiện và sửa các vấn đề về hiệu năng trong môi trường Unix.
Unix có các kiểu nguồn chính sau mà cần được giám sát kiểm tra và được bật lên:
CPU
Bộ nhớ
Không gian đĩa
Các dây dẫn giao tiếp
I/O Time
Thời gian mạng
Các chương trình ứng dụng
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 138
Các thành phần hiệu năng trong Unix/Linux
Dưới đây liệt kê 5 thành phần chính:
Thành phần Miêu tả
Trạng thái CPU
người sử dụng
Lượng thời gian thực tế mà CPU dành để chạy chương trình của người sử
dụng trong trạng thái người dùng. Nó bao gồm thời gian dành để chạy các
triệu hồi thư viện, nhưng không bao gồm thời gian dành trong Kernel.
Trạng thái CPU
hệ thống
Lượng thời gian mà CPU dành cho chương trình này trong trạng thái hệ
thống. Tất cả chương trình I/O yêu cầu các sự phục vụ Kernel. Người viết
chương trình có thể ảnh hưởng giá trị này bằng cách sử dụng khóa kết nối
I/O.
Thời gian I/O
và mạng hệ
thống
Lượng thời gian dành cho di chuyển dữ liệu và phục vụ các yêu cầu I/O.
Hiệu năng bộ
nhớ ảo
Nó bao gồm sự chuyển mạch và trao đổi bối cảnh.
Chương trình
ứng dụng
Thời gian dành cho chạy các chương trình khác – khi hệ thống không phục
vụ ứng dụng này bởi vì ứng dụng khác hiện tại đang có trong CPU.
Các công cụ hiệu năng trong Unix/Linux
Unix cung cấp các công cụ quan trọng để đo lường và tinh chỉnh hiệu năng hệ thống:
Lệnh Miêu tả
nice/renice Chạy một chương trình với quyên ưu tiên được sửa đổi trước.
netstat
In các kết nối mạng hệ thống, bảng định tuyến, các thống kê giao diện,
các kết nối ẩn danh và các thành viên multicast.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 139
time Lượng thời gian một lệnh đơn hoặc cung cấp cách sử dụng nguồn.
uptime Trung bình tải hệ thống (SLA – System Load Average)
ps Báo cáo một ảnh chụp nhanh (snapshot) của các tiến trình hiện tại.
vmstat Báo cáo các thống kê về bộ nhớ ảo.
gprof Hiển thị gọi đồ thị dữ liệu profile.
prof Tiến trình profile
top Hiển thị các nhiệm vụ của hệ thống.
Bạn có thể truy cập vào Trang trợ giúp (Manpage Help) để kiểm tra cú pháp đầy đủ cho mỗi lệnh
được đề cập ở đây.
Hệ thống ghi log trong Unix
Các hệ thống Unix có hệ thống ghi log rất mạnh và linh động, mà cho bạn khả năng để ghi lại hầu
hết mọi thứ bạn có thể tưởng tượng và sau đó thao tác sự ghi log này để truy xét thông tin bạn yêu
cầu.
Rất nhiều phiên bản của Unix cung cấp một phương tiện dễ dàng ghi log với mục đích chung gọi là
syslog. Mỗi chương trình cần thông tin ghi log được gửi tới syslog.
syslog trong Unix là một host có thể định hình, là phương tiện ghi log hệ thống đồng dạng. Hệ
thống sử dụng một tiến trình ghi log hệ thống trung tâm mà chạy chương
trình/etc/syslogd hoặc /etc/syslog.
Hoạt động của hệ thống ghi log là không phức tạp. Các chương trình gửi cửa vào ghi log
tớisyslogd, mà tham vấn từ file định cấu hình /etc/syslogd.conf hoặc /etc/syslog và khi một kết nối
được tìm thấy, nó viết thông tin ghi log tới file ghi log đã yêu cầu.
Bảng dưới liệt kê 4 mục syslog cơ bản mà bạn nên hiểu:
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 140
Mục Miêu tả
Facility
(phương tiện)
Dấu hiệu nhận diện được sử dụng để miêu tả ứng dụng hoặc tiến trình mà đệ
trình tới thông báo log. Các ví dụ là mail, kernel, và ftp.
Priority (quyền
ưu tiên)
Một chỉ dẫn quan trọng của thông báo. Các mức được xác định trong syslog
như một guideline, từ việc chỉnh lỗi thông tin tới các sự kiện quan trọng.
Selector (bộ
chọn)
Một sự kết nối của một hoặc nhiều phương tiện và mức độ. Khi một sự kiện
mới đến kết nối với một bộ chọn, một hành động được thực hiện.
Action (hành
động)
Điều gì xảy ra khi một thông tin mới đến kết nối với một bộ chọn. Các hành
động có thể viết thông tin tới file ghi log, phản xạ thông tin tới một bàn điều
khiển hoặc thiết bị khác, viết thông báo tới hệ thống ghi log của người sử dụng
hoặc gửi thông báo cùng với máy chủ syslog khác.
Các phương tiện syslog trong Unix/Linux
Dưới đây là các phương tiện có sẵn cho bộ chọn. Không phải tất cả các phương tiện có mặt trên
tất cả các phiên bản của Unix.
Facility Miêu tả
auth
Các hoạt động liên quan đến yêu cầu tên và mật khẩu (getty, su,
login)
authpriv
Tương tự như auth nhưng ghi log tới một file mà chỉ có thể được
đọc bởi những người dùng được chọn.
console
Sử dụng để bắt các thông báo mà thường trực tiếp gửi tới bàn điều
khiển hệ thống.
cron Các thông báo từ người lập hệ thống cron.
daemon Hệ thống daemon nhận tất cả.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 141
ftp Các thông báo liên quan đến hệ thống ftp deamon.
kern Các thông báo kernel.
local0.local7 Các phương tiện nội bộ được xác định cho mỗi site.
lpr Các thông báo từ dòng hệ thống in.
mail Các thông báo liên quan tới hệ thống mail.
mark
Các sự kiện giả được sử dụng để tạo timestamp trong các file hệ
thống.
news
Các thông báo liên quan tới mạng lưới giao thức tin tức (network
news protocol)
ntp Các thông báo liên quan đến giao thức thời gian mạng.
user Các tiến trình người dùng thông thường.
uucp Hệ thống phụ UUCP.
Các quyền ưu tiên syslog trong Unix/Linux
Các quyền ưu tiên syslog được tổng hợp ở dưới bảng sau:
Quyền ưu tiên Miêu tả
emerg
Tình trạng khẩn cấp, như một sự ngưng hoạt động hệ thống sắp xảy ra,
thường được thông báo tới tất cả người dùng.
alert
Tình trạng mà nên được chỉnh lại cho đúng ngay lập tức, như một dữ
liệu hệ thống bị hư hỏng.
crit Tình trạng nghiêm trọng, như lỗi phần cứng.
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 142
err Các lỗi thông thường.
warning Cảnh báo.
notice
Tình trạng mà không là lỗi, nhưng có lẽ nên được thực hiện theo một
cách đặc biệt.
info Thông báo mang tính thông tin.
debug Các thông báo mà được sử dụng khi chỉnh lỗi các chương trình.
none Các mức giả tạo được sử dụng để xác định không log các thông báo.
Sự kết nối của các phương tiện và các mức cho bạn khả năng để thấy rõ về những gì được ghi log
và nơi mà các thông tin bắt nguồn.
Khi mỗi chương trình gửi các thông báo của nó một cách nghiêm túc tới hệ thống ghi log, trình ghi
log tạo các quyết định về những gì để theo dõi nó và những gì để loại bỏ nó ở các mức được xác
định trong bộ chọn.
Khi bạn xác định một mức, hệ thống sẽ theo dõi mọi thứ tại mức đó và cao hơn.
Tệp /etc/syslog.conf trong Unix/Linux
Tệp này điều khiển nơi các thông báo được log. Một tệp syslog.conf đặc trưng có thể trông giống
như thế này:
*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice /var/log/messages
lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @prep.ai.mit.edu
auth.* root,amrood
netinfo.err /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 143
*.alert |program_name
mark.* /dev/console
Mỗi dòng của file chứa hai phần:
Một bộ chọn thông báo mà xác định loại thông báo để log. Ví dụ, tất cả các thông báo lỗi
hoặc tất cả các thông báo chỉnh lỗi từ kernel.
Một trường hành động mà nói những gì nên được làm với thông báo đó. Ví dụ, đặt nó trong
một file hoặc gửi thông báo tới terminal của một người dùng.
Dưới đây là các điểm đáng chú ý cho sự định cấu hình trên:
Các bộ chọn thông báo gồm hai phần: một phương thức và một quyền ưu tiên. Ví
dụ, kern.debug chọn tất cả các thông báo debug (có Priority) được tạo bởi kernel (có
Facility).
Bộ chọn thông báo kern.debug chọn tất cả các quyền ưu tiên mà ưu tiên hơn chỉnh lỗi.
Một dấu sao * trong vị trí hoặc của phương thức hoặc quyền ưu tiên ám chỉ rằng “tất cả”. Ví
dụ, *.debug nghĩa là tất cả các thông báo chỉnh lỗi, trong khi kern.* nghĩa là tất cả các thông
báo được tạo ra bởi kernel.
Bạn cũng có thể sự dụng các dấu phảy để xác định nhiều phương thức. Hai hoặc nhiều bộ
chọn có thể được nhóm lại với nhau bằng cách sử dụng một dấu chấm phảy (;).
Các hành động ghi log trong Unix/Linux
Trường hành động xác định một trong 5 hành động sau:
1. Thông tin ghi log tới một file hoặc một thiết bị. Ví dụ, /var/log/lpr.log hoặc /dev/console.
2. Gửi một thông báo tới một người sử dụng. Bạn có thể xác định nhiều tên sử dụng bằng việc
ngăn cách chúng bởi dấu phảy (ví dụ root, amrood).
3. Gửi một thông báo tới tất cả người dùng. Trong trường hợp này, trường hành động bao
gồm một dấu *.
4. Gửi một thông báo thông qua pipe tới một chương trình. Trong trường hợp này, chương
trình được xác định sau ký hiệu pipe (|).
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 144
5. Gửi thông báo tới syslog trên một host khác. Trong trường hợp này, trường hành động bao
gồm một tên host, được đặt trước bởi một dấu hiệu (ví dụ: @tutorialspoint.com)
Lệnh logger trong Unix/Linux
Unix cung cấp lệnh logger, mà là một lệnh thực sự hữu ích để giải quyết hệ thống ghi log. Lệnh
logger gửi các thông báo ghi log tới syslogd deamon, và do đó kích thích hệ thống ghi log.
Điều này có nghĩa là chúng ta có thể kiểm tra từ dòng lệnh tại bất cứ thời gian nào.
Lệnhlogger cung cấp một phương thức để thêm cổng vào một dòng tới hệ thống ghi log file từ
dòng lệnh.
Định dạng của lệnh là:
logger [-i] [-f file] [-p priority] [-t tag] [message]...
Dưới đây là chi tiết về các tham số.
Chức năng Miêu tả
-f filename Sử dụng nội dung của tên file như thông báo để log.
-i log ID tiến trình của tiến trình logger với mỗi dòng.
-p priority
Nhập thông báo với quyền ưu tiên được xác định (lối vào bộ chọn được xác
định); quyền ưu tiên thông báo có thể được xác định ở dạng số hoặc như là cặp
phương thức.quyền ưu tiên. Quyền ưu tiên mặc định là user.notice.
-t tag Đánh dấu mỗi dòng được thêm tới hệ thống log với thẻ đã xác định.
message
Các tham số chuỗi mà nội dung được kết nối cùng nhau theo thứ tự xác định,
riêng rẽ bởi khoảng trống.
Bạn có thể sử dụng trang Trang trợ giúp (Manpage Help) để kiểm tra cú pháp của các lệnh này.
Sự luân phiên log trong Unix/Linux
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 145
Các log file có thiên hướng tăng lên rất nhanh và chiếm một khoảng lớn của không gian đĩa. Để
cho phép khả năng luân phiên log, hầu hết phiên bản sử dụng các công cụ
nhưnewsyslog hoặc logrotate.
Những công cụ này nên được gọi trên một khoảng không gian thường xuyên bằng cách sử dụng
cron deamon. Bạn truy cập vào chương Trang trợ giúp (Manpage Help) để biết thêm chi tiết về
newsyslog hoặc logrotate.
Các vị trí log quan trọng trong Unix/Linux
Tất cả ứng dụng hệ thống tạo các tệp log trong /var/log và các thưc mục phụ của nó. Dưới đây là
một số ứng dụng quan trọng và các thư mục log tương ứng của chúng.
Ứng dụng Thư mục
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/
Signal và Trap trong Unix/Linux
Signals là các tín hiệu ngắt phần mềm được gửi tới một chương trình báo rằng có một sự kiện
nghiêm trọng đã xảy ra. Các sự kiện này có thể rất đa dạng từ các yêu cầu người sử dụng truy cập
vào bộ nhớ bất hợp pháp. Một vài signal, như signal ngắt, chỉ rằng một người sử dụng đã đòi hỏi
chương trình làm cái gì đó mà không trong sự kiểm soát.
Bảng dưới đây liệt kê các signal thông thường mà bạn có thể bắt gặp hoặc muốn sử dụng nó trong
các chương trình của bạn:
Tên signal
Số
hiệu
Miêu tả
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 146
signal
SIGHUP 1
Trì hoãn việc kiểm tra trên quản lý terminal hoặc sự dừng của quản lý
tiến trình.
SIGINT 2 Được thông báo nếu người sử dụng gửi một tín hiệu ngắt (Ctrl+C).
SIGQUIT 3 Được thông báo nếu người sử dụng gửi một tín hiệu bỏ (Ctrl+D).
SIGFPE 8
Được thông báo nếu một hoạt động thuộc về toán không hợp pháp
được thử chạy.
SIGKILL 9
Nếu một tiến trình nhận signal này, nó phải thoát ra ngay lập tức và
sẽ không thực hiện các hoạt động làm sạch.
SIGALRM 14 Tín hiệu báo số lần thực hiện (Alarm Clock).
SIGTERM 15 Tín hiệu kết thúc phần mềm (được gửi bởi sigkill theo mặc định).
Danh sách các signal trong Unix/Linux
Có một cách dễ dàng để liệt kê tất cả các signal được hỗ trợ bởi hệ thống của bạn. Chỉ cần thông
báo lệnh kill -l và nó sẽ hiển thị tất cả các signal được hỗ trợ.
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 147
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Danh sách thực tế trên của signal là đa dạng và khác nhau giữa Solaris, HP-UX và Linux.
Các hoạt động mặc định trong Unix/Linux
Mỗi signal có một hoạt động mặc định liên kết với nó. Hoạt động mặc định với một signal là hoạt
động mà một script hoặc một chương trình thực hiện khi nó nhận được một signal.
Một trong số các hoạt động mặc định có thể là:
Kết thúc tiến trình
Bỏ qua signal
Kết xuất lõi nhớ. Nó tạo một file gọi là core (lõi) chứa hình ảnh bộ nhớ của tiến trình khi nó
nhận được signal
Dừng tiến trình
Tiếp tục tiến trình bị dừng
Gửi các signal trong Unix/Linux
Có một vài phương thức trong việc gửi các signal tới một chương trình hoặc một script. Một trong
những phương thức phổ biến nhất là cho người sử dụng gõ phím Ctrl +C hoặc phím dừng trong
khi một script đang chạy.
Khi bạn nhấn phím Ctrl+C, một SIGINT được gửi tới script và khi mỗi hành động mặc định đã xác
định sẽ kết thúc script.
Phương thức phổ biến khác để gửi signal là sử dụng lệnh kill mà có cú pháp như sau:
$ kill -signal pid
Ở đây, signal là hoặc số hoặc tên của signal để gửi và pid là ID tiến trình mà signal nên được gửi
tới. Ví dụ:
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 148
$ kill -1 1001
Gửi HUP hoặc signal dừng tới một chương trình mà đang chạy với ID tiến trình là 1001. Để gửi
một kill signal tới tiến trình giống như vậy, bạn sử dụng lệnh sau:
$ kill -9 1001
Nó sẽ hủy tiến trình đang chạy có ID tiến trình 1001.
Trap signal trong Unix/Linux
Khi bạn nhấn phím Ctrl+C hoặc phím dừng tại terminal của bạn trong suốt quá trình chạy một
chương trình shell, thông thường thì chương trình đó bị ngay lập tức kết thúc, và dòng nhắc lệnh
xuất hiện trở lại. Việc này có thể sẽ không luôn luôn làm bạn thích thú. Ví dụ, bạn có thể sẽ để lại
hàng loạt các tập tin tạm thời mà không được dọn sạch.
Trap signal là khá dễ dàng, và lệnh trap có cú pháp như sau:
$ trap commands signals
Ở đây, command có thể là bất cứ lệnh Unix có hiệu lực nào, hoặc ngay cả là một chức năng đã
định nghĩa của người sử dụng, và signal có thể là danh sách các signal mà bạn muốn trap.
Có 3 cách sử dụng phổ biến để trap trong shell script:
1. Dọn sạch các file tạm thời
2. Bỏ qua các signal
Dọn sạch các file tạm thời trong Unix/Linux
Như một ví dụ của lệnh trap, dưới đây chỉ cách bạn có thể gỡ bỏ một vài file và sau đó thoát khỏi
nếu ai đó cố gắng bỏ dở chương trình từ terminal.
$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2
Từ điểm trong chương trình shell mà trap này được thực thi, hai tệp work1$$ và dataout$$sẽ tự
động bị dỡ bỏ nếu signal số 2 được nhận bởi chương trình.
Vì thế nếu người sử dụng ngắt việc thi hành của chương trình thì sau đó trap này được chạy, bạn
có thể được đảm bảo chắc chắn rằng hai file này sẽ được dọn sạch sẽ. Lệnh exit mà theo sau
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 149
bởi rm là cần thiết bởi vì không có nó thì chương trình sẽ tiếp tục chạy tại điểm mà nó dừng lại khi
signal được nhận.
Signal số 1 được tạo để trì hoãn: hoặc ai đó cố tình treo dòng hoặc dòng một cách ngẫu nhiên bị
ngắt kết nối.
Bạn có thể chỉnh sửa trap trước để cũng gỡ bỏ hai file đã xác định trong trường hợp này bằng
cách thêm signal số 1 tới danh sách các signal.
$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2
Bây giờ những file này sẽ bị gỡ bỏ nếu dòng bị treo hoặc nếu phím Ctrl+C được nhấn.
Lệnh được xác định để trap phải được bao quanh trong trích dẫn nếu chúng chứa nhiều hơn một
lệnh. Bạn cũng lưu ý rằng shell quét dòng lệnh tại thời điểm mà lệnh trap được chạy và cũng thưc
hiện quét lần nữa khi một trong các signal được liệt kê được nhận.
Vì thế trong ví dụ trước, giá trị của WORKDIR và $$ sẽ được thay đổi tại thời gian mà lệnh trap
được chạy. Nếu bạn muốn sự thay đổi này xảy ra tại thời điểm mà hoặc signal số 1 hoặc số 2
được nhận, bạn có thể đặt các lệnh bên trong trích dẫn đơn như sau:
$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2
Bỏ qua các signal trong Unix/Linux
Nếu lệnh được liệt kê cho trap là null, thì signal được xác định sẽ bị bỏ qua khi được nhận. Ví dụ,
lệnh sau:
$ trap '' 2
Xác định rằng signal ngắt bị bỏ qua. Bạn có thể muốn bỏ qua các signal cụ thể nào đó khi thực
hiện một số hoạt động mà mà không muốn bị ngắt. Bạn có thể xác định nhiều signal bị bỏ qua như
sau:
$ trap '' 1 2 3 15
Ghi nhớ rằng đối số thứ nhất phải được xác định cho một signal để bị bỏ qua và cách trên là không
cân bằng với cách viết sau, mà cách viết sau này có ý nghĩa riêng của nó:
$ trap 2
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 150
Nếu bạn bỏ qua một signal, tất cả các shell phụ cũng bỏ qua signal đó. Tuy nhiên, nếu bạn xác
định một hành động được thực hiện khi nhận được signal thì tất cả các shell phụ cũng sẽ vẫn thực
hiện hành động đó khi nhận được signal đó.
Thiết lập lại trap trong Unix/Linux
Sau khi bạn đã thay đổi các hành động mặc định khi nhận được một signal, bạn có thể thay đổi trở
lại lần nữa với trap, nếu bạn đơn giản bỏ qua đối số đầu tiên như sau:
$ trap 1 2
Nó thiết lập lại hành động được thực hiện khi nhận được signal số 1 hoặc 2 trở lại dạng mặc định.
Các lệnh hữu ích trong Unix
Chương này liệt kê danh sách các lệnh, bao gồm cú pháp và các miêu tả ngắn gọn. Để có thêm
nhiều chi tiết về các lệnh này, bạn sử dụng:
$man command
Các file và thư mục trong Unix/Linux
Các lệnh này cho phép bạn tạo các thư mục và điều khiển các file.
Lệnh Miêu tả
cat Hiển thị nội dung file
cd Thay đổi thư mục tới dirname
chgrp Thay đổi nhóm file
chmod Thay đổi sự cho phép
cp Sao chép file nguồn vào trong nơi đến
file Xác định kiểu file
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 151
find Tìm kiếm các file
grep Tìm file với biểu thức quy chuẩn
head Hiển thị một vài dòng đầu của file
ln Tạo một link mềm trên tên cũ
ls Hiển thị thông tin về kiểu file
mkdir Tạo một thư mục dirname mới
more Hiển thị dữ liệu trong mẫu được đánh số trang
mv Di chuyển (đặt lại tên) một tên file cũ thành một tên file mới
pwd In thư mục làm việc hiện tại
rm Gỡ bỏ (xóa) một file
rmdir Xóa một thư mục đang tồn tại
tail In một vài dòng cuối của thư mục
touch Cập nhật truy cập và thời gian chỉnh sửa của một file
Thao tác dữ liệu trong Unix/Linux
Các nội dung của file có thể dược so sánh và thay đổi với các lệnh sau:
Lệnh Miêu tả
awk Quét mẫu và tiến trình ngôn ngữ
cmp So sánh nội dung của 2 file
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 152
comm So sánh dữ liệu được phân loại
cut Cắt các trường được chọn trong mỗi dòng của một file
diff Bộ so sánh file vi sai
expand Mở rộng các tab
join Kết hợp file trên một số trường phổ biến
perl Ngôn ngữ thao tác dữ liệu
sed Bộ soạn luồng văn bản
sort Phân loại dữ liệu file
split Phân chia file thành các file nhỏ hơn
tr Biên dịch các ký tự
uniq Báo cáo các dòng được lặp trong một file
wc Tính toán số lượng từ, dòng, và ký tự
vi Mở bộ soạn văn bản vi
vim Mở bộ soạn văn bản vim
fmt Bộ định dạng văn bản đơn giản
spell Kiểm tra các lỗi chính tả văn bản
ispell Kiểm tra các lỗi chính tả văn bản
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 153
ispell Kiểm tra các lỗi chính tả văn bản
emacs GNU dự án Emacs
ex, edit Bộ soạn dòng
emacs GNU dự án Emacs
emacs GNU dự án Emacs
Nén file trong Unix/Linux
Các file có thể được nén để tiết kiệm không gian. Các file bị nén có thể được tạo và thực hành với
các lệnh dưới.
Lệnh Miêu tả
compress Nén các file
gunzip Bỏ nén các file
gzip Phương thức nén thay thế GNU
uncompress Bỏ nén các file
unzip Liệt kê, kiểm tra và giải nén các file bị nén trong tài liệu ZIP
zcat Nối và liên kết các file bị nén
zcmp So sánh các file bị nén
zdiff So sánh các file bị nén
zmore Lọc file để quan sát crt của các văn bản bị nén
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 154
Nhận thông tin trong Unix/Linux
Các tài liệu tra cứu và các sổ tay Unix đa dạng có sẵn trên mạng trực tuyến. Các lệnh shell sau sẽ
cung cấp thông tin cho bạn:
Lệnh Miêu tả
apropos Đặt vị trí các lệnh bằng từ khóa tra cứu.
info Hiển thị thông tin lệnh trên trang trực tuyến
man Hiển thị sổ tay các trang trực tuyến
whatis Tìm kiếm dữ liệu whatis cho các từ đầy đủ.
yelp Bộ thẩm tra sự giúp đỡ GNOME
Giao tiếp mạng hệ thống trong Unix/Linux
Các lệnh sau được sử dụng để gửi và nhận các file từ một host nội bộ tới một host điều khiển từ xa
trên Thế giới.
Lệnh Miêu tả
ftp Chuyển file tới chương trình
rcp Điều khiển từ xa việc sao chép file
rlogin Đăng nhập từ xa tới một Unix host
rsh Điều khiển từ xa shell
tftp Chương trình truyền tải file thường
telnet Tạo kết nối terminal tới host khác
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 155
ssh Bảo an shell terminal hoặc sự kết nối lệnh
scp Bảo an shell từ việc sao chép file từ xa
sftp Bảo an shell từ gửi file tới chương trình
Một trong số các lệnh trên có thể bị hạn chế tại máy tính của bạn vì các lý do bảo mật.
Các thông báo giữa các người sử dụng trong
Unix/Linux
Hệ thống Unix hỗ trợ các thông báo hiển thị trên màn hình tới người sử dụng khác và gửi mail tự
động trên toàn Thế giới.
Lệnh Miêu tả
evolution Công cụ điều khiển mail GNU trên Linux
mail Chương trình gửi và đọc mail đơn giản
mesg Cho phép hoặc từ chối nhận các thông báo
parcel Gửi các file tới người dùng khác
pine Tiện ích vdu-base mail
talk Nói chuyện với người sử dụng khác
write Viết thông báo tới người sử dụng khác
Các chương trình tiện ích trong Unix/Linux
Bảng dưới là các công cụ và ngôn ngữ mà có sẵn dựa trên những gì bạn cài đặt trên hệ thống
Unix của bạn:
Lệnh Miêu tả
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 156
dbx Chương trình chỉnh lỗi Sun
gdb Chương trình chỉnh lỗi GNU (GNU debugger)
make Duy trì các nhóm chương trình và các chương trình biên dịch
nm In danh sách tên chương trình
size In kích cỡ của chương trình
strip Dỡ bỏ bảng ký tự và đặt lại vị trí các bit
cb Bộ viết đúng (beautifier) chương trình C
cc Bộ biên dịch ANSI C cho các hệ thống Suns SPARC
ctrace Chương trình chỉnh lỗi C
gcc Bộ biên dịch GNU ANSI C
indent Sắp chữ thụt vào và định dạng của nguồn chương trình C
bc Bộ xử lý ngôn ngữ số học tương tác
gcl GNU Common Lisp
perl Ngôn ngữ mục đích chung
php Trang web ngôn ngữ được nhúng
py Bộ phiên dịch ngôn ngữ Python
asp Trang web ngôn ngữ được nhúng
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 157
CC Bộ biên dịch C++ cho các hệ thống Suns SPARC
g++ Bộ biên dịch GNU C++
javac Bộ biên dịch JAVA
appletvieweir Bộ thẩm tra vi mã JAVA
netbeans Tích hợp môi trường phát triển JAVA trên Linux
sqlplus Chạy bộ phiên dịch Oracle SQL
sqlldr Chạy bộ tải dữ liệu Oracle SQL
mysql Chạy bộ phiên dịch mysql SQL
Các lệnh hỗn hợp trong Unix/Linux
Dưới đây là các lệnh và thông tin thay đổi về hệ thống:
Lệnh Miêu tả
chfn Thay đổi thông tin lệnh finger của bạn
chgrp Thay đổi sở hữu nhóm của một file
chown Thay đổi người sở hữu
date In ngày
determin Tự động tìm kiếm kiểu terminal
du In dung lượng đĩa sử dụng
echo Phản xạ các đối số tới các chức năng tiêu chuẩn
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 158
exit Thoát khỏi hệ thống
finger In thông tin về những người sử dụng đã đăng nhập vào
groupadd Tạo một nhóm người sử dụng
groups Chỉ các thành viên của nhóm
homequota Chỉ hạn ngạch và dung lượng file sử dụng
iostat Báo cáo các thống kế I/O
kill Gửi một signal tới một chương trình
last Hiển thị các đăng nhập cuối của những người sử dụng
logout Thoát khỏi Unix
lun Liệt kê các tên người dùng hoặc ID đăng nhập
netstat Chỉ trạng thái của mạng hệ thống
passwd Thay đổi mật khẩu của người sử dụng cá nhân
passwd Thay đổi mật khẩu đăng nhập của bạn
printenv Hiển thị giá trị của một biến shell
ps Hiển thị trạng thái của các tiến trình hiện tại
ps In các thống kê trạng thái của tiến trình
quota -v Hiển thị dung lượng sử dụng đĩa và các giới hạn
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 159
reset Thiết lập lại chế độ terminal
script Giữ scritp của khu vực terminal
script Lưu giữ kết quả đầu ra của một lệnh hoặc một tiến trình
setenv Thiết lập các biến môi trường
stty Thiết lập các chức năng terminal
time Thời gian của một lệnh
top Hiển thị tất cả các tiến trình hệ thống
tset Thiết lập chế độ terminal
tty In tên terminal hiện tại
umask
Chỉ các sự cho phép mà được cung cấp để quan sát các file theo
mặc định
uname Hiển thị tên của hệ thống hiện tại
uptime Nhận thời gian hoạt động của hệ thống
useradd Tạo một tài khoản sử dụng cá nhân
users In tên của những người sử dụng đã đăng nhập
vmstat Báo cáo các thống kê bộ nhớ thực
w Chỉ những gì mà người dùng đã đăng nhập đang thực hiện
who Liệt kê danh sách những người dùng đã đăng nhập
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 160
Hàm toán học có sẵn trong Shell
Hầu hết các phần của Bài hướng dẫn chủ yếu xây dựng trên Bourne Shell nhưng trang này liệt kê
tất cả các hàm toán học được xây dựng có sẵn trong Korn Shell.’
Korn Shell cung cấp sự truy cập tới bộ thiết lập tiêu chuẩn của các hàm toán học. Chúng được gọi
bằng cách sử dụng cú pháp gọi hàm C:
Hàm Miêu tả
abs Giá trị tuyệt đối
log Logarit tự nhiên
acos Hàm arcos
sin Hàm sin
asin Hàm arcsin
sinh Hàm sin hyperbolic
cos Hàm cos
sqrt Căn bậc hai
cosh Hàm cos hyperpolic
tan Hàm tan
exp Hàm mũ
tanh Hàm tan hyperpolic
int Phần nguyên
Copyright © vietjack.com
Trang chia sẻ các bài học online miễn phí Page 161
Tài liệu tham khảo Unix/Linux
Dưới đây là danh sách các nguồn hữu ích về Unix/Linux. Bạn nên tham khảo chúng để hiểu sâu
hơn những chủ đề chúng tôi đã đề cập trong loạt bài này.
Tutorialspoint − Loạt bài hướng dẫn của chúng tôi xây dựng dựa trên nguồn này.
Bell Labs − Quá trình tạo Hệ điều hành UNIX. Cung cấp tổng quan và lịch sử của Hệ điều
hành UNIX.
BSD UNIX − FreeBSD là một Hệ điều hành UNIX bậc cao cho Server, desktop, và các
Platform hiện đại.
Linux Online − Linux là một Hệ điều hành Unix-type miễn phí được tạo lần đầu bởi Linus
Torvalds với sự hỗ trợ của các nhà lập trình trên toàn Thế giới.
Unix @ Wikipedia − Một miêu tả ngắn gọn về Hệ điều hành Unix.
The Unix Forums − Một diễn đàn cho những người yêu Unix. Chia sẻ ý tưởng và suy nghĩ
của bạn với các Chuyên gia về Unix.
Các file đính kèm theo tài liệu này:
- tai_lieu_unix_tieng_viet_4249.pdf