Perintah bg Bash di Linux: lanjutkan pekerjaan di latar belakang

Perintah bg pada Bash melanjutkan pekerjaan yang ditangguhkan agar berjalan di latar belakang. Gunakan bg ketika ingin melanjutkan pekerjaan dalam shell yang sama sambil tetap memakai prompt terminal untuk perintah lain.

Bg tidak memberikan kendali terminal ke pekerjaan tersebut. Program yang memerlukan masukan dari terminal dapat berhenti lagi setelah dilanjutkan di latar belakang. Periksa nomor dan status pekerjaan dengan jobs pada shell Bash yang sama sebelum memilih sasaran.

Sintaks dan prasyarat kendali pekerjaan

bg [%NOMOR_PEKERJAAN]

NOMOR_PEKERJAAN adalah penanda yang diganti nomor dari hasil jobs. Sebagai contoh, %1 berarti pekerjaan nomor 1 pada shell ini, bukan process ID (PID) 1. Satu pekerjaan dapat memuat beberapa proses dalam sebuah pipeline.

Gunakan terminal Bash interaktif yang mendukung kendali pekerjaan. Periksa perintah bawaan dengan type bg dan bantuan lokal dengan help bg. Kendali pekerjaan biasanya tidak aktif secara bawaan pada Bash noninteraktif; menaruh bg di skrip tidak otomatis menyediakan kendali terminal atau pekerjaan dari shell induknya.

Siapkan pekerjaan uji yang ditangguhkan

Gunakan program sederhana milik sendiri yang boleh ditangguhkan. Untuk latihan, jalankan sleep 60 tanpa tanda & pada terminal Bash. Perintah ini menunggu sehingga prompt belum tersedia sampai sleep selesai atau ditangguhkan.

Sebelum waktu tunggunya selesai, tekan Ctrl+Z. Pada pengaturan terminal biasa, tombol ini meminta penangguhan pekerjaan latar depan dan mengembalikan prompt Bash. Penangguhan bukan penghentian permanen: pekerjaan masih ada dan dapat dilanjutkan. Jika tombol tersebut ditangani berbeda oleh terminal, periksa konfigurasi terminal dan bantuan sistem, lalu pastikan status pekerjaan sebelum melanjutkan.

jobs -s

Jobs -s menampilkan hanya pekerjaan yang ditangguhkan. Hasil yang diharapkan adalah baris Stopped untuk sleep uji. Jika hasil kosong, jangan langsung menjalankan bg %1; sleep mungkin sudah selesai, penangguhan belum terjadi, atau Anda berada di shell lain.

Lanjutkan pekerjaan yang sudah diperiksa

bg %1

Ganti %1 dengan nomor pekerjaan sleep yang baru diperiksa. Perintah ini melanjutkan pekerjaan di latar belakang dan mengembalikan prompt. Bash biasanya menampilkan informasi pekerjaan yang dilanjutkan; keluaran persisnya dapat berbeda menurut shell dan keadaan pekerjaan.

jobs -l

Periksa bahwa pekerjaan yang benar berstatus Running dan baca PID yang ditampilkan dengan opsi -l. Running adalah status pelacakan pekerjaan pada shell, bukan bukti bahwa proses menggunakan CPU terus-menerus. Sleep yang menunggu tetap dapat tercatat sebagai pekerjaan berjalan.

Jika sleep sudah selesai ketika Anda memeriksa, Bash dapat menampilkan pemberitahuan Done, lalu menghapus entri tersebut. Keberhasilan bg berarti permintaan melanjutkan diterima, bukan bahwa program akan tetap berjalan atau menyelesaikan tugasnya tanpa kesalahan.

Urutan pemeriksaan, bg, dan pemeriksaan ulang

Urutan berikut dipakai setelah pekerjaan sleep 60 ditangguhkan dengan Ctrl+Z. Jika latihan sebelumnya sudah melanjutkan pekerjaan, mulai ulang latihan dengan pekerjaan uji baru yang ditangguhkan terlebih dahulu. Ganti setiap %1 sesuai nomor sebenarnya, lalu jalankan satu baris setelah membaca hasil sebelumnya.

jobs
bg %1
jobs

Cuplikan status ilustratif sebelum dan sesudah melanjutkan pekerjaan:

[1]+  Stopped  sleep 60
[1]+  Running  sleep 60 &

Dua baris tersebut memperlihatkan perubahan status, bukan transkrip lengkap semua keluaran jobs dan bg. Nomor pekerjaan, spasi, serta pesan yang tampil dapat berbeda. Tanda + menandai pekerjaan saat ini menurut pilihan shell; tanda & pada baris Running menunjukkan pelaksanaan di latar belakang.

Jika ingin menunggu pekerjaan uji, biarkan sleep menyelesaikan waktu tunggunya lalu jalankan jobs lagi. Bila perlu mengakhirinya lebih cepat, periksa kembali nomor pekerjaan dan perintahnya, lalu gunakan kill %1 hanya jika nomor itu masih merujuk sleep uji Anda. Perintah bawaan kill dan pengiriman sinyal menjelaskan SIGTERM serta pemeriksaan sasaran. Jangan memakai nomor pekerjaan dari catatan lama tanpa pemeriksaan baru.

Penentu pekerjaan pada Bash

Bentuk Sasaran
%N Pekerjaan nomor N dalam shell saat ini.
%+ Pekerjaan yang dianggap sebagai pekerjaan saat ini oleh shell.
%- Pekerjaan sebelumnya menurut pelacakan shell.
Tanpa argumen Bg menggunakan pekerjaan saat ini menurut pilihan Bash.

Penentu pekerjaan merupakan cara memilih sasaran, bukan opsi pengubah prioritas. Untuk pekerjaan tertentu, nomor eksplisit yang baru diperiksa biasanya lebih jelas daripada mengandalkan pilihan pekerjaan saat ini. Simbol + dan - dapat berubah ketika pekerjaan dimulai, ditangguhkan, dilanjutkan, atau selesai.

Mengapa bg gagal atau pekerjaan berhenti lagi?

Bg dapat gagal ketika kendali pekerjaan tidak aktif, penentu pekerjaan tidak ditemukan, atau pekerjaan yang dipilih dimulai tanpa kendali pekerjaan. Periksa pesan kesalahan dan jobs pada shell yang sama. Bg tidak mengambil alih sembarang proses dari terminal lain hanya karena PID-nya diketahui.

Ketika pekerjaan latar belakang mencoba membaca terminal pengendalinya pada Linux, mekanisme kendali pekerjaan dapat mengirim SIGTTIN dan menangguhkannya lagi. Untuk program yang memang perlu menerima masukan terminal, pertimbangkan fg %1 dengan nomor yang sudah diperiksa agar pekerjaan kembali ke latar depan. Jangan mengulang bg terus-menerus tanpa memahami kebutuhan masukan program.

Keluaran program latar belakang juga dapat tetap muncul di terminal dan bercampur dengan prompt. Pemisahan masukan atau keluaran perlu direncanakan ketika memulai program; bg sendiri tidak memindahkan keluarannya ke berkas. Melanjutkan di latar belakang juga tidak menjamin pekerjaan bertahan ketika terminal atau shell ditutup.

Definisi bg, penentu pekerjaan, dan interaksi terminal dijelaskan pada bagian bg di SHELL BUILTIN COMMANDS serta JOB CONTROL dalam manual GNU Bash. Pilih prosedur sesuai versi Bash dan lingkungan terminal yang digunakan.

FAQ

Apakah menambahkan & pada perintah sama dengan bg?

Tanda & memulai perintah di latar belakang sejak awal. Bg digunakan untuk melanjutkan pekerjaan shell yang sudah ditangguhkan di latar belakang; Anda memilih pekerjaan yang sudah ada pada tabel shell tersebut.

Apakah Ctrl+Z sama dengan menghentikan program secara permanen?

Tidak. Pada kendali pekerjaan terminal biasa, Ctrl+Z menangguhkan pekerjaan latar depan. Pekerjaan masih ada; bg melanjutkannya di latar belakang dan fg dapat mengembalikannya ke latar depan.