SlideShare a Scribd company logo
1 of 13
BÀI TẬP THỰC HÀNH MÔN
              KỸ THUẬT LẬP TRÌNH TRÊN UNIX
                                                   Người biện soạn: GV Ngô Thị Vinh
                                                    Bộ môn: THVT- Khoa CNTT&TT
A. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELL
Bài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xem
danh sách các người dùng trong hệ thống.
a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm:
username:password:userId:groupId:comment:homedir:startup.
Khởi động shell bash và thực hiện các công việc:
a: Chuyển sang tài khoản root bằng lệnh:
$ su root
 nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là
123456). Lúc này dấu nhắc shell chuyển thành #.
b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat:
$ cat /etc/group
- Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường.
c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đó
Nhom1 thuộc nhóm người dùng hệ thống (có groupid < 499).
d: Thay đổi tên nhóm nhóm người dùng Nhom1 thành admin_group.
e. Thêm một người dùng Hung với các tùy chọn: chú thích (comment) “Nguyen Manh
Hung”, thư mục làm việc “/home/Hung”, ngày hết hiệu lực của tài khoản (ngày mà tài
khoản sẽ bị hủy bỏ) là 15/06/2010, ngày mật khẩu hết hiệu lực trước khi người dùng
bị hủy bỏ khỏi hệ thống: 20, nhóm khởi tạo của người dùng là admin_group.
f: Thêm người dùng Hung vừa tạo vào nhóm Nhom2.
g. Thiết lập mật khẩu cho tài khoản Hùng vừa tạo là hung123.
h. Logout khỏi hệ thống rồi đăng nhập và tài khoản Hung vừa tạo.
i. Chuyển sang tài khoản root bằng lệnh su root, rồi thay đổi tài khoản Hung thành
manhhung.
k. Xóa Nhom2 (chú ý đảm bảo không có user nào thuộc vào nhóm này).


                                           1
l. Xóa tài khoản ManhHung khỏi hệ thống.
Bài 2: Khởi động máy đăng nhập vào hệ thống Linux, khởi động shell bash rồi
thực hiện các công việc sau:
a. Xem đường dẫn đến thư mục hiện hành dùng lệnh pwd
b. Dùng lệnh ls để xem danh sách các file trong thư mục hiện hành
- Lệnh ls không có tham số:
$ls
- Lệnh ls với tham số -l để quan sát thông tin chi tiết về từng file hoặc thư mục và cho
biết: kiểu file (là file thông thường hay file thư mục), các quyền truy cập của chủ sở
hữu, nhóm và người dùng khác đối với file, tên chủ sở hữu, tên nhóm sở hữu, số liên
kết đến file, kích thước, ngày,giờ tạo file
      $ls –l
c. Thay đổi quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với một thư
mục/file bằng các lệnh chmod. Thí dụ đối với thư mục Music trong thư mục thư mục
hiện hành:
(chú ý sau mỗi lệnh dùng lệnh ls –l để quan sát sự thay đổi vừa thiết lập đối với thư
mục hoặc file vừa thao tác)
$ chmod u=rwx Music
$ chmod u-x,go=rx Music
$ chmod u=rw,g=r,o=rx Music
$ chmod u+x,g+x,r-x Music
$ chmod = Music (hủy tất cả các quyền)
      hoặc sử dụng trong chế độ biểu tượng:
$ chmod 0664 Music
$ chmod 0777 Music
$ chmod 0000 Music
$ chmod 764 Music Download
d. Tạo ra một file vd1 trong thư mục Music
$ cat > vd1.txt
- Dùng lệnh chmod thiết lập quyền cho toàn bộ file và thư mục con của thư mục
Music:


                                              2
$ chmod –R 640 Music
- Quan sát sự thay đổi trên file Music/vd1.txt
$ ls –l Music/vd1.txt
e. Làm tương tự đối với các file và thư mục khác.
Bài 3: Thay đổi chủ sở hữu đối với file/thư mục
a. Tạo một thư mục mới dir1 trong thư mục /home (dùng lệnh mkdir /home/dir1)
b. Dùng lệnh ls –l để xem chủ sở hữu và nhóm sở hữu của thư mục dir1 vừa tạo.
c. Chuyển sang tài khoản root sử dụng lệnh su.
d. Thiết lập chủ sở hữu của thư mục dir1 là root và nhóm sở hữu của dir1 là root.
e. Xem chủ sở hữu và nhóm sở hữu của dir1 bằng lệnh ls.
f. Tạo ra một nhóm người dùng hệ thống (có id <499) có tên group1.
g. Thiết lập nhóm chính sở hữu dir1 là group1 bằng lệnh chgrp.
Bài 4: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem thông tin về phiên bản của nhân hệ điều hành bằng lệnh uname với các tùy
chọn khác nhau như –a và -r.
b. Xem các runlevel của hệ thống được thiết lập sẵn trong file /etc/inittab bằng lệnh
cat /etc/inittab.
c. Khởi động lại hệ thống bằng lệnh init 6.
d. Xem dung lượng các ổ đĩa trong hệ thống bằng lệnh df.
e. Xem dung lượng đĩa được sử dụng cho từng file và thư mục trong thư mục hiện
hành với các tùy chọn khác nhau –h, -s hoặc kết hợp cả hai –hs.
f. Tắt hệ thống sau 10 phút và đưa ra lời cảnh báo “He thong chuan bi shutdown sau
10 phut”.
g. Nhấn Ctrl+C để hủy bỏ quá trình shutdown hệ thống.
h. Đưa ra lời cảnh báo tắt hệ thống sau 15 phút (nhưng không tắt thật sự).
i. Khởi động lại hệ thống ngay lập tức sử dụng lệnh shutdown với tùy chọn –r.
Bài 5: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem nội dung biến PS1 và PS2 lưu trữ các dấu nhắc hệ thống sử dụng lệnh echo
$PS1 và echo $PS2.


                                           3
b. Thiết lập địa chỉ ip cho máy trên cổng Ethernet sử dụng lệnh:
ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up
Bài 6: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem shell hệ hành của hệ thống (echo $SHELL).
b. Dùng lệnh echo để xem giá trị của các biến môi trường HOME, PATH, PWD,
USER.
c. Gán giá trị cho biến môi trường PS2 (lưu trữ dấu nhắc nhập liệu) là !, rồi dùng lệnh
echo để xem giá trị $PS2 vừa gán.
d. Xem thư mục hiện hành bằng lệnh pwd
e. Dùng lệnh ls với tùy chọn –a xem danh sách các file và thư mục trong thư mục hiện
hành bao gồm cả file ẩn.
f. Dùng lệnh ls với tùy chọn –l xem thông tin đầy đủ về danh sách các file và thư mục
trong thư mục hiện hành.
Bài 7: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo thư mục MonToan trong thư mục hiện hành sử dụng lệnh mkdir
b. Tạo các thư mục bai1, bai2 trong thư mục MonToan.
c. Đổi tên thư mục bai2 trên thành thư mục bai21.
d. Xem nội dung của thư mục MonToan.
e. Xóa thư mục bai1, bai21 và thư mục MonToan vừa tạo trên.
Bài 8: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo thư mục BaiTap trong thư mục hiện hành (/home/ubuntu).
b. Tạo file vd1.txt sử dụng lệnh touch trong thư mục BaiTap
c. Ghi kết quả đầu ra của lệnh ls đối với thư mục hiện hành và file vd1.txt.
d. Đổi tên file vd1.txt thành file vd2.txt.
e. Tạo ra file vd3.txt trong thư mục BaiTap bằng cách sử dụng lệnh cat > và nhập vào
nội dung sau:
            This is my example
            My name is Mr Minh


                                              4
I’m a student.
nhấn ctrl+D để kết thúc việc nhập.
f. Tạo mới thư mục BT trong thư mục hiện hành.
g. Tạo một file file1.txt trong thư mục BaiTap.
h. Sao các file bắt đầu bằng vd trong thư mục BaiTap sang thư mục BT.
i. Xóa file vd2.txt trong thư mục BT.
k. Đếm số ký tự, số từ, số dòng trong file vd3.txt sử dụng lệnh wc
Bài 9: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành
b. Chuyển thư mục dir2 vào trong thư mục dir1 (sử dụng lệnh mv).
c. Tạo thư mục dir3 trong thư mục dir2
d. Thực hiện xóa cây thư mục dir1/dir2/dir3
Bài 10: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo một file bai1.txt trong thư mục hiện hành (sử dụng lệnh cat) rồi nhập vào nội
dung:
        De thuc hien sao chep noi dung cua 2 file trong Linux can su dung lenh cp voi
        2 tham so la file nguon va file dich. Trong truong hop tham so thu nhat là file
        nguon va tham so thu 2 la thu muc thi lenh cp se thuc hien sao chep file nguon
        vao thu muc da chi dinh o tham so thu 2.
b. Tạo một file bai2.txt trong thư mục hiện hành.
c. Sao chép nội dung của file bai1.txt sang file bai2.txt
d. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành
e. Sao chép 2 file bai1.txt và file bai2.txt vào thư mục dir1
f. Sao chép tất cả các file có đuôi .txt vào trong thư mục dir2
g. Xóa tất cả các file có đuôi .txt trong thư mục hiện hành.
h. Đếm số lượng file và thư mục trong thư mục hiện hành sử dụng lệnh ls kết hợp với
lệnh wc với tùy chọn –l.
Bài 11: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:


                                            5
a. Tạo một file bai11.txt trong thư mục hiện hành và nhập vào nội dung sau đây:
    aa
    aa
    bb
    bb
    cc
b. Xem nội dung file bai11.txt bằng cách loại bỏ các dòng trùng lặp bằng lệnh uniq.
c. Ghi nội dung của file bai11.txt gồm các dòng không trùng lặp vào một file
bai111.txt
d. Tạo một file bai112.txt nhập vào nội dung sau:
      cc
      aa
      dd
      bb
e. Sắp xếp nội dung của file bai112.txt theo thứ tự abc mà không phân biệt chữ hoa
chữ thường.
f. Xem danh các file và thư mục trong thư mục hiện hành theo thứ tự bảng chữ cái
bằng cách sử dụng kết hợp lệnh ls với lệnh sort.
Bài 12: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo một file vd1.txt và nhập vào nội dung tùy ý.
b. Xem kiểu nội dung của file vd1.txt
c. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file
được hiển thị ra (sử dụng lệnh cat -n).
d. Xem nội dung của file /etc/passwd theo từng trang màn hình bằng cách sử dụng
lệnh more.
e. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file
được hiển thị ra màn hình bằng cách sử dụng lệnh nl, sau đó ghi kết quả này vào một
file vd2.txt.
f. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng khác trống
của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl.


                                           6
g. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng trống của file
được hiển thị ra màn hình bằng cách sử dụng lệnh nl.
h. Xem 3 dòng đầu tiên của file vd1.txt (lệnh head).
i. Xem 3 dòng cuối cùng của file vd1.txt (lệnh tail).
j. Xem 3 dòng đầu tiên của 2 file vd1.txt và vd2.txt, 3 dòng thuộc file vd2.txt được
hiển thị tiếp theo sau 3 dòng của file vd1.txt.
k. Tìm sự khác nhau giữa 2 file vd1.txt và vd2.txt (lệnh diff).
l. Tìm kiếm các dòng có chứa xâu “aa” trong file vd1.txt.
m. Tìm kiếm các dòng trong file vd1.txt mà không bắt đầu bởi kí tự a hoặc b.
n. Tìm kiếm các dòng trong file vd1.txt mà bắt đầu bởi kí tự a hoặc b.
o. Tìm kiếm file có tên vd1.txt trong thư mục hiện hành.
B. BÀI TẬP VỀ SHELL SCRIPT
1. Cấu hình ssh trên linux để cho phép chia sẻ dữ liệu với windows qua giao thức FTP.
2. Viết kịch bản shell script cho phép tạo tài khoản người dùng mới có username là $1
và password được nhập vào từ bàn phím.
3. Viết kịch bản shell script cho phép in ra màn hình số lượng và tên của các user và
các group có trong hệ thống.
4. Viết kịch bản shell script cho biết một user được truyền vào là $1 thuộc những
nhóm nào trong hệ thống, in ra màn hình danh sách các nhóm.
5. Viết kịch bản shell script cho phép tìm kiếm một file có tên được truyền vào là $1
trong thư mục có tên được truyền vào là $2. In ra màn hình dòng thông báo có tìm
thấy hoặc không tìm thấy.
6. Viết kịch bản shell script cho phép ghép nội dung của file A với nội dung của file B
theo từng dòng tương ứng, tức dòng 1 ở file A ghép với dòng 1 ở file B và được cách
nhau một dấu cách.
7. Viết kịch bản shell script cho phép thay đổi quyền truy nhập của một file có tên
được truyền vào là $1 và quyền là $2. Chương trình thông báo lỗi nếu thay đổi không
thành công.
8. Viết kịch bản cho phép thay đổi chủ sở hữu của một file có tên được truyền vào là
$1 và chủ sở hữu mới là $2. Chương trình thông báo lỗi nếu thay đổi không thành
công.


                                             7
9. Viết kịch bản cho phép thay đổi mật khẩu của một người dùng có tên được truyền
vào là $1 và mật khẩu được nhập vào từ bàn phím. Thông báo lỗi nếu thay đổi không
thành công.
10. Viết kịch bản shell script cho thép thay đổi nhóm sở hữu chính đối với một file có
tên được truyền vào là $1 và tên nhóm sở hữu mới là $2.
11. Viết kịch bản shell script cho phép đếm số lượng thư mục con và số lượng các file
trong thư mục hiện hành. In kết quả ra màn hình.
12. Viết kịch bản shell script cho phép xem thông tin về không gian bộ nhớ đã được
sử dụng trong bộ nhớ của hệ thống.
13. Viết kịch bản shell script cho phép xem dung lượng của một file được truyền vào
là $1.
14. Viết kịch bản shell script cho phép tìm kiếm các file .txt bắt đầu bằng ‘D’ hoặc ‘d’
và kết thúc bằng ‘c’ hoặc ‘C’ trong thư mục hiện hành và danh sách tìm được ra màn
hình.
15. Viết kịch bản shell script cho phép tìm kiếm các file .doc bắt đầu bằng ‘A’ hoặc
‘B’ hoặc ‘C’ và kết thúc bằng ‘1’ trong thư mục hiện hành, in danh sách các file ra
màn hình.
16. Viết kịch bản shell script cho phép đếm số lượng và in ra màn hình danh sách các
file ẩn trong thư mục hiện hành.
17. Viết kịch bản shell script cho xóa một người dùng khỏi hệ thống, đồng thời xóa bỏ
cả thư mục làm việc của người dùng đó với tên user được truyền vào là $1.
18. Viết kịch bản cho xóa một nhóm người dùng khỏi hệ thống có tên được truyền vào
$1, kiểm tra đảm bảo không có người dù ng nào trong hệ thống có nhóm sở hữu chính
là nhóm cần xóa; Ngược lại thông báo là “Đây là nhóm sở hữu chính của một hoặc
nhiều user khác” hoặc thông báo lỗi nếu nhóm này không tồn tại.
19. Viết kịch bản shell script cho biết kiểu một file có tên được truyền vào là $1 là
kiểu gì (pipe, file thông thường, file thư mục, …. )?
20. Viết kịch bản shell script cho phép đếm và in ra màn hình số lượng các user đang
đăng nhập vào hệ thống.
21. Viết kịch bản shell script cho phép đếm số lượng tiến trình trong hệ thống.




                                           8
22. Viết kịch bản shell script cho phép xóa một thư mục không rỗng có tên được
truyền vào là $1, thông báo lỗi nếu thư mục không tồn tại.
23. Viết kịch bản shell script cho phép đổi tên một thư mục có tên được truyền là $1
và tên mới là $2, chương trình thông báo lỗi nếu tên mới là tên của một thư mục đã
tồn tại hoặc thư mục cần đổi tên không tồn tại.
24. Viết kịch bản shell script cho phép copy nội dung của một thư có tên được truyền
vào $1 sang thư mục mới có tên là $2.
25. Viết kịch bản shell script cho phép sao chép từ dòng thứ x được truyền là $3 đến
dòng thứ y được truyền là $4 từ một file có tên được truyền vào là $1 sang một file có
tên đươcn truyền vào là $2
26. Viết kịch bản shell script cho phép sao chép tất cả các file .txt bắt đầu bằng ‘f’
hoặc ‘F’ vào thư mục có tên MyFile trong thư mục hiện hành.
27. Viết kịch bản cho phép nhập vào một dãy các số nguyên cho đến khi người dùng
nhập vào ‘K’ khi có câu hỏi “Ban co nhap tiep (C/K)”. Lưu trữ dãy số này vào một
SoNguyen.txt mỗi số nguyên trên một dòng, tính tổng các số nguyên và ghi tổng này
vào dòng cuối cùng trong một file.
28. Viết kịch bản shell script cho phép thực hiện phép toán giữa hai toán hạng được
truyền vào là $1 và $2, với phép toán được truyền vào là $3.
29. Viết kịch bản shell script cho phép loại bỏ những dòng trùng lặp trong một file
được truyền vào $1và ghi kết quả sang một file khác được truyền vào là $2. Thống
báo lỗi nếu file trong $1 không tồn tại.
29. Viết kịch bản shell script cho phép sắp xếp nội dung của một file được truyền vào
$1 theo thứ tự vần ABC và ghi kết quả sang một file khác được truyền vào là $2.
Thống báo lỗi nếu file trong $1 không tồn tại.
30. Viết kịch bản shell script cho phép in ra màn hình nội dung của một file được
truyền vào $1 theo thứ tự từ dòng cuối cùng đến dòng đầu tiên. Chương trình thông
báo lỗi khi file được truyền vào không tồn tại.
31. Viết kịch bản shell script cho phép thiết lập thiết lập tiến trình tắt hệ thống sau 5
phút 30 giây chạy ở trạng thái background. Sau đó In ra màn hình danh sách các tiến
trình trong hệ thống, nhập vào id của tiến trình vừa tạo và dùng lệnh kill để hủy tiến
trình này.


                                            9
32. Viết kịch bản shell script cho phép tính tích của các số được truyền vào từ kịch
bản. (thí dụ: gọi tên_kịch_bản 2 7 5 thì in ra kết quả là 70).
33. Viết kịch bản shell script cho phép tính giai thừa của một số nguyên được vào là
$1.
34. Viết chương trình C tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗi
liên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng.
      Thí dụ trong file sẽ lưu các chuỗi dạng như sau :
      2+3
      1 -2
      4 *6
      15 / 3
      Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiến
trình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho quá trình đầu tiên để
ghi lại vào file như sau:
      2+3 =5
      1 - 2 = -1
      4 * 6 = 24
      15 / 3 =5
35. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó quá trình
này gởi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ
tự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính được
tương ứng cho mỗi dãy về lại tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quả
vào lại file.
36. Viết chương trình C tạo một tiến trình bơ vơ.
37. Viết chương trình C để tạo ra một tiến trình Zombie
38. Viết chương trình C đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread để
thực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác.
39. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó
dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử




                                             10
giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là
0) lên 1.
40. Viết chương trình C đọc vào một dãy A từ file, dùng 1 thread khác để sắp xếp dãy
theo thứ tự tăng dần và ghi kết quả vào một file khác.
41. Viết chương trình C đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng n
thread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xong
có thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của các
thread kia và ghi vào một file kết quả.
42. Viết chương trình C cho phép thay đổi độ ưu tiên của một tiến trình (cụ thể là tiến
trình ps) trong hệ thống.
43. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGALRM đến tiến trình
hiện hành sau 5 giây.
44. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGSTOP đến tiến trình
hiện hành sau 5 giây
45. Viết chương trình C cài đặt một trình điều khiển tín hiệu alarmHandler() bằng
cách sử dụng tín hiệu signal, vòng lặp sẽ dừng lại cho đến khi nhận được một tín hiệu
SIGALRM.
46. Viết chương trình C cho phép được bảo vệ để chống lại tín hiệu SIGNINT.
47. Viết chương trình C cho phép thay đổi quyền sở hữu đối với một file được truyền
vào khi gọi thực thi.
48. Viết chương trình C cho phép thay đổi chủ sở hữu đối với một file được truyền
vào khi gọi thực thi.
49. Viết chương trình C cho phép thay đổi nhóm sở hữu đối với một file được truyền
vào khi gọi thực thi.
50. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy
số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến
trình thứ 2 thực hiện tính tổng của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình
1 thực hiện ghi kết quả này vào cuối file ban đầu.
51. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n
thread để tính tổng của từng cột trên ma trận. Dùng một thread để thu thập các kết quả
của các thread kia và ghi vào một file kết quả.


                                           11
52. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n
thread để tính tổng của từng hàng trên ma trận. Dùng một thread để thu thập các kết
quả của các thread kia và ghi vào một file kết quả
53. Viết chương trình C đọc vào một dãy số nguyên từ file, dùng 1 thread khác để sắp
xếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác.
54. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó
dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử
giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là
0) lên 1.
55. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện việc nhân 2 ma trận này và ghi ma trận kết quả ra một file khác.
56. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình
này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện tính tổng của dãy đó và
gửi dãy kết quả về lại tiến trình P0. P0 thực hiện ghi các dãy kết quả vào lại file ban
đầu.
57. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
con nhập vào các thông điệp và gửi cho tiến trình cha, tiến trình cha nhận các thông
điệp và in ra màn hình.
58. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng
dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.
59. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng
dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.
60. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình
này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ
tự tăng dần và gửi dãy kết quả sắp xếp về cho tiến trình P0. Khi này, P0 thực hiện ghi
các dãy kết quả vào một file khác.


                                            12
61. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy
số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến
trình thứ 2 thực hiện tính tích của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình
1 thực hiện ghi kết quả này vào cuối file ban đầu.
62. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện tìm kiếm phần tử lớn nhất trên ma trận và ghi kết quả vào cuối file ban
đầu.
63. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện việc trừ 2 ma trận này và ghi ma trận kết quả ra một file khác.




                                            13

More Related Content

What's hot

Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.comBảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.comBrand Xanh
 
Linux07 khoidong&dongtat
Linux07 khoidong&dongtatLinux07 khoidong&dongtat
Linux07 khoidong&dongtatanhbinhminhpro
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mởNguyễn Anh
 
Lesson 7 - Linux Shell Programming
Lesson 7 - Linux Shell ProgrammingLesson 7 - Linux Shell Programming
Lesson 7 - Linux Shell ProgrammingThang Man
 
Làm thế nào để học linux trong 24h?
Làm thế nào để học linux trong 24h?Làm thế nào để học linux trong 24h?
Làm thế nào để học linux trong 24h?Công Nghệ - VTC Mobile
 
Chuong 03 he_thong_file
Chuong 03 he_thong_fileChuong 03 he_thong_file
Chuong 03 he_thong_filenguyenghia831
 
Cac lenh co_ban_linux
Cac lenh co_ban_linuxCac lenh co_ban_linux
Cac lenh co_ban_linuxgofriv
 
Lesson 6 - Administering Linux System (2)
Lesson 6 - Administering Linux System (2)Lesson 6 - Administering Linux System (2)
Lesson 6 - Administering Linux System (2)Thang Man
 

What's hot (18)

Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.comBảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
Bảng tra cứu các lệnh cơ bản của unix và linux sưu tầm bởi www.vilinux.com
 
Hdubuntu
HdubuntuHdubuntu
Hdubuntu
 
Linux+04
Linux+04Linux+04
Linux+04
 
Linux07 khoidong&dongtat
Linux07 khoidong&dongtatLinux07 khoidong&dongtat
Linux07 khoidong&dongtat
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mở
 
Linux+02
Linux+02Linux+02
Linux+02
 
Linux06 quanly dia
Linux06 quanly diaLinux06 quanly dia
Linux06 quanly dia
 
Lesson 7 - Linux Shell Programming
Lesson 7 - Linux Shell ProgrammingLesson 7 - Linux Shell Programming
Lesson 7 - Linux Shell Programming
 
Làm thế nào để học linux trong 24h?
Làm thế nào để học linux trong 24h?Làm thế nào để học linux trong 24h?
Làm thế nào để học linux trong 24h?
 
Linux02 caidat ubuntu
Linux02 caidat ubuntuLinux02 caidat ubuntu
Linux02 caidat ubuntu
 
Chuong 03 he_thong_file
Chuong 03 he_thong_fileChuong 03 he_thong_file
Chuong 03 he_thong_file
 
Cac lenh co_ban_linux
Cac lenh co_ban_linuxCac lenh co_ban_linux
Cac lenh co_ban_linux
 
Các lệnh shell cơ bản trong linux
Các lệnh shell cơ bản trong linuxCác lệnh shell cơ bản trong linux
Các lệnh shell cơ bản trong linux
 
Linux+03
Linux+03Linux+03
Linux+03
 
Lesson 6 - Administering Linux System (2)
Lesson 6 - Administering Linux System (2)Lesson 6 - Administering Linux System (2)
Lesson 6 - Administering Linux System (2)
 
Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 
Linux01 tongquan
Linux01 tongquanLinux01 tongquan
Linux01 tongquan
 
Sử dụng Linux
Sử dụng LinuxSử dụng Linux
Sử dụng Linux
 

Similar to Dang baitapthuchanh monhdh_unix

Carte ref-ubuntu-vi (1)
Carte ref-ubuntu-vi (1)Carte ref-ubuntu-vi (1)
Carte ref-ubuntu-vi (1)Mr[L]ink
 
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdfvnprothanh
 
Th linux
Th linuxTh linux
Th linuxthocntt
 
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
tài liệu Mã nguồn mở  03 he-thong-tep-linux-14tài liệu Mã nguồn mở  03 he-thong-tep-linux-14
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14Thuyet Nguyen
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)laonap166
 
20 lenh linux
20 lenh linux20 lenh linux
20 lenh linuxPham Tiep
 
Phân quyền datachung
Phân quyền datachungPhân quyền datachung
Phân quyền datachunglaonap166
 
Bai2 he dieuhanh
Bai2 he dieuhanhBai2 he dieuhanh
Bai2 he dieuhanhThien Ho
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hànhSunkute
 
Cach su dung Ubuntu
Cach su dung UbuntuCach su dung Ubuntu
Cach su dung UbuntuKien Ma
 
Tanet tin hoc-phan1-windows
Tanet tin hoc-phan1-windowsTanet tin hoc-phan1-windows
Tanet tin hoc-phan1-windowsPham Ngoc Quang
 

Similar to Dang baitapthuchanh monhdh_unix (20)

Onthith hdh
Onthith hdhOnthith hdh
Onthith hdh
 
To ghi nho ubuntu
To ghi nho   ubuntuTo ghi nho   ubuntu
To ghi nho ubuntu
 
Carte ref-ubuntu-vi (1)
Carte ref-ubuntu-vi (1)Carte ref-ubuntu-vi (1)
Carte ref-ubuntu-vi (1)
 
Carte ref-ubuntu-vi
Carte ref-ubuntu-viCarte ref-ubuntu-vi
Carte ref-ubuntu-vi
 
So tay nho lenh linux
So tay nho lenh linuxSo tay nho lenh linux
So tay nho lenh linux
 
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf
00-Phieu Yeu Cau Thuc Hanh QTM-Linux-CD.pdf
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 
Th linux
Th linuxTh linux
Th linux
 
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
tài liệu Mã nguồn mở  03 he-thong-tep-linux-14tài liệu Mã nguồn mở  03 he-thong-tep-linux-14
tài liệu Mã nguồn mở 03 he-thong-tep-linux-14
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)
 
20 lenh linux
20 lenh linux20 lenh linux
20 lenh linux
 
Phân quyền datachung
Phân quyền datachungPhân quyền datachung
Phân quyền datachung
 
Bai2 he dieuhanh
Bai2 he dieuhanhBai2 he dieuhanh
Bai2 he dieuhanh
 
ShellProgramming
ShellProgrammingShellProgramming
ShellProgramming
 
Chương II: Hệ điều hành
Chương II: Hệ điều hànhChương II: Hệ điều hành
Chương II: Hệ điều hành
 
Chuong ii
Chuong iiChuong ii
Chuong ii
 
Cach su dung Ubuntu
Cach su dung UbuntuCach su dung Ubuntu
Cach su dung Ubuntu
 
Tanet tin hoc-phan1-windows
Tanet tin hoc-phan1-windowsTanet tin hoc-phan1-windows
Tanet tin hoc-phan1-windows
 

More from Bảo Bối

TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER
TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVERTRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER
TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVERBảo Bối
 
1001 cau dam thoai tieng anh thong dung nhat
1001 cau dam thoai tieng anh thong dung nhat1001 cau dam thoai tieng anh thong dung nhat
1001 cau dam thoai tieng anh thong dung nhatBảo Bối
 
đâY là 111 câu thành ngữ bằng tiếng anh
đâY là 111 câu thành ngữ bằng tiếng anhđâY là 111 câu thành ngữ bằng tiếng anh
đâY là 111 câu thành ngữ bằng tiếng anhBảo Bối
 
Cause and effect
Cause and effectCause and effect
Cause and effectBảo Bối
 
20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anhBảo Bối
 
Tài liệu săn tây
Tài liệu săn tâyTài liệu săn tây
Tài liệu săn tâyBảo Bối
 
Chuyen de huong dan nhan vien
Chuyen de huong dan nhan vienChuyen de huong dan nhan vien
Chuyen de huong dan nhan vienBảo Bối
 
đâY là những câu nói thường dùng hàng ngày
đâY là những câu nói thường dùng hàng ngàyđâY là những câu nói thường dùng hàng ngày
đâY là những câu nói thường dùng hàng ngàyBảo Bối
 
Cải thiện vốn từ vựng
Cải thiện vốn từ vựngCải thiện vốn từ vựng
Cải thiện vốn từ vựngBảo Bối
 
Cách học tiếng anh rất nhanh
Cách học tiếng anh rất nhanhCách học tiếng anh rất nhanh
Cách học tiếng anh rất nhanhBảo Bối
 
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)Bảo Bối
 
Cac cau-noi-tieng-anh-thong-thuong
Cac cau-noi-tieng-anh-thong-thuongCac cau-noi-tieng-anh-thong-thuong
Cac cau-noi-tieng-anh-thong-thuongBảo Bối
 
10 van cau hoi vi sao
10 van cau hoi vi sao10 van cau hoi vi sao
10 van cau hoi vi saoBảo Bối
 
01. cho lòng dũng cảm và tình yêu cuộc sống hạt giống tâm hồn
01. cho lòng dũng cảm và tình yêu cuộc sống   hạt giống tâm hồn01. cho lòng dũng cảm và tình yêu cuộc sống   hạt giống tâm hồn
01. cho lòng dũng cảm và tình yêu cuộc sống hạt giống tâm hồnBảo Bối
 
Phân loại tính cách bằng mbti
Phân loại tính cách bằng mbtiPhân loại tính cách bằng mbti
Phân loại tính cách bằng mbtiBảo Bối
 
20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anhBảo Bối
 
Tong hopnguphaptoeic
Tong hopnguphaptoeicTong hopnguphaptoeic
Tong hopnguphaptoeicBảo Bối
 
Collocation mat lac
Collocation   mat lacCollocation   mat lac
Collocation mat lacBảo Bối
 

More from Bảo Bối (20)

TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER
TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVERTRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER
TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER
 
1001 cau dam thoai tieng anh thong dung nhat
1001 cau dam thoai tieng anh thong dung nhat1001 cau dam thoai tieng anh thong dung nhat
1001 cau dam thoai tieng anh thong dung nhat
 
đâY là 111 câu thành ngữ bằng tiếng anh
đâY là 111 câu thành ngữ bằng tiếng anhđâY là 111 câu thành ngữ bằng tiếng anh
đâY là 111 câu thành ngữ bằng tiếng anh
 
Cause and effect
Cause and effectCause and effect
Cause and effect
 
20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh
 
Tài liệu săn tây
Tài liệu săn tâyTài liệu săn tây
Tài liệu săn tây
 
Săn tây
Săn tâySăn tây
Săn tây
 
Chuyen de huong dan nhan vien
Chuyen de huong dan nhan vienChuyen de huong dan nhan vien
Chuyen de huong dan nhan vien
 
đâY là những câu nói thường dùng hàng ngày
đâY là những câu nói thường dùng hàng ngàyđâY là những câu nói thường dùng hàng ngày
đâY là những câu nói thường dùng hàng ngày
 
Cải thiện vốn từ vựng
Cải thiện vốn từ vựngCải thiện vốn từ vựng
Cải thiện vốn từ vựng
 
Cách học tiếng anh rất nhanh
Cách học tiếng anh rất nhanhCách học tiếng anh rất nhanh
Cách học tiếng anh rất nhanh
 
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)
Tuyển tập hạt giống tâm hồn (trọn bộ 11 tập)
 
Cac cau-noi-tieng-anh-thong-thuong
Cac cau-noi-tieng-anh-thong-thuongCac cau-noi-tieng-anh-thong-thuong
Cac cau-noi-tieng-anh-thong-thuong
 
10 van cau hoi vi sao
10 van cau hoi vi sao10 van cau hoi vi sao
10 van cau hoi vi sao
 
01. cho lòng dũng cảm và tình yêu cuộc sống hạt giống tâm hồn
01. cho lòng dũng cảm và tình yêu cuộc sống   hạt giống tâm hồn01. cho lòng dũng cảm và tình yêu cuộc sống   hạt giống tâm hồn
01. cho lòng dũng cảm và tình yêu cuộc sống hạt giống tâm hồn
 
Phân loại tính cách bằng mbti
Phân loại tính cách bằng mbtiPhân loại tính cách bằng mbti
Phân loại tính cách bằng mbti
 
Dvd1
Dvd1Dvd1
Dvd1
 
20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh20 câu nói bất biến cho người việt học tiếng anh
20 câu nói bất biến cho người việt học tiếng anh
 
Tong hopnguphaptoeic
Tong hopnguphaptoeicTong hopnguphaptoeic
Tong hopnguphaptoeic
 
Collocation mat lac
Collocation   mat lacCollocation   mat lac
Collocation mat lac
 

Dang baitapthuchanh monhdh_unix

  • 1. BÀI TẬP THỰC HÀNH MÔN KỸ THUẬT LẬP TRÌNH TRÊN UNIX Người biện soạn: GV Ngô Thị Vinh Bộ môn: THVT- Khoa CNTT&TT A. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELL Bài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xem danh sách các người dùng trong hệ thống. a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm: username:password:userId:groupId:comment:homedir:startup. Khởi động shell bash và thực hiện các công việc: a: Chuyển sang tài khoản root bằng lệnh: $ su root  nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là 123456). Lúc này dấu nhắc shell chuyển thành #. b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat: $ cat /etc/group - Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường. c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đó Nhom1 thuộc nhóm người dùng hệ thống (có groupid < 499). d: Thay đổi tên nhóm nhóm người dùng Nhom1 thành admin_group. e. Thêm một người dùng Hung với các tùy chọn: chú thích (comment) “Nguyen Manh Hung”, thư mục làm việc “/home/Hung”, ngày hết hiệu lực của tài khoản (ngày mà tài khoản sẽ bị hủy bỏ) là 15/06/2010, ngày mật khẩu hết hiệu lực trước khi người dùng bị hủy bỏ khỏi hệ thống: 20, nhóm khởi tạo của người dùng là admin_group. f: Thêm người dùng Hung vừa tạo vào nhóm Nhom2. g. Thiết lập mật khẩu cho tài khoản Hùng vừa tạo là hung123. h. Logout khỏi hệ thống rồi đăng nhập và tài khoản Hung vừa tạo. i. Chuyển sang tài khoản root bằng lệnh su root, rồi thay đổi tài khoản Hung thành manhhung. k. Xóa Nhom2 (chú ý đảm bảo không có user nào thuộc vào nhóm này). 1
  • 2. l. Xóa tài khoản ManhHung khỏi hệ thống. Bài 2: Khởi động máy đăng nhập vào hệ thống Linux, khởi động shell bash rồi thực hiện các công việc sau: a. Xem đường dẫn đến thư mục hiện hành dùng lệnh pwd b. Dùng lệnh ls để xem danh sách các file trong thư mục hiện hành - Lệnh ls không có tham số: $ls - Lệnh ls với tham số -l để quan sát thông tin chi tiết về từng file hoặc thư mục và cho biết: kiểu file (là file thông thường hay file thư mục), các quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với file, tên chủ sở hữu, tên nhóm sở hữu, số liên kết đến file, kích thước, ngày,giờ tạo file $ls –l c. Thay đổi quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với một thư mục/file bằng các lệnh chmod. Thí dụ đối với thư mục Music trong thư mục thư mục hiện hành: (chú ý sau mỗi lệnh dùng lệnh ls –l để quan sát sự thay đổi vừa thiết lập đối với thư mục hoặc file vừa thao tác) $ chmod u=rwx Music $ chmod u-x,go=rx Music $ chmod u=rw,g=r,o=rx Music $ chmod u+x,g+x,r-x Music $ chmod = Music (hủy tất cả các quyền) hoặc sử dụng trong chế độ biểu tượng: $ chmod 0664 Music $ chmod 0777 Music $ chmod 0000 Music $ chmod 764 Music Download d. Tạo ra một file vd1 trong thư mục Music $ cat > vd1.txt - Dùng lệnh chmod thiết lập quyền cho toàn bộ file và thư mục con của thư mục Music: 2
  • 3. $ chmod –R 640 Music - Quan sát sự thay đổi trên file Music/vd1.txt $ ls –l Music/vd1.txt e. Làm tương tự đối với các file và thư mục khác. Bài 3: Thay đổi chủ sở hữu đối với file/thư mục a. Tạo một thư mục mới dir1 trong thư mục /home (dùng lệnh mkdir /home/dir1) b. Dùng lệnh ls –l để xem chủ sở hữu và nhóm sở hữu của thư mục dir1 vừa tạo. c. Chuyển sang tài khoản root sử dụng lệnh su. d. Thiết lập chủ sở hữu của thư mục dir1 là root và nhóm sở hữu của dir1 là root. e. Xem chủ sở hữu và nhóm sở hữu của dir1 bằng lệnh ls. f. Tạo ra một nhóm người dùng hệ thống (có id <499) có tên group1. g. Thiết lập nhóm chính sở hữu dir1 là group1 bằng lệnh chgrp. Bài 4: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Xem thông tin về phiên bản của nhân hệ điều hành bằng lệnh uname với các tùy chọn khác nhau như –a và -r. b. Xem các runlevel của hệ thống được thiết lập sẵn trong file /etc/inittab bằng lệnh cat /etc/inittab. c. Khởi động lại hệ thống bằng lệnh init 6. d. Xem dung lượng các ổ đĩa trong hệ thống bằng lệnh df. e. Xem dung lượng đĩa được sử dụng cho từng file và thư mục trong thư mục hiện hành với các tùy chọn khác nhau –h, -s hoặc kết hợp cả hai –hs. f. Tắt hệ thống sau 10 phút và đưa ra lời cảnh báo “He thong chuan bi shutdown sau 10 phut”. g. Nhấn Ctrl+C để hủy bỏ quá trình shutdown hệ thống. h. Đưa ra lời cảnh báo tắt hệ thống sau 15 phút (nhưng không tắt thật sự). i. Khởi động lại hệ thống ngay lập tức sử dụng lệnh shutdown với tùy chọn –r. Bài 5: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Xem nội dung biến PS1 và PS2 lưu trữ các dấu nhắc hệ thống sử dụng lệnh echo $PS1 và echo $PS2. 3
  • 4. b. Thiết lập địa chỉ ip cho máy trên cổng Ethernet sử dụng lệnh: ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up Bài 6: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Xem shell hệ hành của hệ thống (echo $SHELL). b. Dùng lệnh echo để xem giá trị của các biến môi trường HOME, PATH, PWD, USER. c. Gán giá trị cho biến môi trường PS2 (lưu trữ dấu nhắc nhập liệu) là !, rồi dùng lệnh echo để xem giá trị $PS2 vừa gán. d. Xem thư mục hiện hành bằng lệnh pwd e. Dùng lệnh ls với tùy chọn –a xem danh sách các file và thư mục trong thư mục hiện hành bao gồm cả file ẩn. f. Dùng lệnh ls với tùy chọn –l xem thông tin đầy đủ về danh sách các file và thư mục trong thư mục hiện hành. Bài 7: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Tạo thư mục MonToan trong thư mục hiện hành sử dụng lệnh mkdir b. Tạo các thư mục bai1, bai2 trong thư mục MonToan. c. Đổi tên thư mục bai2 trên thành thư mục bai21. d. Xem nội dung của thư mục MonToan. e. Xóa thư mục bai1, bai21 và thư mục MonToan vừa tạo trên. Bài 8: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Tạo thư mục BaiTap trong thư mục hiện hành (/home/ubuntu). b. Tạo file vd1.txt sử dụng lệnh touch trong thư mục BaiTap c. Ghi kết quả đầu ra của lệnh ls đối với thư mục hiện hành và file vd1.txt. d. Đổi tên file vd1.txt thành file vd2.txt. e. Tạo ra file vd3.txt trong thư mục BaiTap bằng cách sử dụng lệnh cat > và nhập vào nội dung sau: This is my example My name is Mr Minh 4
  • 5. I’m a student. nhấn ctrl+D để kết thúc việc nhập. f. Tạo mới thư mục BT trong thư mục hiện hành. g. Tạo một file file1.txt trong thư mục BaiTap. h. Sao các file bắt đầu bằng vd trong thư mục BaiTap sang thư mục BT. i. Xóa file vd2.txt trong thư mục BT. k. Đếm số ký tự, số từ, số dòng trong file vd3.txt sử dụng lệnh wc Bài 9: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành b. Chuyển thư mục dir2 vào trong thư mục dir1 (sử dụng lệnh mv). c. Tạo thư mục dir3 trong thư mục dir2 d. Thực hiện xóa cây thư mục dir1/dir2/dir3 Bài 10: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Tạo một file bai1.txt trong thư mục hiện hành (sử dụng lệnh cat) rồi nhập vào nội dung: De thuc hien sao chep noi dung cua 2 file trong Linux can su dung lenh cp voi 2 tham so la file nguon va file dich. Trong truong hop tham so thu nhat là file nguon va tham so thu 2 la thu muc thi lenh cp se thuc hien sao chep file nguon vao thu muc da chi dinh o tham so thu 2. b. Tạo một file bai2.txt trong thư mục hiện hành. c. Sao chép nội dung của file bai1.txt sang file bai2.txt d. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành e. Sao chép 2 file bai1.txt và file bai2.txt vào thư mục dir1 f. Sao chép tất cả các file có đuôi .txt vào trong thư mục dir2 g. Xóa tất cả các file có đuôi .txt trong thư mục hiện hành. h. Đếm số lượng file và thư mục trong thư mục hiện hành sử dụng lệnh ls kết hợp với lệnh wc với tùy chọn –l. Bài 11: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: 5
  • 6. a. Tạo một file bai11.txt trong thư mục hiện hành và nhập vào nội dung sau đây: aa aa bb bb cc b. Xem nội dung file bai11.txt bằng cách loại bỏ các dòng trùng lặp bằng lệnh uniq. c. Ghi nội dung của file bai11.txt gồm các dòng không trùng lặp vào một file bai111.txt d. Tạo một file bai112.txt nhập vào nội dung sau: cc aa dd bb e. Sắp xếp nội dung của file bai112.txt theo thứ tự abc mà không phân biệt chữ hoa chữ thường. f. Xem danh các file và thư mục trong thư mục hiện hành theo thứ tự bảng chữ cái bằng cách sử dụng kết hợp lệnh ls với lệnh sort. Bài 12: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các công việc sau: a. Tạo một file vd1.txt và nhập vào nội dung tùy ý. b. Xem kiểu nội dung của file vd1.txt c. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file được hiển thị ra (sử dụng lệnh cat -n). d. Xem nội dung của file /etc/passwd theo từng trang màn hình bằng cách sử dụng lệnh more. e. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl, sau đó ghi kết quả này vào một file vd2.txt. f. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng khác trống của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl. 6
  • 7. g. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng trống của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl. h. Xem 3 dòng đầu tiên của file vd1.txt (lệnh head). i. Xem 3 dòng cuối cùng của file vd1.txt (lệnh tail). j. Xem 3 dòng đầu tiên của 2 file vd1.txt và vd2.txt, 3 dòng thuộc file vd2.txt được hiển thị tiếp theo sau 3 dòng của file vd1.txt. k. Tìm sự khác nhau giữa 2 file vd1.txt và vd2.txt (lệnh diff). l. Tìm kiếm các dòng có chứa xâu “aa” trong file vd1.txt. m. Tìm kiếm các dòng trong file vd1.txt mà không bắt đầu bởi kí tự a hoặc b. n. Tìm kiếm các dòng trong file vd1.txt mà bắt đầu bởi kí tự a hoặc b. o. Tìm kiếm file có tên vd1.txt trong thư mục hiện hành. B. BÀI TẬP VỀ SHELL SCRIPT 1. Cấu hình ssh trên linux để cho phép chia sẻ dữ liệu với windows qua giao thức FTP. 2. Viết kịch bản shell script cho phép tạo tài khoản người dùng mới có username là $1 và password được nhập vào từ bàn phím. 3. Viết kịch bản shell script cho phép in ra màn hình số lượng và tên của các user và các group có trong hệ thống. 4. Viết kịch bản shell script cho biết một user được truyền vào là $1 thuộc những nhóm nào trong hệ thống, in ra màn hình danh sách các nhóm. 5. Viết kịch bản shell script cho phép tìm kiếm một file có tên được truyền vào là $1 trong thư mục có tên được truyền vào là $2. In ra màn hình dòng thông báo có tìm thấy hoặc không tìm thấy. 6. Viết kịch bản shell script cho phép ghép nội dung của file A với nội dung của file B theo từng dòng tương ứng, tức dòng 1 ở file A ghép với dòng 1 ở file B và được cách nhau một dấu cách. 7. Viết kịch bản shell script cho phép thay đổi quyền truy nhập của một file có tên được truyền vào là $1 và quyền là $2. Chương trình thông báo lỗi nếu thay đổi không thành công. 8. Viết kịch bản cho phép thay đổi chủ sở hữu của một file có tên được truyền vào là $1 và chủ sở hữu mới là $2. Chương trình thông báo lỗi nếu thay đổi không thành công. 7
  • 8. 9. Viết kịch bản cho phép thay đổi mật khẩu của một người dùng có tên được truyền vào là $1 và mật khẩu được nhập vào từ bàn phím. Thông báo lỗi nếu thay đổi không thành công. 10. Viết kịch bản shell script cho thép thay đổi nhóm sở hữu chính đối với một file có tên được truyền vào là $1 và tên nhóm sở hữu mới là $2. 11. Viết kịch bản shell script cho phép đếm số lượng thư mục con và số lượng các file trong thư mục hiện hành. In kết quả ra màn hình. 12. Viết kịch bản shell script cho phép xem thông tin về không gian bộ nhớ đã được sử dụng trong bộ nhớ của hệ thống. 13. Viết kịch bản shell script cho phép xem dung lượng của một file được truyền vào là $1. 14. Viết kịch bản shell script cho phép tìm kiếm các file .txt bắt đầu bằng ‘D’ hoặc ‘d’ và kết thúc bằng ‘c’ hoặc ‘C’ trong thư mục hiện hành và danh sách tìm được ra màn hình. 15. Viết kịch bản shell script cho phép tìm kiếm các file .doc bắt đầu bằng ‘A’ hoặc ‘B’ hoặc ‘C’ và kết thúc bằng ‘1’ trong thư mục hiện hành, in danh sách các file ra màn hình. 16. Viết kịch bản shell script cho phép đếm số lượng và in ra màn hình danh sách các file ẩn trong thư mục hiện hành. 17. Viết kịch bản shell script cho xóa một người dùng khỏi hệ thống, đồng thời xóa bỏ cả thư mục làm việc của người dùng đó với tên user được truyền vào là $1. 18. Viết kịch bản cho xóa một nhóm người dùng khỏi hệ thống có tên được truyền vào $1, kiểm tra đảm bảo không có người dù ng nào trong hệ thống có nhóm sở hữu chính là nhóm cần xóa; Ngược lại thông báo là “Đây là nhóm sở hữu chính của một hoặc nhiều user khác” hoặc thông báo lỗi nếu nhóm này không tồn tại. 19. Viết kịch bản shell script cho biết kiểu một file có tên được truyền vào là $1 là kiểu gì (pipe, file thông thường, file thư mục, …. )? 20. Viết kịch bản shell script cho phép đếm và in ra màn hình số lượng các user đang đăng nhập vào hệ thống. 21. Viết kịch bản shell script cho phép đếm số lượng tiến trình trong hệ thống. 8
  • 9. 22. Viết kịch bản shell script cho phép xóa một thư mục không rỗng có tên được truyền vào là $1, thông báo lỗi nếu thư mục không tồn tại. 23. Viết kịch bản shell script cho phép đổi tên một thư mục có tên được truyền là $1 và tên mới là $2, chương trình thông báo lỗi nếu tên mới là tên của một thư mục đã tồn tại hoặc thư mục cần đổi tên không tồn tại. 24. Viết kịch bản shell script cho phép copy nội dung của một thư có tên được truyền vào $1 sang thư mục mới có tên là $2. 25. Viết kịch bản shell script cho phép sao chép từ dòng thứ x được truyền là $3 đến dòng thứ y được truyền là $4 từ một file có tên được truyền vào là $1 sang một file có tên đươcn truyền vào là $2 26. Viết kịch bản shell script cho phép sao chép tất cả các file .txt bắt đầu bằng ‘f’ hoặc ‘F’ vào thư mục có tên MyFile trong thư mục hiện hành. 27. Viết kịch bản cho phép nhập vào một dãy các số nguyên cho đến khi người dùng nhập vào ‘K’ khi có câu hỏi “Ban co nhap tiep (C/K)”. Lưu trữ dãy số này vào một SoNguyen.txt mỗi số nguyên trên một dòng, tính tổng các số nguyên và ghi tổng này vào dòng cuối cùng trong một file. 28. Viết kịch bản shell script cho phép thực hiện phép toán giữa hai toán hạng được truyền vào là $1 và $2, với phép toán được truyền vào là $3. 29. Viết kịch bản shell script cho phép loại bỏ những dòng trùng lặp trong một file được truyền vào $1và ghi kết quả sang một file khác được truyền vào là $2. Thống báo lỗi nếu file trong $1 không tồn tại. 29. Viết kịch bản shell script cho phép sắp xếp nội dung của một file được truyền vào $1 theo thứ tự vần ABC và ghi kết quả sang một file khác được truyền vào là $2. Thống báo lỗi nếu file trong $1 không tồn tại. 30. Viết kịch bản shell script cho phép in ra màn hình nội dung của một file được truyền vào $1 theo thứ tự từ dòng cuối cùng đến dòng đầu tiên. Chương trình thông báo lỗi khi file được truyền vào không tồn tại. 31. Viết kịch bản shell script cho phép thiết lập thiết lập tiến trình tắt hệ thống sau 5 phút 30 giây chạy ở trạng thái background. Sau đó In ra màn hình danh sách các tiến trình trong hệ thống, nhập vào id của tiến trình vừa tạo và dùng lệnh kill để hủy tiến trình này. 9
  • 10. 32. Viết kịch bản shell script cho phép tính tích của các số được truyền vào từ kịch bản. (thí dụ: gọi tên_kịch_bản 2 7 5 thì in ra kết quả là 70). 33. Viết kịch bản shell script cho phép tính giai thừa của một số nguyên được vào là $1. 34. Viết chương trình C tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗi liên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng. Thí dụ trong file sẽ lưu các chuỗi dạng như sau : 2+3 1 -2 4 *6 15 / 3 Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiến trình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho quá trình đầu tiên để ghi lại vào file như sau: 2+3 =5 1 - 2 = -1 4 * 6 = 24 15 / 3 =5 35. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó quá trình này gởi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ tự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính được tương ứng cho mỗi dãy về lại tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quả vào lại file. 36. Viết chương trình C tạo một tiến trình bơ vơ. 37. Viết chương trình C để tạo ra một tiến trình Zombie 38. Viết chương trình C đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread để thực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác. 39. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử 10
  • 11. giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là 0) lên 1. 40. Viết chương trình C đọc vào một dãy A từ file, dùng 1 thread khác để sắp xếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác. 41. Viết chương trình C đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng n thread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xong có thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của các thread kia và ghi vào một file kết quả. 42. Viết chương trình C cho phép thay đổi độ ưu tiên của một tiến trình (cụ thể là tiến trình ps) trong hệ thống. 43. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGALRM đến tiến trình hiện hành sau 5 giây. 44. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGSTOP đến tiến trình hiện hành sau 5 giây 45. Viết chương trình C cài đặt một trình điều khiển tín hiệu alarmHandler() bằng cách sử dụng tín hiệu signal, vòng lặp sẽ dừng lại cho đến khi nhận được một tín hiệu SIGALRM. 46. Viết chương trình C cho phép được bảo vệ để chống lại tín hiệu SIGNINT. 47. Viết chương trình C cho phép thay đổi quyền sở hữu đối với một file được truyền vào khi gọi thực thi. 48. Viết chương trình C cho phép thay đổi chủ sở hữu đối với một file được truyền vào khi gọi thực thi. 49. Viết chương trình C cho phép thay đổi nhóm sở hữu đối với một file được truyền vào khi gọi thực thi. 50. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến trình thứ 2 thực hiện tính tổng của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình 1 thực hiện ghi kết quả này vào cuối file ban đầu. 51. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n thread để tính tổng của từng cột trên ma trận. Dùng một thread để thu thập các kết quả của các thread kia và ghi vào một file kết quả. 11
  • 12. 52. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n thread để tính tổng của từng hàng trên ma trận. Dùng một thread để thu thập các kết quả của các thread kia và ghi vào một file kết quả 53. Viết chương trình C đọc vào một dãy số nguyên từ file, dùng 1 thread khác để sắp xếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác. 54. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là 0) lên 1. 55. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác để thực hiện việc nhân 2 ma trận này và ghi ma trận kết quả ra một file khác. 56. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện tính tổng của dãy đó và gửi dãy kết quả về lại tiến trình P0. P0 thực hiện ghi các dãy kết quả vào lại file ban đầu. 57. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình con nhập vào các thông điệp và gửi cho tiến trình cha, tiến trình cha nhận các thông điệp và in ra màn hình. 58. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình. 59. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình. 60. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ tự tăng dần và gửi dãy kết quả sắp xếp về cho tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quả vào một file khác. 12
  • 13. 61. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến trình thứ 2 thực hiện tính tích của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình 1 thực hiện ghi kết quả này vào cuối file ban đầu. 62. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác để thực hiện tìm kiếm phần tử lớn nhất trên ma trận và ghi kết quả vào cuối file ban đầu. 63. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác để thực hiện việc trừ 2 ma trận này và ghi ma trận kết quả ra một file khác. 13