Giới thiệu
Trong lab này, bạn sẽ học về lệnh disown
của Linux và cách sử dụng nó để tách các tiến trình đang chạy khỏi shell, cho phép chúng tiếp tục thực thi ngay cả sau khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal. Lab bao gồm việc tìm hiểu mục đích của lệnh disown
, tách một tiến trình đang chạy ở chế độ nền và quản lý đầu ra của nhiều tiến trình đã tách. Kiến thức này có thể hữu ích để chạy các tác vụ chạy dài, chẳng hạn như script sao lưu hoặc web server, mà không cần phải giữ phiên terminal đang mở.
Tìm hiểu Mục đích của Lệnh disown
Trong bước này, bạn sẽ tìm hiểu về mục đích của lệnh disown
trong Linux. Lệnh disown
được sử dụng để tách một tiến trình đang chạy khỏi shell, cho phép nó tiếp tục chạy ngay cả sau khi phiên shell đã đóng.
Khi bạn bắt đầu một tiến trình ở foreground, nó sẽ được liên kết với phiên shell hiện tại. Nếu bạn đóng shell, tiến trình sẽ bị chấm dứt. Tuy nhiên, bằng cách sử dụng lệnh disown
, bạn có thể tách tiến trình khỏi shell, cho phép nó tiếp tục chạy ở background, ngay cả sau khi shell đã đóng.
Điều này có thể hữu ích trong các tình huống bạn cần chạy một tiến trình chạy dài, chẳng hạn như một script sao lưu hoặc một web server, và bạn muốn đảm bảo rằng tiến trình tiếp tục chạy ngay cả khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal.
Hãy bắt đầu bằng cách chạy một tiến trình background đơn giản và sau đó sử dụng lệnh disown
để tách nó khỏi shell.
## Start a background process that runs indefinitely
$ sleep 1000 &
[1] 12345
## Detach the process from the shell using the disown command
$ disown %1
Ví dụ đầu ra:
Trong ví dụ trên, trước tiên chúng ta bắt đầu một tiến trình background bằng lệnh sleep 1000 &
. Lệnh này sẽ chạy lệnh sleep
ở background trong 1000 giây (xấp xỉ 16 phút).
Tiếp theo, chúng ta sử dụng lệnh disown %1
để tách tiến trình khỏi shell. %1
đề cập đến số job của tiến trình background, bạn có thể tìm thấy bằng lệnh jobs
.
Sau khi chạy lệnh disown
, tiến trình sẽ tiếp tục chạy ở background, ngay cả khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal.
Tách một Tiến trình Đang chạy ở Background
Trong bước này, bạn sẽ học cách tách một tiến trình đang chạy ở background, cho phép nó tiếp tục thực thi ngay cả sau khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal.
Đầu tiên, hãy bắt đầu một tiến trình background chạy vô thời hạn:
## Start a background process that runs indefinitely
$ sleep 1000 &
[1] 12345
Bây giờ, hãy tách tiến trình đang chạy bằng lệnh disown
:
## Disown the running process
$ disown %1
Ví dụ đầu ra:
Trong ví dụ trên, trước tiên chúng ta bắt đầu một tiến trình background bằng lệnh sleep 1000 &
. Lệnh này sẽ chạy lệnh sleep
ở background trong 1000 giây (xấp xỉ 16 phút).
Tiếp theo, chúng ta sử dụng lệnh disown %1
để tách tiến trình khỏi shell. %1
đề cập đến số job của tiến trình background, bạn có thể tìm thấy bằng lệnh jobs
.
Sau khi chạy lệnh disown
, tiến trình sẽ tiếp tục chạy ở background, ngay cả khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal.
Để xác minh rằng tiến trình vẫn đang chạy, bạn có thể sử dụng lệnh ps
:
## Check if the process is still running
$ ps -ef | grep 'sleep 1000'
labex 12345 12321 0 11:30 pts/0 00:00:00 sleep 1000
Như bạn có thể thấy, tiến trình sleep 1000
vẫn đang chạy, mặc dù chúng ta đã tách nó.
Tách Nhiều Tiến trình và Quản lý Đầu ra của Chúng
Trong bước này, bạn sẽ học cách tách nhiều tiến trình đang chạy ở background và quản lý đầu ra của chúng.
Đầu tiên, hãy bắt đầu hai tiến trình background chạy vô thời hạn:
## Start two background processes
$ sleep 1000 &
[1] 12345
$ sleep 2000 &
[2] 12346
Bây giờ, hãy tách cả hai tiến trình bằng lệnh disown
:
## Disown the running processes
$ disown %1 %2
Ví dụ đầu ra:
Trong ví dụ trên, trước tiên chúng ta bắt đầu hai tiến trình background bằng lệnh sleep 1000 &
và sleep 2000 &
. Lệnh này sẽ chạy lệnh sleep
ở background trong 1000 và 2000 giây, tương ứng.
Tiếp theo, chúng ta sử dụng lệnh disown %1 %2
để tách cả hai tiến trình khỏi shell. %1
và %2
đề cập đến số job của các tiến trình background, bạn có thể tìm thấy bằng lệnh jobs
.
Sau khi chạy lệnh disown
, cả hai tiến trình sẽ tiếp tục chạy ở background, ngay cả khi bạn đăng xuất khỏi hệ thống hoặc đóng terminal.
Để quản lý đầu ra của các tiến trình đã tách, bạn có thể chuyển hướng đầu ra của chúng đến một file:
## Start two background processes and redirect their output to files
$ sleep 1000 > process1.log 2>&1 &
[1] 12345
$ sleep 2000 > process2.log 2>&1 &
[2] 12346
## Disown the running processes
$ disown %1 %2
Trong ví dụ trên, chúng ta bắt đầu hai tiến trình background và chuyển hướng đầu ra của chúng đến các file process1.log
và process2.log
, tương ứng. Sau đó, chúng ta sử dụng lệnh disown
để tách các tiến trình khỏi shell.
Sau khi các tiến trình đã chạy xong, bạn có thể kiểm tra nội dung của các file log để xem đầu ra của các tiến trình đã tách.
Tóm tắt
Trong lab này, bạn sẽ học cách sử dụng lệnh disown
trong Linux để tách các tiến trình đang chạy khỏi phiên shell hiện tại. Điều này cho phép các tiến trình tiếp tục chạy ở background, ngay cả sau khi bạn đăng xuất hoặc đóng terminal. Bạn sẽ bắt đầu một tiến trình background, sau đó sử dụng lệnh disown
để tách nó, đảm bảo nó tiếp tục chạy. Ngoài ra, bạn sẽ học cách tách nhiều tiến trình và quản lý đầu ra của chúng. Lệnh disown
hữu ích để chạy các tác vụ chạy dài, chẳng hạn như sao lưu hoặc web server, mà không cần phải giữ terminal đang mở.