Lệnh bg trong linux


9 8
Trong phần trước, cách thức gõ phím CTRL+z để tạm dừng một quá trình đã được giới
thiệu. Linux còn người dùng cách thức để chạy một chương trình dưới chế độ nền background - sử dụng lệnh
bg - trong khi các chương trình khác đang chạy, và để chuyển
một chương trình vào trong chế độ nền - dùng ký hiệu
.
Nếu một quá trình hoạt động mà không đưa ra thông tin nào trên màn hình và khơng cần nhận bất kỳ thơng tin đầu vào nào, thì có thể sử dụng lệnh
bg để đưa nó vào trong chế
độ nền ở chế độ này nó sẽ tiếp tục chạy cho đến khi kết thúc. Khi chương trình cần đưa thơng tin ra màn hình hoặc nhận thơng tin từ bàn phím, hệ thống sẽ tự động dừng chương
trình và thơng báo cho người dùng. Cũng có thể sử dụng chỉ số điều khiển cơng việc job control để làm việc với chương trình nào muốn. Khi chạy một chương trình trong chế độ
nền, chương trình đó được đánh số thứ tự được bao bởi dấu ngoặc vuông [], theo sau là chỉ số của quá trình.
Sau đó có thể sử dụng lệnh fg + số thứ tự của chương trình để đưa chương trình
trở lại chế độ nổi và tiếp tục chạy. Để có một chương trình hoặc một lệnh ống tự động chạy trong chế độ nền, chỉ cần
thêm ký hiệu
vào cuối lệnh.
Trong một số hệ thống, khi quá trình nền kết thúc thì hệ thống sẽ gửi thông báo tới người dùng, nhưng trên hầu hết các hệ thống, khi q trình trên nền hồn thành thì hệ thống
sẽ chờ cho đến khi người dùng gõ phím Enter thì mới hiển thị dấu nhắc lệnh mới kèm theo thơng báo hồn thành q trình thường thì một q trình hồn thành sau khoảng 20 giây.
Nếu cố để chuyển một chương trình vào chế độ nền mặc dù nó có các thơng tin cần xuất hoặc nhập từ các thiết bị vào ra chuẩn thì hệ thống sẽ đưa ra thông báo lỗi dưới dạng sau:
Stopped tty inputoutput tên chương trình. Ví dụ, lệnh sau đây thực hiện việc tìm kiếm file
thu1 trong chế độ nền: find -name thu1
[5] 918
trong chế độ này, số thứ tự của chương trình là [ 5], chỉ số quá trình tương ứng với lệnh
find là 918. Vì gõ Enter khi quá trình chưa thực hiện xong nên trên màn hình chỉ hiển thị số thứ tự của chương trình và chỉ số quá trình, nếu chờ khoảng 30 hoặc 40 giây sau rồi gõ
Enter lần nữa, màn hình hiển thị thơng báo hồn thành chương trình như sau:
[5] Done find -name thu1
Giả sử chương trình chưa hồn thành và muốn chuyển nó lên chế độ nổi, hãy gõ lệnh sau:
fg 5
find -name thu1 .thu1
chương trình đã hồn thành và hiển thị thông báo rằng file
thu1 nằm ở thư mục gốc.
Thông thường sẽ đưa ra một thông báo lỗi nếu người dùng cố chuyển một chương trình vào chế độ nền khi mà chương trình đó cần phải xuất hoặc nhập thơng tin từ thiết bị vào ra
chuẩn. Ví dụ, lệnh:
vi
[6] 920
9 9
nhấn Enter
[6] + Stopped tty output vi
Lệnh trên chạy chương trình vi trong chế độ nền, tuy nhiên lệnh gặp phải lỗi vì đây là
chương trình đòi hỏi hiển thị các thông tin ra màn hình output. Dòng thơng báo lỗi
Stopped tty intput vi cũng xảy ra khi chương trình vi cần nhận thơng tin. 4.2.2. Hiển thị các quá trình đang chạy với lệnh ps
Linux cung cấp cho người dùng hai cách thức nhận biết có những chương trình nào đang chạy trong hệ thống. Cách dễ hơn, đó là lệnh
jobs sẽ cho biết các q trình nào đã
dừng hoặc là được chạy trong chế độ nền. Cách phức tạp hơn là sử dụng lệnh
ps. Lệnh này cho biết thơng tin đầy đủ nhất về các
q trình đang chạy trên hệ thống. Ví dụ:
ps
PID TTY TIME CMD
7813 pts0 00:00:00 bash
7908 pts0 00:00:00 ps
PID - chỉ số của quá trình, TTY - tên thiết bị đầu cuối trên đó q trình được thực hiện, TIME - thời gian để chạy quá trình, CMD - lệnh khởi tạo quá trình.
Cú pháp lệnh
ps: ps [tùy-chọn]
Lệnh ps có một lượng quá phong phú các tùy chọn được chia ra làm nhiều loại. Dưới
đây là một số các tùy chọn hay dùng. Các tùy chọn đơn giản:
-A, -e : chọn để hiển thị tất cả các quá trình. -T : chọn để hiển thị các quá trình trên trạm cuối đang chạy.
-a : chọn để hiển thị tất cả các quá trình trên một trạm cuối, bao gồm cả các quá trình của
những người dùng khác.
-r : chỉ hiển thị quá trình đang được chạy. Chọn theo danh sách
-C : chọn hiển thị các quá trình theo tên lệnh. -G : hiển thị các q trình theo chỉ số nhóm người dùng.
-U : hiển thị các quá trình theo tên hoặc chỉ số của người dùng thực sự người dùng khởi động
quá trình.
-p : hiển thị các quá trình theo chỉ số của quá trình. -s : hiển thị các quá trình thuộc về một phiên làm việc.
-t : hiển thị các quá trình thuộc một trạm cuối. -u : hiển thị các quá trình theo tên và chỉ số của người dùng hiệu quả.
1
Thiết đặt khuôn dạng được đưa ra của các quá trình -f : hiển thị thơng tin về q trình với các trường sau UID - chỉ số người dùng, PID - chỉ số quá
trình, PPID - chỉ số quá trình khởi tạo ra quá trình, C - , STIME - thời gian khởi tạo quá trình, TTY - tên thiết bị đầu cuối trên đó q trình được chạy, TIME - thời gian để thực hiện quá
trình, CMD - lệnh khởi tạo quá trình
-l : hiển thị đầy đủ các thơng tin về q trình với các trường F, S, UID, PID, PPID, C, PRI, NI,
ADDR, SZ, WCHAN, TTY, TIME, CMD
-o xâu-chọn : hiển thị các thông tin về q trình theo dạng do người dùng tự chọn thơng qua
xâu-chọn các kí hiệu điều khiển hiển thị có các dạng như sau: C, cpu
CPU được sử dụng cho quá trình mem
bộ nhớ được sử dụng để chạy quá trình G
tên nhóm người dùng P
chỉ số của q trình cha khởi động ra quá trình con U
định danh người dùng c
lệnh tạo ra quá trình p
chỉ số của quá trình x
thời gian để chạy quá trình y
thiết bị đầu cuối trên đó q trình được thực hiện Ví dụ, muốn xem các thơng tin như tên người dùng, tên nhóm, chỉ số quá trình, chỉ số
quá trình khởi tạo ra quá trình, tên thiết bị đầu cuối, thời gian chạy quá trình, lệnh khởi tạo quá trình, hãy gõ lệnh:
ps -o U G p P y x c
USER GROUP PID PPID TTY TIME COMMAND root root 1929 1927 pts1 00:00:00 bash
root root 2279 1929 pts1 00:00:00 ps

4.2.3. Hủy quá trình với lệnh kill


Trong một số trường hợp, sử dụng lệnh kill để hủy bỏ một quá trình. Điều quan trọng
nhất khi sử dụng lệnh kill là phải xác định được chỉ số của quá trình mà chúng ta muốn
hủy. Cú pháp lệnh:
kill [tùy-chọn] chỉ-số-của-tiến-trình kill -l [tín hiệu]
Lệnh kill sẽ gửi một tín hiệu đến q trình được chỉ ra. Nếu khơng chỉ ra một tín hiệu
nào thì ngầm định là tín hiệu
TERM sẽ được gửi. -s : xác định tín hiệu được gửi. Tín hiệu có thể là số hoặc tên của tín hiệu. Dưới đây là một số
tín hiệu hay dùng:
Số Tên
Ý nghĩa
1 SIGHUP
hang up đây là tín hiệu được gửi đến tất cả các
quá trình đang chạy trước khi
logout khỏi hệ
thống 2
SIGINT interrupt đây là tín hiệu được gửi khi nhấn
1
CTRL+c
9 SIGKILL
kill tín hiệu này sẽ dừng q trình ngay lập tức
15 SIGTERM tín hiệu này u cầu dừng q trình ngay lập tức,
nhưng cho phép chương trình xóa các file tạm.
-p : lệnh kill sẽ chỉ đưa ra chỉ số của q trình mà khơng gửi một tín hiệu nào. -l : hiển thị danh sách các tín hiệu mà lệnh kill có thể gửi đến các q trình các tín hiệu này có
trong file usrincludeLinuxsignal.h
Ví dụ,
ps
PID TTY TIME CMD 2240 pts2 00:00:00 bash
2276 pts2 00:00:00 man 2277 pts2 00:00:00 more
2280 pts2 00:00:00 sh 2281 pts2 00:00:00 sh
2285 pts2 00:00:00 less 2289 pts2 00:00:00 man
2291 pts2 00:00:00 sh 2292 pts2 00:00:00 gunzip
2293 pts2 00:00:00 less 2298 pts2 00:00:00 ps
kill 2277
PID TTY TIME CMD 2240 pts2 00:00:00 bash
2276 pts2 00:00:00 man 2280 pts2 00:00:00 sh
2281 pts2 00:00:00 sh 2285 pts2 00:00:00 less
2289 pts2 00:00:00 man 2291 pts2 00:00:00 sh
2292 pts2 00:00:00 gunzip 2293 pts2 00:00:00 less
2298 pts2 00:00:00 ps

4.2.4. Cho máy ngừng hoạt động một thời gian với lệnh sleep


Nếu muốn cho máy nghỉ một thời gian mà không muốn tắt vì ngại khởi động lại thì cần dùng lệnh
sleep. Cú pháp: sleep [tùy-chọn] NUMBER[SUFFIXƯ]
NUMBER: số giâys ngừng hoạt động. SUFFIX : có thể là giâys hoặc phútm hoặc giờ hoặc ngàyd

Chủ Đề