z Có thể login trực tiếp hay dùng chương trình telnet để kết nối đến server z Mỗi người dùng phải có một tài khoản account để sử dụng hệ thống.. -5-Log on vào hệ thống z Trực tiếp: tại
Trang 1Tài liệu hướng dẫn
– Dùng trình soạn thảo vi (visual intepreter)
– Dùng dịch vụ truyền file FTP (File Transfer Protocol)
z Lập trình shell
– Chương trình shell đơn giản
Một số cấu trúc điều khiển: if, while, for
Trang 2-3-Giới thiệu
z Thực hành trên hệ điều hành Linux hoặc Solaris.
z Có thể login trực tiếp hay dùng chương trình telnet để kết
nối đến server
z Mỗi người dùng phải có một tài khoản (account) để sử
dụng hệ thống Mỗi tài khoản gồm có:
– Tên sử dụng (username): duy nhất trong mỗi hệ thống
– Mật khẩu (password): (ít nhất 6 ký tự, bao gồm các chữ cái, ký sốhoặc ký tự đặc biệt)
– Thư mục làm việc (home directory): nơi lưu trữ dữ liệu và có toàn quyền sử dụng
Trang 3-5-Log on vào hệ thống
z Trực tiếp: tại dấu nhấc của hệ thống, gõ username và password
z Kết nối đến server từ qua chương trình telnet trên các máy Windows:
(Start menuÆRunÆType “telnet”ÆClick OK button)
Log on vào hệ thống
z Ví dụ, kết nối đến máy có địa chỉ IP là 172.28.11.192
Trang 4Last login: Sun Aug 12 07:05:01 from thuan.dit.hcmut.
Sun Microsystems Inc SunOS 5.7 Generic October 1998
$_
(Lưu ý: password không hiển thị khi gõ)
Log on vào hệ thống
Trang 5-9-Logging out
z Khi kết thúc công việc, cần phải thoát khỏi hệ
thống: Gõ: exit hoặc đóng cửa sổ telnet
z Tất cả các quá trình đang chạy đều kết thúc
(ngoại trừ các quá trình được thực hiện với lệnh
nohup)
Một số chú ý
z Hệ thống UNIX phân biệt chữ hoa và chữ thường
z Nếu log on từ các máy Windows, cần tắt các
chương trình gõ tiếng Việt (Vietware, Vietkey …)
z Đề xoá ký tự trước đó, có thể dùng phím
Backspace trong một số trường hợp không dùng
phím Delete được.
Trang 6-11-Các lệnh cơ bản
z Một lệnh UNIX cơ bản có các thành phần:
<command name> -<options> <arguments>
– Command name: tên lệnh, cũng chính là file thực thi tương ứng
– Options:chọn lựa chức năng, có thể có nhiều thành phần
– Arguments: thông số cho lệnh
z Mỗi người dùng có một danh định duy nhất trong hệ thống Đối với
người dùng, danh định chính là username duy nhất trong hệ thống
z Đối với hệ thống, một danh định người dùng bao gồm:
– UID (user identifier): danh định phân biệt giữa các người dùng
– GID (group identifier): danh định cho biết nhóm mà người dùng thuộc về
z Lệnh hiển thị UID và GID: id
z Lệnh cho biết danh định: whoami hoặc who am i
Ví dụ:
$ who am i
Trang 7-13-Thư mục làm việc, thư mục hiện hành
z Mỗi người dùng trong hệ thống đều có một thư mục làm
việc và người đó có toàn quyền trên đó
z Hiển thị thư mục làm việc:
Dùng lệnhechođể hiển thị biến môi trườngHOME:
Trang 8-15-UNIX password
Mac II
Unix
Thay đổi mật khẩu
z Lúc đầu, người dùng log on vào hệ thống có thể
không cần mật khẩu Tuy nhiên, người dùng phải thay đổi sau đó (ít nhất 6 ký tự, bao gồm các chữ
cái, ký số hoặc ký tự đặc biệt)
z Ví dụ:
$ passwd
New password:
Trang 9-17-Để được trợ giúp
z Dùng lệnhmanđể xem trợ giúp cho một lệnh hay một hàm nào đó
z Một phím chức năng trong lệnh man:
-Kết thúc: q -Về trang trước: b -Về trang sau: f
Passwd is used to update a user's authentication token(s).
Làm việc với file hay thư mục
z Cấu trúc hệ thống file
/
srcinclude
ls passwd hosts
.
Trang 10-19-Một số thư mục chính trong UNIX
/: thưmục gốc
/etc: thư mục chứa cấu hình hệ thống
/dev: thư mục chứa các file tương ứng với các thiết bị terminal, disk drives, …
/tmp: thư mục tạm (mọi người đều có toàn quyền trong thư mục này)
/home: thư mục chứa các thư mục làm việc của người dùng
/bin: thư mục chứa các file thực thi
Các kiểu file
z Directory file : l à file đặc biệt, chứa thông tin của các file khác
(Một thư mục thực chất là một file)
z Ordinary file: file thông thường, chương trình hoặc dữ liệu
z Special file : file đặc biệt, tương ứng với các thiết bị
(Device abstraction)
Trang 11-21-Thay đổi thư mục
z Dùng lệnh cd:
$cd <pathname>
với đường dẫn pathname cho biết thư mục cần chuyển
tới Đường dẫn có thể tương đối (tính từ thư mục hiện
hành) hoặc tuyệt đối (tính từ thư mục gốc)
Trang 12 -a liệt kê các file ẩn
-d xem tên của thư mục hiện hành
-F liệt kê các file và cho biết các kiểu của file qua ký hiệu ở cuối
Không có ký hiệu gì: file bình thường
'/‘ directories
“@” linked file
-i cho biết số của inode của file
-l liệt kê đầy đủ các thuộc tính của file
Trang 13drwxr-xr-x 15 hqthuan other 512 Aug 10 2000 floppy
-rw-r r 1 hqthuan other 58984 Mar 9 2000 archive.tar
z ông tin của một file:
drwxr-xr-x 15 hqthuan staff 512 Aug 10 2000 floppy
Permissions O wner Date of last
.desksetdefaults profile fork.c
(Các file ẩn có tên bắt đều bằng dấu chấm, ví dụ: .login, rhosts, login)
Trang 141.txt case.sh
Dùng wildcards
z Wildcards là các ký tự dùng để thay thế cho các mẫu tương ứng với
tên file hay thư mục
Trang 15-29-Các lệnh trên file và thư mục
z Tạo thư mục: mkdir
z Xoá file hay thư mục: rm
Trang 17-33-Copy
z Copy files:
cp [-option] source_file destination_file
cp [-option] source_files destination_directory
z Ví dụ:
Trang 18– Sau khi nhập nội dung, gõ <Enter> để xuống dòng.
– Ấn Ctrl-d để ghi nội dung soan thảo vào file và kết
thúc thao tác.
z Ví dụ:
$cat > test.txt
Trang 19– Dấu nhắc More (nn%) xuất hiện bên dưới màn hình.
– Có thề dùng cách phím điều khiển trong lệnh more:
z space bar Hiển thị trang kế.
z <RETURN> Hiển thị dòng kế.
z q Thoát khỏi lệnh more.
z b Về trang trước.
z h Trợ giúp.
Hiển thị nội dung file
z H i ển thi n dòng đầu tiên c ủa một text file, dùng
lệnh head:
head -n filename
(nếu n=10, có thể bỏ option đi: head filename)
z H i ển thi n dòng sau c ùng c ủa một text file, dùng
lệnh last:
last -n filename
(nếu n=10, có thể bỏ option đi: last filename)
Trang 20-39-Tìm kiếm một file
z Tìm kiếm một file trong hệ thống file (file system) ,
dùng lệnh find:
find pathname -name filename -print
(Có thề dùng wildcard đặt trong dấu nháy kép)
z Ví dụ:
Tìm kiếm trong nội dung của file
z Tìm một chuỗi ký tự trong một text file bằng lệnh
grep:
grep pattern filename(s)
pattern: chuỗi ký tự cần tìm kiếm Nếu chuỗi có ký tự
đặc biệt thì phải đặt trong dấu nháy đơn.
z Ví dụ:
Trang 21-41-Các quyền trên file và thư mục
z Hệ thống UNIX bảo vệ các file và thư mục thông qua các quyền thiết lập trên đó.
user group other
z Có thể xem Quyền truy cập bằng lệnh ls -l:
Ví dụ:
$ls -l
rwxr-xr-x
Với ví dụ trên:
– Chủ sở hữu có quyền r (đọc), w (ghi), và x (thực thi).
– Các thành viên cùng nhóm với chủ sở hữu có quyền r và x.
Trang 22-43-Thay đổi các quyền trên file và thư mục
z Dùng lệnh chmod
chmod access_mode file(s)
– access - quyền truy cập
– file(s) - một hoặc nhiều file
z Quyền truy cập có thể dùng theo 2 dạng:
– Dạng ký hiệu (symbolic): [ugo][+ - =][rwx]
Trang 24-47-Thay đổi quyền mặc định
z Khi một file được tạo ra, nó có một quyền được định
nghĩa trước Người dùng có thể thay giá trị mặc định này bằng cách thay đổi mặt nạ quyền (file-creation mode
Các giá trị của mặt nạ quyền
Octal number Access permissions given
Trang 25Permission
Trang 26– Thiết bị xuất chuẩn: màn hình (1)
– Thiết bị báo lỗi chuẩn: màn hình (2)
z Các thiết bị chuẩn này có thể được thay thế bằng các file thông thường.
z Tái định hướng cho lệnh bằng cách dùng các ký hiệu:
< Tái định hướng thiết bị nhập
> Tái định hướng thiết bị xuất
>> Nối vào file được tái định hướng (thay vì tạo mới)
Tái định hướng thiết bị nhập chuẩn
Trang 27-53-Tái định hướng thiết bị xuất chuẩn
command > output_file
z Ví dụ:
– Tái định hướng cho lệnh ls
$ls –al /usr > /tmp/usrlist
– Tái định hướng xuất và nhập cho lệnh sort:
$sort < /etc/passwd > /tmp/userlist
– Tái định hướng xuất cho lệnh cat:
$cat file1 file2 > file3
Nối thiết bị xuất chuẩn vào file
Trang 28-55-Kết các lệnh với nhau
z UNIX cho phép kết các lệnh với nhau thông qua các ống (pipe).
z Một pipe có nhiệm vụ nhận dữ liệu xuất từ một lệnh và
đưa vào như dữ liệu nhập cho lệnh kế tiếp theo dạng sau:
command1 | command2 | command3
(Dấu xổ đứng | (vertical bar) dùng để chỉ định cho một pipe)
z Có thể dùng pipe kết nối các lệnh với nhau thực hiện các thao tác phức tạp hơn.
Ví dụ
– (xem danh sách có sắp xếp các user đang trong hệ thống)
– (đếm số người dùng đang trong hệ thống)
– (liệt kê từng trang nội dung thư mục /etc)
Trang 29-57-Quản lý các process
z Process ÅÆ chương trình đang thực thi
z Người dùng có thể tương tác với process hoặc theo dõi
trạng thái của chúng.
z Người dùng có thể chạy chương trình theo hai cách:
– Mặt tiền (foreground)
Theo dõi các process
z Xem các process trong hệ thống:
Trang 30-59-Chạy chương trình mặt tiền
z Khi gõ lệnh tương ứng với tên chương trình theo cách
Trang 31$find /home/mt98 “*.c” -print
find: cannot read /dev/diag
^Z
[1]+ Stopped find / -name *.c -print
$ps
Chạy chương trình mặt hậu
z Thêm dấu & (ampersand) vào cuối dòng lệnh.
z Ví dụ:
$find /usr/man -name *.1 –print > sect1 &
[1] 2548
z Trình thông dịch lệnh tạo ra một process thực hiện
chương trình đồng thời in ra job number ([n]) và
PID (Process IDentifier) của process được tạo ra.
z Trình thông dịch ngay sau đó sẵn sàng nhận lệnh mới.
Trang 32-63-Quá trình chạy mặt hậu
z Quá trình chạy mặt hậu vẫn xuất ra standard
output là màn hình trong lúc thực thi Æ cần tái
định hướng standard output để tránh mất dữ liệu
xuất.
z Người dùng không thể tương tác với chương trình
qua standard input là bàn phím với chương trình
chạy mặt hậu Æ cần phải tái định hướng
standard input quan file khi chương trình cần
nhập dữ liệu.
Quản lý các quá trình chạy mặt hậu
z Liệt kê các job đang tích cực: dùng lệnh jobs
$jobs -l
[1] + 3584 Running xterm -g 90x55
[2] - 3587 Running xterm -g 90x55
z Đối với các quá trình, có thể:
– Có thể chuyển từ chạy mặt tiền sang mặt hậu và ngược lại
– Kết thúc một quá trình (~ một job)
Trang 34-67-Kết thúc quá trình
z Dùng lệnh kill
kill [-signal] process_identifier (PID)
z Cần dùng lệnh ps trước để biết PID của quá trình.
z Có thể dùng lệnh đơn giản như sau:
kill -9 process_identifier
Các tiện ích
z Trình soạn thảo vi (visual editor)
z Dịch vụ truyền file FTP (file transfer
protocol)
Trang 35– Chế độ lệnh bắt đầu khi vào chương trình vi
Có thể thực hiện các thao tác di chuyển, thao
tác trên các đối tượng text
– Muốn chuyển sang chế độ lệnh, chỉ cần ấn Esc.
z Chế độ chèn:
– Cho phép nhập văn bản vào buffer Có nhiều
lệnh để vào chế độ chèn như: a, A, i, I, o, O
Trang 36‘test.txt’ [New file]
Các thao tác đơn giản
z Ấn ‘a’ (append) để vào chế độ chèn.
Trang 38-75-Tìm kiếm trên văn bản
Trang 39-77-Các thao tác khác
Ghi ra file có tên ‘ filename‘ :w filename
Thoát vi (khi nội dung file chưa đổi) :q
Thoát và không ghi :q!
<ESC>
Trang 40Mac II
WIN UNIX
Upload file
Download fileLocal machine Remote machine
Kết nối vào FTP server (UNIX)
z Mở chương trình MS-Prompt
z Chuyển đến thư mục chứa file cần upload
z Chạy chương trình FTP kết nối đến server, cung cấp
username và password trước khi truyền file:
ftp <server_name or
server_IPaddress>
z Sau đó có thể thực hiện một số lệnh khác như: cd, lcd, put,
mput, get, mget, del, …
Trang 41220 Linux FTP Server ready.
User (172.28.11.121:(none)): user123
331 Password required for user123
Password:
530 User user123 logged in
Thay đổi thư mục
z Khi logon vào thành công, thư mục mặc định là home
directory của người dùng trên UNIX server.
z Có hai trường hợp chuyển thư mục:
– Chuyển thư mục trên server: dùng lệnh cd.
– Chuyển thư mục trên máy cục bộ của mình: dùng lênh lcd.
Trang 42-83-Upload files (đưa file lên server)
z Truyền một file từ máy cục bộ lên server:
Download files (lấy file từ server)
z Lấy một file từ server về:
Trang 43-85-Một số lệnh khác
z Logon trở lại với danh nghĩa khác (dùng lệnh này khi
muốn chuyển sang quyền khác hay để logon lại khi gõ
password sai): dùng lệnh user sau đó nhập lại password
tương ứng
user user_name
z Đóng kết nối đến FTP server: dùng lệnh close command
z Kết nối đến FTP (khi chưa có kết nối hoặc đã đóng kết
nối): dùng lệnh open
open hostname/ip_address
z Thoát khỏi chương trình FTP: dùng lệnh quit hoặc bye
Shell
z Mỗi khi logon vào một server UNIX, người dùng được
đặt vào một chương trình gọi là shell Chương trình này
thể hiện qua dấu nhắc bên trái màn hình và cho phép
người dùng nhập lệnh để làm việc cũng như nhận các
kết quả từ chương trình.
z Shell là một trình thông dịch lệnh (command
interpreter): nhận lệnh từ người dùng và truyền cho hệ điều hành xử lý rồi hiển thị kết quả lên màn hình.
z Có nhiều loại shell trên UNIX nhưng phổ biến nhất là:
Bourne shell (sh), C shell (csh), Korn shell (ksh) và
Bourne Again SHell (bash - chủ yếu trên Linux)
Trang 44-87-Lập trình shell
mình và một file gọi là shell script - để xử lý nhiều
công việc phức tạo hiệu quả và nhanh chóng hơn
(Có thể xem như batch file của DOS/Windows).
có quyền thực thi được (executable).
có cấu trúc, nhưng vẫn có các thành phần trong
chương trình như: biến, cấu trúc điều khiển chương
trình
Shell scripts đơn giản
z Dùng trình soạn thảo (vi, cat, …) để tạo shell script đơn
giản.
$cat > script_name
…
^_D
z Cho phép thực thi được shell script:
$chmod u+rwx script_name
z Thực thi shell script:
Trang 45echo "Your username is: `whoami`"
echo "Your current directory is:"
pwd
^_D
$chmod u=rwx display
$./display
Truyền đối số trong shell script
z Shell script thực thi như một lệnh bình thường trong
UNIX và có thể có các đối số đi kèm.
z Các đối số truyền cho shell script có thể tham khảo
ngay trong chương trình shell qua các ký hiệu $0
through to $9.
command <arg1> <arg2> …
Trang 46echo "Welcome to UNIX $name2 $name1”
echo Input 2 number
read x
Trang 47Ví dụ
z Kiểm tra một user đang có mặt trong hệ thống hay không:
$cat > checkuser
if who | grep -s $1 > /dev/null
then echo $1 is logged in
else echo $1 not available
Trang 48echo “Enter data”
cat > $1 fi
^_D
$chmod 755 edit
$edit test.txt
Kiểm tra trên file và biến
z Có thể dùng lệnh test để kiểm tra biểu thức điều kiện
echo "File is not exist"
Trang 49ls -al $filename else
echo “File does not exist”
continue fi
done
Trang 50Liệt kê nội dung các thư mục
/opt and /usr :
for dir in /bin /usr
cat $file fi
done
Tài liệu tham khảo
z [1] Duong Tuan Anh, UNIX fundamentals.
z [2] Computing Services - University of Edinburgh, UNIX help version 1.3
(ftp://ftp.ed.ac.uk/pub/unixhelp/UNIXhelp1.3.tar.Z).
z [3] Ben Smith, UNIX Step-by-step, Hayden Books, 1990.
Trang 51101
-Phần lập trình
Nội dung
z Phần 1 - Quá trình và các thao tác trên quá trình
z Phần 2 - Trao đổi thông tin giữa các quá trình
Trang 52Sơ lược về UNIX
z Ra đời ở phòng thí nghiệm Bell, 1970
Trang 54-107-Kiến trúc
(the users)Shell and commandsCompilers & InterpretersSystem libraries
CPU schedulingPage replacementDemand pagingVirtual memory
IPC
Scheduler Memory Management
Device Driver
User level
Trang 56Danh định của process
z Process identifier (PID) duy nhất, tăng dần từ 0
z Một số PID đặc biệt:
z0: scheduler
z1: init
z2: page daemon
Trang 57– Không tương tác trực tiếp được với người dùng
– Các giao tiếp phải tái định hướng
– Dùng dấu & ở cuối lệnh
– Ví dụ:
z$ls –Rf / > /tmp/dirlog &
z$find / -name data –print > /tmp/result &
Bộ nhớ của process
z Text: chứa chương trình – code thực thi - chứa
các các instruction dành cho CPU thực hiện - chỉ đọc.
z Data: vùng dữ liệu - chứa các biến được khai báo
tĩnh hoặc xin cấp phát trong lúc thực thi.
z Stack: chứa trạng thái và các thông tin liên quan
Trang 58High address
etext edata end
Initialized data Uninitialized data
Địa chỉ bộ nhớ
z Địa chỉ do process tham khảo chỉ là địa chỉ ảo
z Có thể tham khảo qua các biến toàn cục:
– etext: địa chỉ sau vùng text
– edata: địa chỉ kết thúc vùng initialized data
– end: Địa chỉ bắt đầu vùng heap
z Tham khảo các địa chỉ qua macro:
#define PADDR(x) printf(#x " at %u\n", &x);