Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh jobs trong Linux để quản lý tiến trình nền

    Nguyễn Hưng

    Ngày đăng:

    22/04/2026

    Cập nhật lần cuối:

    22/04/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    22/04/2026

    Cập nhật lần cuối:

    22/04/2026

    Mục lục

    Lệnh jobs trong Linux là công cụ dòng lệnh cơ bản được sử dụng để hiển thị trạng thái của các tiến trình đang chạy trong phiên Terminal hiện tại và đưa chúng vào chế độ nền hoặc tiền cảnh. Bài viết này được mình đúc kết từ quá trình hỗ trợ hàng ngàn khách hàng xử lý các script backup và deploy ứng dụng tại Vietnix, nơi việc giữ cho tiến trình chạy ổn định là yếu tố quan trọng hàng đầu. Trong bài viết này, mình sẽ hướng dẫn chi tiết cách sử dụng lệnh jobs cùng với các lệnh để quản lý luồng công việc một cách hiệu quả.

    Những điểm chính

    • Quan điểm của mình: Trong năm 2026, với sự bùng nổ của các ứng dụng chạy ngầm trên môi trường Cloud thì việc nắm vững cách dùng lệnh jobs không chỉ là kỹ năng cơ bản, mà là tư duy cần thiết để quản trị tài nguyên hiệu quả mà không cần đến các công cụ theo dõi phức tạp.
    • Định nghĩa: Hiểu rõ khái niệm và chức năng của lệnh jobs trong Linux trong việc kiểm soát, theo dõi mọi tác vụ đang hoạt động ngay tại phiên làm việc terminal hiện tại.
    • Các lệnh quản lý cơ bản: Nắm vững bộ công cụ fg, bg, Ctrl+Z để điều phối linh hoạt các công việc giữa chế độ chạy nền và tiền cảnh.
    • Các tùy chọn phổ biến: Sử dụng thành thạo các tham số như -l, -p, -n để trích xuất thông tin chi tiết về mã định danh (PID) và trạng thái thay đổi của từng job.
    • Hướng dẫn sử dụng chi tiết: Làm chủ kỹ năng khởi chạy ngầm, tạm dừng, khôi phục hoặc kết thúc các tác vụ để thực hiện đa nhiệm hiệu quả và tiết kiệm thời gian.
    • Xử lý lỗi thường gặp: Biết cách khắc phục triệt để các sự cố như không tìm thấy job, lệnh kill không phản hồi hoặc xử lý tình trạng mất kết nối SSH.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc khi sử dụng lệnh jobs trong Linux.

    Lệnh jobs trong Linux là gì?

    Lệnh jobs trong Linux là lệnh dùng để hiển thị và quản lý các tác vụ đang chạy nền hoặc đang bị tạm dừng trong phiên shell hiện tại thay vì toàn bộ tiến trình của hệ thống. Khác với ps hay top, jobs chỉ tập trung vào các công việc do chính bạn khởi tạo từ cửa sổ terminal hiện tại. Nếu bạn mở một tab terminal mới, danh sách jobs sẽ trống trơn dù hệ thống đang có hàng trăm tiến trình đang chạy.

    Đây là công cụ thiết yếu cho việc quản lý đa nhiệm trong một phiên Terminal duy nhất, đặc biệt hữu ích khi bạn thực hiện các tác vụ tốn thời gian như sao lưu, nén file hoặc tải dữ liệu. Công dụng chính của lệnh jobs đó là:

    • Giám sát trạng thái: Biết được tác vụ nào đang chạy (running), đã dừng (stopped) hay đã hoàn tất (done).
    • Quản lý định danh: Cung cấp Job ID (số hiệu công việc) và PID (ID tiến trình) để phục vụ cho các thao tác khác như tắt (kill) hoặc đưa về chạy nổi (fg).
    Lệnh jobs trong Linux là lệnh dùng để hiển thị và quản lý các job (tác vụ) đang chạy nền hoặc đang bị tạm dừng
    Lệnh jobs trong Linux dùng để hiển thị và quản lý các tác vụ đang chạy nền hoặc đang bị tạm dừng

    Cú pháp và các tùy chọn phổ biến của lệnh jobs

    Cú pháp lệnh như sau:

    jobs [tùy_chọn]

    Dưới đây là các tùy chọn phổ biến và hữu ích của lệnh jobs:

    Tùy chọnChức năng
    -lHiển thị đầy đủ thông tin bao gồm số hiệu công việc, ID tiến trình và trạng thái hiện tại.
    -pChỉ xuất ra danh sách các ID tiến trình của các công việc, bỏ qua các thông tin khác.
    -nChỉ liệt kê các công việc có sự thay đổi trạng thái kể từ lần báo cáo gần nhất.
    -rLọc và chỉ hiển thị các công việc đang ở trạng thái hoạt động.
    -sLọc và chỉ hiển thị các công việc đang bị tạm ngưng.
    -xDùng để chạy một câu lệnh kèm theo, trong đó tên công việc sẽ được thay thế bằng Process ID tương ứng.

    Các lệnh quản lý job cơ bản

    Để điều phối các tác vụ qua lại giữa chế độ tiền cảnh và chạy nền, bạn cần kết hợp jobs với bộ công cụ điều khiển sau:

    LệnhChức năngÁp dụng cho
    jobsHiển thị danh sách các Job đang chạy nền/tạm dừng.Shell hiện tại
    <lệnh> &Khởi chạy một lệnh mới ở chế độ nền.Bắt đầu Job
    Ctrl + ZTạm dừng Job đang chạy ở tiền cảnh.Job tiền cảnh
    fgĐưa Job nền vào chế độ tiền cảnh.Job nền/tạm dừng
    bgKhởi chạy Job đã bị tạm dừng ở chế độ nền.Job tạm dừng
    kill %NKết thúc Job bằng Job ID.Job nền/tạm dừng

    Chạy Job ở chế độ nền

    Để bắt đầu một tiến trình và đặt tiến trình đó vào chế độ nền để giải phóng Terminal cho các tác vụ khác, bạn hãy thêm dấu & vào cuối câu lệnh:

    sleep 60 &
    Khởi chạy Job ở chế độ nền
    Khởi chạy Job ở chế độ nền

    Sau đó Shell sẽ in ra Job ID (ví dụ: [1]) kèm theo PID, đồng thời trả lại ngay dấu nhắc lệnh để bạn làm việc khác.

    Mẹo từ chuyên gia: Khi chạy một tác vụ quan trọng ở chế độ nền bằng &, mình khuyên bạn nên luôn kết hợp với nohup hoặc disown. Ví dụ: nohup ./backup.sh &. Điều này giúp tiến trình của bạn không bị mất ngay cả khi bạn vô tình đóng Terminal hoặc bị rớt mạng đột ngột.

    Tạm dừng Job đang chạy ở tiền cảnh

    Nếu một tiến trình đang chạy chiếm màn hình và bạn cần thoát ra ngoài một chút thì hãy làm như sau:

    1. Nhấn tổ hợp phím Ctrl + Z.
    2. Hệ thống sẽ báo tiến trình chuyển sang trạng thái Stopped (Tạm dừng) và trả lại quyền điều khiển Terminal.

    Xem trạng thái các Job

    Nếu muốn liệt kê tất cả các tiến trình nền và các tiến trình tạm dừng đang được shell hiện tại quản lý, bạn sử dụng lệnh dưới đây:

    jobs

    Hoặc để xem chi tiết kèm theo PID, bạn dùng lệnh:

    jobs -l
    Xem trạng thái các Job
    Xem trạng thái các Job

    Kết quả trả về thường có định dạng: [1]+ 2345 Running sleep 60 &.

    Giải thích kết quả:

    • [1], [2]: Là các Job ID.
    • +: Ký hiệu Job mặc định sẽ được ưu tiên đưa lên tiền cảnh nếu bạn dùng lệnh fg mà không chỉ định ID.
    • -: Ký hiệu Job tiếp theo sau Job mặc định.
    • 2345: ID tiến trình (PID).
    • Running/Stopped: Trạng thái tiến trình.

    Đưa Job vào chế độ tiền cảnh

    Để khôi phục một job chạy ngầm lên màn hình làm việc chính, bạn sử dụng lệnh fg kèm theo Job ID (có thêm ký hiệu %):

    fg %1
    Đưa Job vào chế độ tiền cảnh
    Đưa Job vào chế độ tiền cảnh

    Tiến trình số 1 sẽ hiện lên màn hình và bạn có thể tương tác trực tiếp với tiến trình này. Nếu bạn chỉ dùng lệnh fg mà không đi kèm Job ID, shell sẽ mặc định đưa Job được đánh dấu + lên tiền cảnh.

    Lỗi thường gặp: Tuyệt đối không dùng lệnh fg đưa một script tự động không cần tương tác (như rsync đồng bộ vài chục GB) lên tiền cảnh nếu mạng internet của bạn không ổn định. Nếu rớt mạng lúc này, tiến trình sẽ bị chết giữa chừng.

    Chạy lại Job đã tạm dừng ở chế độ nền

    Nếu bạn đã dùng Ctrl + Z để dừng một công việc và giờ muốn tiến trình này tiếp tục xử lý bên dưới hệ thống thì hãy dùng lệnh bg:

    bg %1

    Khi đó, Job sẽ chuyển trạng thái từ Stopped sang Running và hoạt động ngầm bên dưới.

    Chạy lại Job đã tạm dừng ở chế độ nền
    Chạy lại Job đã tạm dừng ở chế độ nền

    Tắt Job

    Để buộc kết thúc một tác vụ ngầm hoặc đang tạm dừng, bạn sử dụng lệnh kill kết hợp với Job ID:

    kill %1

    Hệ thống sẽ gửi đi tín hiệu SIGTERM mặc định yêu cầu tiến trình tự dọn dẹp và kết thúc.

    kết thúc một tiến trình đang chạy nền hoặc đang tạm
    Kết thúc một tiến trình đang chạy nền hoặc đang tạm

    Lỗi fg: job not found

    Lỗi này xuất hiện khi bạn nhập sai Job ID do nhầm lẫn với ID tiến trình (PID) hoặc do công việc đó đã hoàn thành và tự động biến mất khỏi danh sách quản lý. Ngoài ra, việc cố gắng điều khiển một Job từ một cửa sổ Terminal khác cũng sẽ gây ra thông báo lỗi này. Để khắc phục, bạn chạy lệnh jobs để xem lại danh sách Job hiện tại và xác định ID chính xác.

    Lệnh kill %N không hoạt động

    Tình trạng này xảy ra khi tiến trình đang bị treo hoặc gặp lỗi phần mềm khiến chúng không phản hồi với tín hiệu SIGTERM mặc định. Ngoài ra, nguyên nhân cũng có thể do bạn gõ thiếu ký tự %, khiến hệ thống hiểu nhầm bạn đang nhắm vào PID hệ thống thay vì Job ID hiện tại. Để khắc phục, bạn sử dụng lệnh kill -9 để gửi tín hiệu SIGKILL, buộc hệ thống kết thúc tiến trình ngay lập tức với cú pháp sau:

    kill -9 %<Job_ID> #ví dụ kill -9 %1

    Mất kết nối SSH khi Job đang chạy nền

    Khi bạn đăng xuất hoặc bị rớt mạng, phiên làm việc hiện tại sẽ bị đóng lại. Theo cơ chế mặc định của Linux, Shell cha sẽ gửi tín hiệu SIGHUP đến tất cả các tiến trình con đang chạy bên trong, buộc chúng phải chấm dứt hoạt động theo. Để khắc phục, bạn sử dụng các công cụ quản lý phiên như screen hoặc tmux để chạy các Job dài hạn hoặc sử dụng lệnh nohup để tách Job ra khỏi sự phụ thuộc vào Terminal:

    nohup <lệnh> &
    Mất kết nối SSH khi Job đang chạy nền
    Mất kết nối SSH khi Job đang chạy nền (Nguồn: Internet)

    Câu hỏi thường gặp

    Nếu tắt cửa sổ Terminal, các Job đang chạy nền có bị tắt không?

    Có. Theo mặc định, khi bạn đóng Terminal, tất cả các tiến trình con bao gồm cả background jobs do shell đó quản lý sẽ bị kết thúc. Để giữ tiến trình chạy sau khi tắt Terminal, bạn cần dùng lệnh nohup, disown hoặc sử dụng tmux/screen.

    Tại sao tôi mở một tab Terminal mới và gõ lệnh jobs thì không thấy gì?

    Lệnh jobs chỉ hiển thị các tiến trình được khởi tạo và quản lý bởi phiên Shell hiện tại. Khi bạn mở một tab hoặc cửa sổ mới, đó là một phiên Shell hoàn toàn mới, nên jobs sẽ không biết về các Job đang chạy ở cửa sổ cũ. Để tìm tiến trình ở cửa sổ khác, bạn phải dùng lệnh ps hoặc top.

    Phím tắt Ctrl + C và Ctrl + Z khác nhau như thế nào?

    Ctrl + C: Gửi tín hiệu SIGINT để kết thúc (kill) ngay lập tức tiến trình đang chạy, khi đó tiến trình sẽ bị đóng hoàn toàn.
    Ctrl + Z: Gửi tín hiệu SIGTSTP để tạm dừng (suspend) tiến trình. Tiến trình vẫn còn trong bộ nhớ nhưng không hoạt động, bạn có thể khôi phục bằng fg hoặc bg.

    Lệnh jobs trong Linux là công cụ quản lý tiến trình nền/tiền cảnh cốt lõi trong Linux shell, cho phép bạn thực hiện đa nhiệm hiệu quả trong một Terminal duy nhất. Bằng cách thành thạo việc chuyển đổi giữa các chế độ, quản lý danh sách và điều khiển luồng công việc, bạn đã làm chủ được kỹ năng thiết yếu để xử lý các tác vụ tốn thời gian mà không làm gián đoạn công việc của mình.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Kết nối Claude Google Search Console (GSC)
    Kết nối Claude Google Search Console (GSC)

    Kết nối Claude Google Search Console (GSC) qua MCP Server giúp bạn trực tiếp truy cập và phân tích dữ liệu SEO bằng AI một cách nhanh chóng và tự động. Trong bài viết này, mình sẽ hướng dẫn bạn cách thiết lập kết nối này từng bước để khai thác dữ liệu GSC hiệu…

    21/04/2026

    Lệnh pstree là một lệnh dòng lệnh trong Linux dùng để hiển thị các tiến trình đang chạy dưới dạng cây cha - con. Việc dùng lệnh pstree sẽ giúp bạn hiểu rõ quan hệ cha - con giữa các tiến trình để truy vết nguồn gốc một process bất thường hoặc ngốn tài nguyên. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu rõ lợi ích và cách sử dụng lệnh pstree qua các ví dụ cụ thể.
    Lệnh pstree là một lệnh dòng lệnh trong Linux dùng để hiển thị các tiến trình đang chạy dưới dạng cây cha - con. Việc dùng lệnh pstree sẽ giúp bạn hiểu rõ quan hệ cha - con giữa các tiến trình để truy vết nguồn gốc một process bất thường hoặc ngốn tài nguyên. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu rõ lợi ích và cách sử dụng lệnh pstree qua các ví dụ cụ thể.

    Lệnh pstree là một lệnh dòng lệnh trong Linux dùng để hiển thị các tiến trình đang chạy dưới dạng cây cha - con. Việc dùng lệnh pstree sẽ giúp bạn hiểu rõ quan hệ cha - con giữa các tiến trình để truy vết nguồn gốc một process bất thường hoặc ngốn tài nguyên.…

    21/04/2026

    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng
    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng

    Lệnh pidstat là công cụ chuyên dụng trên hệ thống Linux, được sử dụng để giám sát tài nguyên mà các tiến trình đang sử dụng. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý hàng nghìn ticket tối ưu hệ thống cho khách hàng tại Vietnix, nơi mà mỗi…

    20/04/2026

    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng
    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng

    smartctl là một tiện ích dòng lệnh giúp quản lý và giám sát hệ thống S.M.A.R.T., từ đó theo dõi chi tiết sức khỏe ổ cứng HDD/SSD trong môi trường máy chủ lẫn máy trạm cá nhân. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt, sử dụng các lệnh smartctl quan trọng…

    14/04/2026

    linux

    lenh

    text