lệnh disown
là lệnh tích hợp trong Bash giúp tách tiến trình khỏi shell hiện tại để tránh bị chấm dứt khi đóng terminal. Đây là giải pháp hiệu quả nếu bạn cần đảm bảo các tiến trình quan trọng vẫn tiếp tục chạy nền kể cả sau khi logout. Bài viết sẽ giúp bạn hiểu rõ lệnh disown
, cú pháp sử dụng, các ví dụ thực tế và những lưu ý cần nắm để tránh sai sót. Ngoài ra, bạn cũng sẽ tìm thấy thông tin về dịch vụ lưu trữ tốc độ cao từ Vietnix và phần FAQ tổng hợp các câu hỏi phổ biến nhất.
Điểm chính cần nắm
- Lệnh disown trong Linux là gì?: Giới thiệu khái quát về chức năng và mục đích sử dụng lệnh disown trong Linux.
- Cú pháp của lệnh disown: Trình bày cú pháp cơ bản và các tùy chọn phổ biến khi dùng lệnh disown.
- 5 ví dụ về cách sử dụng lệnh disown trong Linux: Minh họa các trường hợp thực tế để áp dụng lệnh disown hiệu quả trong quản lý tiến trình.
- Lưu ý quan trọng khi sử dụng lệnh disown: Các điểm cần chú ý để tránh lỗi và đảm bảo sử dụng lệnh disown đúng cách.
- Vietnix – Giải pháp lưu trữ hiệu suất cao, tối ưu cho mọi websit: Giới thiệu dịch vụ lưu trữ hiệu suất cao của Vietnix hỗ trợ tốc độ và bảo mật cho website.
- FAQ: Tổng hợp câu hỏi thường gặp và giải đáp chi tiết về lệnh disown trong Linux.
Lệnh disown trong Linux là gì?
Lệnh disown trong Linux là một lệnh tích hợp trong shell dùng để loại bỏ các tiến trình (jobs) khỏi bảng quản lý tiến trình của shell hiện tại. Khi sử dụng disown, shell sẽ không gửi tín hiệu SIGHUP (signal hang up) đến tiến trình đó khi người dùng đăng xuất hoặc đóng terminal, nhờ vậy tiến trình vẫn tiếp tục chạy nền mà không bị gián đoạn. Tuy nhiên, khi bạn sử dụng disown
, bạn có thể đảm bảo rằng các tiến trình quan trọng vẫn tiếp tục chạy trong nền, ngay cả sau khi bạn thoát khỏi terminal hoặc đăng xuất khỏi phiên làm việc.

Cú pháp của lệnh disown
Cú pháp đơn giản
disown [options] jobID1 jobID2 … jobIDN
Trong đó:
[option]
: Các tham số tùy chọn để thay đổi cách hoạt động của lệnh.[jobID1 jobID2 … jobIDN]
: Các ID của tiến trình (job) cần loại bỏ khỏi bảng quản lý, thường được viết dưới dạng%1
,%2
…
Tùy chọn phổ biến của lệnh disown
Tùy chọn | Ý nghĩa |
---|---|
-h | Đánh dấu job không nhận tín hiệu SIGHUP nhưng vẫn giữ trong bảng quản lý |
-a | Loại bỏ tất cả các job trong bảng quản lý |
-r | Loại bỏ chỉ các job đang chạy khỏi bảng quản lý |
5 ví dụ về cách sử dụng lệnh disown
trong Linux
Xem các tiến trình đang chạy nền
Trước khi sử dụng disown
, bạn cần xác định các job hiện đang chạy trong nền của phiên làm việc shell. Ví dụ, bạn có thể khởi chạy một vài lệnh nền như sau:
$ cat /dev/random > /dev/null &
$ ping google.com > /dev/null &
# Sau đó, sử dụng lệnh jobs -l để liệt kê tất cả các job:
$ jobs -l
Kết quả mẫu:
[1] 55899
[2] 55900
[1]- 55899 Running cat /dev/random > /dev/null &
[2]+ 55900 Running ping google.com > /dev/null &

Trong đó:
- Số trong ngoặc vuông là số thứ tự của job.
- PID (Process ID) đi kèm giúp bạn quản lý tiến trình nếu cần.
- Dấu
+
chỉ job hiện tại,-
là job trước đó.
Việc xác định job là bước quan trọng trước khi bạn áp dụng disown
để quản lý hoặc gỡ bỏ các job khỏi shell.
Loại bỏ tất cả job khỏi bảng job
Nếu bạn muốn xóa toàn bộ job khỏi bảng job của shell (ví dụ sau khi đã khởi chạy nhiều tác vụ nền và không muốn shell theo dõi nữa), bạn có thể dùng tùy chọn -a
:
$ disown -a
Lệnh này sẽ gỡ toàn bộ job ra khỏi sự quản lý của shell hiện tại. Các tiến trình này sẽ tiếp tục chạy trong nền và không bị ảnh hưởng nếu bạn đóng terminal.
Lưu ý
Sau khi dùng disown
, bạn không thể quản lý job bằng jobs
, fg
, hoặc bg
nữa. Muốn dừng tiến trình, bạn sẽ phải dùng kill
kèm PID.

Loại bỏ một job cụ thể
Trong trường hợp bạn chỉ muốn gỡ bỏ một job nhất định khỏi bảng job, bạn có thể chỉ định job đó bằng ID hoặc số thứ tự job (%n
).
Ví dụ: Giả sử lệnh jobs -l
cho ra kết quả như sau:
[1]- 13026 Running cat /dev/random > /dev/null &
[2]+ 13027 Running ping google.com > /dev/null &
Bạn muốn chỉ loại bỏ job ping (job số 2):
$ disown %2
Hoặc dùng PID trực tiếp (nếu biết):
$ disown 13027
Lúc này, job tương ứng sẽ được gỡ khỏi bảng job, không còn hiển thị khi chạy jobs
.

Loại bỏ các job đang chạy
Nếu bạn muốn chỉ loại bỏ các job đang thực sự “Running”, mà không đụng tới các job đã “Stopped” (tạm dừng), dùng tùy chọn -r
:
$ disown -r
Tùy chọn này hữu ích khi bạn có nhiều job và chỉ muốn gỡ các job đang hoạt động, giúp bạn giữ lại các job dừng để xử lý sau.

Đảm bảo tiến trình tiếp tục chạy sau khi logout
Một trong những ứng dụng quan trọng nhất của disown
là đảm bảo các tiến trình quan trọng không bị dừng lại khi bạn thoát khỏi phiên terminal.
Ví dụ: Bạn chạy một tiến trình ghi log hoặc backup dữ liệu trong nền:
$ ./backup.sh &
Để chắc chắn tiến trình này vẫn tiếp tục chạy khi bạn logout, hãy gỡ nó khỏi shell bằng:
$ disown -h %1
Tùy chọn -h
sẽ đánh dấu job là không nhận tín hiệu SIGHUP (signal gửi khi bạn logout hoặc đóng terminal). Sau đó, bạn có thể thoát phiên làm việc một cách an toàn:
$ exit
Lưu ý
Tiến trình sẽ không bị dừng, nhưng bạn cũng không thể dùng jobs
để xem lại. Để kiểm tra, dùng ps
hoặc top
theo PID.
Lưu ý quan trọng khi sử dụng lệnh disown
- Không thể dùng
fg
,bg
, hoặcjobs
để quản lý job sau khi đãdisown
. disown
không dừng tiến trình, chỉ gỡ khỏi quản lý của shell.- Nên kết hợp
disown
vớinohup
để đảm bảo tiến trình tiếp tục chạy sau khi logout. - Không cần
disown
nếu dùngscreen
hoặctmux
. - Cẩn thận khi chỉ dùng
disown
không có tham số – mặc định sẽ áp dụng với job hiện tại. - Tránh dùng
disown
với các tiến trình yêu cầu tương tác người dùng. - Cần xác định đúng Job ID hoặc PID trước khi sử dụng
disown
.
Vietnix – Giải pháp lưu trữ hiệu suất cao, tối ưu cho mọi website
Vietnix là nhà cung cấp dịch vụ VPS và hosting tốc độ cao, chuyên mang đến giải pháp lưu trữ tối ưu với hiệu suất ổn định, bảo mật tiên tiến và tốc độ vượt trội. Hệ thống máy chủ hiện đại đặt tại các trung tâm dữ liệu tiêu chuẩn quốc tế, được đội ngũ kỹ thuật nhiều năm kinh nghiệm vận hành, đảm bảo website của bạn luôn hoạt động ổn định, an toàn và nhanh chóng.
Bên cạnh chất lượng dịch vụ, Vietnix còn nổi bật với chế độ hỗ trợ kỹ thuật 24/7, luôn sẵn sàng đồng hành cùng bạn trong mọi tình huống. Từ cá nhân, doanh nghiệp nhỏ đến hệ thống lớn, dịch vụ của Vietnix đều phù hợp để tối ưu hiệu quả hoạt động và nâng cao trải nghiệm người dùng.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Lệnh disown
trong Linux dùng để làm gì?
Lệnh disown
được sử dụng để xóa một hoặc nhiều job khỏi bảng job của shell, giúp các tiến trình đó không bị ảnh hưởng khi đóng terminal hoặc logout.
Khi nào nên sử dụng disown
thay vì nohup
?
Dùng disown
khi bạn đã chạy tiến trình và muốn tách nó khỏi shell hiện tại mà không cần dừng lại để chạy lại với nohup
.
Sự khác biệt giữa disown
và bg
/fg
là gì?
bg
và fg
dùng để đưa tiến trình chạy nền hoặc tiền cảnh, còn disown
là để tách hẳn tiến trình khỏi shell, không còn liên kết với session.
Cách kiểm tra các job hiện tại để dùng với disown
?
Sử dụng lệnh jobs -l
để hiển thị danh sách job đang chạy kèm PID và trạng thái.
disown -a
và disown -r
khác nhau như thế nào?
-a
loại bỏ tất cả job khỏi bảng job, còn -r
chỉ loại bỏ các job đang chạy (Running).
disown
có hoạt động trên tất cả shell không?
disown
là built-in của Bash và Zsh, không khả dụng trên mọi shell như sh hoặc Dash.
Có cách nào dùng disown
trong script bash để tránh mất job khi chạy qua SSH không?
Có, bạn có thể dùng command & disown %1
trong script để tiến trình không bị dừng khi kết nối SSH bị ngắt.
Có thể sử dụng disown
trong hệ thống CentOS 7 mặc định không?
Có, nếu bạn sử dụng Bash làm shell mặc định. Nếu dùng shell khác, cần kiểm tra hỗ trợ cụ thể.
Dùng disown
trong môi trường server production có an toàn không?
Có, nhưng bạn cần cẩn thận vì sau khi disown, shell không còn quản lý tiến trình – phải theo dõi PID thủ công.
Lời kết
Khi sử dụng đúng cách, lệnh disown
giúp quản lý tiến trình linh hoạt và hạn chế gián đoạn không mong muốn trên hệ thống Linux. Nếu bạn đang vận hành các dịch vụ nền hoặc cần giữ tiến trình sống sót sau khi logout, đây là công cụ đáng tin cậy. Nếu bạn có bất kỳ thắc mắc nào về lệnh disown
, quản lý job trong shell, hoặc cần hỗ trợ kỹ thuật, hãy để lại bình luận bên dưới. Đừng quên khám phá thêm các bài viết khác trên blog để tối ưu quá trình sử dụng Linux hiệu quả hơn.
Mọi người cũng xem: