Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn sử dụng lệnh fg Linux để đưa tiến trình chạy nền ra foreground

    Nguyễn Hưng

    Ngày đăng:

    26/03/2026

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

    26/03/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:

    26/03/2026

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

    26/03/2026

    Mục lục

    Lệnh fg Linux là lệnh điều khiển job cho phép bạn đưa một tiến trình đang dừng (stopped) hoặc đang chạy nền (background) trong shell quay lại foreground để tiếp tục chạy trực tiếp trên terminal hiện tại. Trong bài viết này, mình sẽ cùng bạn tìm hiểu bản chất lệnh fg Linux, cú pháp và cách sử dụng trong các tình huống một hoặc nhiều job nền, cách phân biệt với bg và jobs, cũng như xử lý những lỗi thường gặp liên quan đến job control trong shell.

    Những điểm chính

    • Khái niệm: Hiểu rõ lệnh fg là công cụ dùng để đưa một job đang dừng hoặc chạy nền trở lại foreground, giúp bạn tiếp tục tương tác trực tiếp với tiến trình đó.
    • Cú pháp cơ bản: Nắm vững cú pháp và các tùy chọn, giúp bạn dễ dàng lựa chọn đúng job cần đưa ra foreground trong các tình huống khác nhau.
    • Cách sử dụng cơ bản: Nắm vững quy trình 3 bước từ việc tạo job, kiểm tra danh sách đến đưa job về lại foreground, giúp bạn áp dụng lệnh fg một cách linh hoạt trong công việc hàng ngày.
    • Sử dụng với nhiều tiến trình: Tìm hiểu cách quản lý và lựa chọn đúng job khi có nhiều tiến trình chạy nền, giúp bạn tránh nhầm lẫn và thao tác chính xác.
    • Phân biệt với bg và jobs: Phân biệt rõ ràng vai trò của từng lệnh, giúp bạn hiểu rõ cách chúng phối hợp để quản lý vòng đời của các job một cách hiệu quả.
    • Các lỗi thường gặp và cách khắc phục: Nhận diện được các lỗi phổ biến như “no current job” và “no such job”, giúp bạn chẩn đoán và xử lý sự cố một cách nhanh chóng.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh fg Linux.

    Lệnh fg trên Linux là gì?

    Lệnh fg trong Linux là lệnh điều khiển job dùng để đưa một job đang dừng (stopped) hoặc đang chạy ở chế độ nền (background) trong shell trở lại chạy ở chế độ foreground trên terminal hiện tại. Theo chuẩn POSIX, fg hoạt động trong môi trường shell có hỗ trợ job control (như bash, zsh), cho phép người dùng tiếp tục tương tác trực tiếp với tiến trình đã được tạm dừng bằng Ctrl + Z hoặc đưa xuống nền bằng dấu &, thay vì phải khởi chạy lại lệnh từ đầu.

    Lệnh fg trong Linux là lệnh điều khiển job dùng để đưa một job đang dừng ở chế độ nền trở lại chạy ở chế độ foreground
    Lệnh fg trong Linux là lệnh điều khiển job dùng để đưa một job đang dừng ở chế độ nền trở lại chạy ở chế độ foreground

    Cú pháp cơ bản của lệnh fg

    Lệnh fg trong Linux có cú pháp ngắn gọn, cho phép bạn chỉ định job cần đưa ra foreground hoặc dùng job hiện tại nếu không truyền tham số. Cú pháp tổng quát:

    fg [job_id]

    Trong đó: job_id là ID của tiến trình trong danh sách job (không bắt buộc).

    Bước 1: Chạy một lệnh ở chế độ foreground và tạm dừng

    Trước hết, bạn cần có một tiến trình đang chạy ở foreground để có thể đưa nó vào background bằng cách tạm dừng.

    Bạn khởi chạy một lệnh dài hoặc liên tục, ví dụ lệnh ping:

    ping google.com

    Khi lệnh đang chạy, bạn tạm dừng tiến trình và chuyển nó sang trạng thái stopped bằng tổ hợp phím Ctrl + Z. Sau thao tác này, shell sẽ thông báo tiến trình đã bị dừng (Stopped) và được gắn một job ID trong danh sách job.

    Chạy một lệnh ở chế độ foreground và tạm dừng
    Chạy một lệnh ở chế độ foreground và tạm dừng

    Bước 2: Kiểm tra danh sách các job đang chạy

    Sau khi có ít nhất một job ở trạng thái stopped hoặc background, bạn nên kiểm tra danh sách job để biết job ID và trạng thái hiện tại.

    Bạn sử dụng lệnh jobs để liệt kê các job thuộc phiên shell hiện tại:

    jobs

    Ví dụ kết quả có thể hiển thị như sau:

    [1]+ Stopped ping google.com

    Trong đó, [1] là job ID, dấu + cho biết đây là current job, còn trạng thái Stopped cho thấy tiến trình đang bị tạm dừng chứ chưa kết thúc.

    Bước 3: Đưa tiến trình về lại foreground bằng fg

    Sau khi đã nắm được job ID, bạn sử dụng lệnh fg để đưa job đó quay lại foreground và tiếp tục chạy trực tiếp trên terminal.

    Nếu muốn đưa một job cụ thể (ví dụ job số 1) ra foreground, bạn dùng cú pháp kèm job spec:

    fg %1

    Trong trường hợp chỉ có một job dừng và đó là current job, bạn có thể đơn giản gõ:

    fg
    Đưa tiến trình về lại foreground bằng fg
    Đưa tiến trình về lại foreground bằng fg

    Ngay sau khi chạy fg, tiến trình ping google.com sẽ tiếp tục chạy ở foreground, chiếm lại terminal để hiển thị kết quả và nhận tín hiệu từ bàn phím (như Ctrl + C để dừng hẳn).

    Sử dụng fg khi có nhiều tiến trình nền

    Khi làm việc trong một phiên shell có nhiều tiến trình chạy nền hoặc đang bị dừng, việc sử dụng fg cần kết hợp chặt chẽ với jobs và tham số job_spec để chọn đúng job đưa ra foreground, tránh tác động nhầm tiến trình.

    Bước 1: Bạn liệt kê toàn bộ job hiện có trong phiên shell để xem ID, trạng thái và lệnh tương ứng bằng lệnh:

    jobs

    Ví dụ kết quả:

    [1] Stopped ping 8.8.8.8
    
    [2] Stopped top

    Các dòng này cho biết bạn đang có ít nhất hai job dừng lại, lần lượt là job số 1 và job số 2.

    Bước 2: Chọn đúng job cần thao tác và đưa ra foreground bằng fg với job spec phù hợp.

    Nếu muốn đưa job số 2 (chạy lệnh top) về foreground, bạn dùng:

    fg %2

    Nếu muốn gọi current job (job được đánh dấu bằng +) mà không cần chỉ rõ ID, bạn chỉ cần chạy:

    fg

    Sau khi thực thi fg %2 hoặc fg, shell sẽ gắn terminal hiện tại cho job đó, giúp bạn theo dõi trực tiếp tiến trình đã chọn và tương tác với nó (ví dụ dừng bằng Ctrl + C hoặc thao tác trong top).

    Phân biệt lệnh fg, bg và jobs trong Linux

    Các lệnh fg, bg và jobs đều thuộc nhóm lệnh điều khiển job trong shell, cùng làm việc với các tiến trình được quản lý trong một phiên terminal (job control) nên thường được sử dụng kết hợp với nhau. Tuy nhiên, mỗi lệnh lại có vai trò khác nhau trong việc quan sát, đưa tiến trình ra foreground hoặc cho chạy nền, vì vậy cần so sánh rõ để chọn đúng lệnh cho từng tình huống thực tế. Dưới đây là bảng so sánh tổng quan để bạn dễ hình dung điểm khác biệt:

    LệnhChức năng chínhTác động tới jobVí dụ lệnhGhi chú sử dụng
    jobsHiển thị danh sách job trong phiên shell hiện tạiKhông thay đổi trạng thái jobjobsDùng để xem job ID, trạng thái (Running/Stopped/Done) trước khi dùng fg/bg.
    fgĐưa một job ra foreground để tiếp tục chạy gắn với terminalChuyển job được chọn sang foregroundfg %1Thường dùng sau Ctrl + Z hoặc khi muốn quay lại theo dõi trực tiếp job.
    bgTiếp tục job đang Stopped chạy ở backgroundĐưa job từ trạng thái Stopped sang Running (background)bg %1Dùng khi muốn job tiếp tục chạy nhưng vẫn giữ terminal rảnh cho lệnh khác.
    (kết hợp)Sử dụng chung để quản lý vòng đời job trong shellQuan sát → đưa ra foreground → cho chạy nềnjobs → fg %1 → bg %1Quy trình thường gặp: xem job, kéo ra foreground xử lý, rồi cho chạy nền tiếp.

    1. Lỗi “fg: no current job” khi không có job nào khả dụng

    Lỗi fg: no current job xuất hiện khi bạn gọi lệnh fg nhưng shell không có job nào đang được quản lý để đưa ra foreground. Trường hợp phổ biến là phiên shell hiện tại không có job ở trạng thái Stopped hay Running (background) hoặc tất cả job trước đó đã kết thúc (Done) và không còn trong danh sách quản lý.

    Khi gặp lỗi này, bạn nên kiểm tra lại danh sách job bằng lệnh jobs. Nếu jobs không hiển thị dòng nào hoặc chỉ còn các job đã hoàn thành và bị xoá khỏi bảng job, bạn cần khởi chạy tiến trình mới (hoặc tạo job mới bằng Ctrl + Z hoặc &) trước khi dùng lại fg.

    2. Lỗi job ID không tồn tại khi dùng fg %n

    Một lỗi khác thường gặp là gọi fg %n với một job ID không hợp lệ, dẫn đến thông báo kiểu “no such job” hoặc tương đương tuỳ shell. Lỗi này xảy ra khi job có ID n đã kết thúc, bị xoá khỏi bảng job hoặc đơn giản là chưa từng tồn tại trong phiên shell hiện tại.

    Để xử lý, bạn cần kiểm tra lại danh sách job bằng lệnh jobs. Sau đó xác định đúng job spec còn tồn tại, ví dụ %1, %2, %+ (current job), %- (previous job), rồi mới dùng fg %job_spec tương ứng. Việc luôn tham chiếu theo danh sách jobs giúp tránh gọi nhầm job ID không còn hiệu lực.

    Kiểm tra lại danh sách job bằng lệnh jobs
    Kiểm tra lại danh sách job bằng lệnh jobs

    3. Lưu ý về giới hạn job control

    Lệnh fg chỉ hoạt động trong môi trường shell có hỗ trợ job control. Do đó, có những trường hợp bạn không thể sử dụng fg như mong muốn.

    • Theo chuẩn POSIX, job control thường được bật trong các shell tương tác như bash, zsh. Nhưng trong một số bối cảnh (ví dụ shell không tương tác, script chạy non-interactive, hoặc job control bị tắt), fg có thể không khả dụng hoặc không có job để xử lý.
    • Khi chạy trong script, nhiều shell không hỗ trợ fg theo cách giống môi trường tương tác, vì script thường không quản lý job theo cơ chế job control. Trong trường hợp này, bạn nên dùng cơ chế quản lý tiến trình khác (PID, wait, systemd, supervisor…) thay vì phụ thuộc vào fg.
    • Nếu nghi ngờ job control bị vô hiệu hóa, bạn có thể kiểm tra cấu hình shell hoặc thử trong một phiên shell tương tác mới để đảm bảo Ctrl + Z, jobs, fg, bg hoạt động bình thường.

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

    Lệnh fg Linux có thể dùng trong ssh hoặc multiplexer (tmux/screen) như thế nào?

    Lệnh fg vẫn hoạt động bình thường qua phiên SSH hoặc bên trong tmux/screen miễn là shell bên trong hỗ trợ job control và bạn thao tác trong đúng pane/session chứa job đó. Tuy nhiên, mỗi phiên shell chỉ quản lý job của riêng nó, nên fg ở một pane hoặc một cửa sổ khác sẽ không điều khiển được job tạo trong phiên shell khác.

    Có thể dùng fg để khôi phục tiến trình sau khi đóng terminal không?

    Không, fg chỉ làm việc với các job còn được shell hiện tại quản lý. Khi terminal bị đóng, shell kết thúc và toàn bộ job gắn với shell đó cũng bị dừng hoặc chuyển sang orphan/zombie tùy trường hợp. Nếu muốn tiến trình sống ngay cả khi đóng terminal, nên dùng các cơ chế khác như nohup, disown, systemd service hoặc công cụ quản lý tiến trình chuyên dụng.

    Làm sao biết shell hiện tại có bật job control để dùng fg, bg, jobs?

    Bạn có thể kiểm tra nhanh bằng cách chạy một lệnh đơn giản rồi nhấn Ctrl + Z, sau đó dùng jobs để xem shell có liệt kê job hay không. Ngoài ra, trong bash, biến tùy chọn set -o monitor (hoặc set -m) cho biết job control đang được bật. Nếu job control tắt, các lệnh như fg, bg và jobs sẽ không hoạt động như mong đợi.

    Khi nắm vững cách dùng fg Linux kết hợp với jobs và bg, bạn có thể quản lý vòng đời tiến trình ngay trong một phiên terminal, dễ dàng chuyển đổi giữa foreground và background mà không cần mở thêm cửa sổ hay chạy lại lệnh từ đầu. Áp dụng đúng các mẫu lệnh, quy tắc job_spec và lưu ý về job control sẽ giúp bạn sử dụng fg một cách ổn định, tránh các lỗi và tối ưu hóa quy trình làm việc trên Linux shell.

    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

    Hướng dẫn sử dụng lệnh curl Linux để truyền dữ liệu và kiểm thử HTTP chi tiết
    Hướng dẫn sử dụng lệnh curl Linux để truyền dữ liệu và kiểm thử HTTP chi tiết

    Lệnh curl là một công cụ dòng lệnh linh hoạt và mạnh mẽ, được sử dụng để truyền dữ liệu đến hoặc từ một máy chủ. Công cụ này hỗ trợ nhiều giao thức khác nhau như HTTP, HTTPS, FTP, FTPS, SCP, SFTP,… và thường được dùng để kiểm thử API, tải file hoặc mô…

    26/03/2026

    Hướng dẫn cách gán output của Linux cho một biến nhanh chóng, chi tiết
    Hướng dẫn cách gán output của Linux cho một biến nhanh chóng, chi tiết

    Việc gán output của lệnh vào một biến giúp bạn lưu trữ kết quả đó trong biến và tái sử dụng linh hoạt trong suốt script, từ kiểm tra điều kiện, xử lý chuỗi cho đến log hoặc tự động hóa các tác vụ phức tạp. Trong bài viết này, mình sẽ hướng dẫn bạn…

    26/03/2026

    Cách dùng SFTP Linux để truyền file quan SSH an toàn và nhanh chóng
    Cách dùng SFTP Linux để truyền file quan SSH an toàn và nhanh chóng

    SFTP Linux là một giao thức chạy trên nền SSH, dùng để kết nối tới server và upload/download, quản lý file từ xa một cách an toàn hơn FTP thường. Khác với giao thức FTP truyền thống, SFTP hoạt động dựa trên nền tảng của giao thức SSH, giúp toàn bộ phiên làm việc đều…

    26/03/2026

    Lệnh ping trong Linux là gì? Cácg sử dụng lệnh ping để kiểm tra kết nối mạng và độ trễ
    Lệnh ping trong Linux là gì? Cácg sử dụng lệnh ping để kiểm tra kết nối mạng và độ trễ

    Lệnh ping Linux là công cụ dòng lệnh dùng để kiểm tra kết nối mạng và đo độ trễ giữa máy của bạn với một địa chỉ IP hoặc tên miền cụ thể thông qua các gói ICMP Echo Request/Echo Reply. Trong bài viết này, mình sẽ cùng bạn tìm hiểu cách dùng ping Linux…

    26/03/2026

    linux

    lenh

    text