Bagaimana cara mengirim pekerjaan ke latar belakang tanpa menghentikannya?

10

Ctrl + z mengirimkan pekerjaan saat ini ke latar belakang, tetapi menghentikannya.

Dan bagaimana cara melanjutkan pekerjaan yang berhenti?

Jader Dias
sumber

Jawaban:

17

Anda dapat menjalankan "bg" untuk menjalankannya di latar belakang.

"fg" memindahkannya ke latar depan

Perhatikan bahwa bg dan fg mengambil pekerjaan # alih-alih PID, jadi jika Anda menjalankan banyak pekerjaan sekaligus, gunakan perintah "pekerjaan" untuk mendapatkan nomor pekerjaan.

Matt Simmons
sumber
8

Anda juga dapat memulai program sebagai pekerjaan latar belakang dengan "&" di baris perintah.

misalnya

myprogram &

perhatikan bahwa output (baik stdout dan stderr) masih akan pergi ke tty saat ini, jadi umumnya ide yang baik untuk mengarahkan ulang ke / dev / null atau ke file log, seperti:

myprogram> ~ / program.log 2> & 1 &

dalam salah satu contoh, ini adalah pekerjaan latar belakang seperti yang lain, jadi Anda masih dapat membawanya kembali ke latar depan dengan 'fg' (tetapi jika Anda telah mengarahkan keluaran Anda tidak akan melihat banyak).

cas
sumber
5

Dalam bash, memasukkan "bg" menempatkan pekerjaan ke latar belakang sampai memblokir membutuhkan input. Ini akan terus menghasilkan ke STDERR dan STDOUT yang mungkin tidak membantu. Anda dapat memasukkan "fg" untuk membawa pekerjaan kembali ke latar depan.

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

Jadi, itu memulai pekerjaan salin panjang dan menangguhkannya, memulai pekerjaan salin panjang kedua dan menangguhkannya, kemudian menempatkan pekerjaan salin pertama ke latar belakang dan membiarkannya berjalan, diikuti oleh pekerjaan salin pertama yang keluar. Lalu saya menempatkan pekerjaan salin terakhir ke latar depan dan membiarkannya selesai.

Evan Anderson
sumber
bg 1dan fg 1tidak bekerja untuk saya, tapi bg %1dan fg %1lakukan.
Alexej Magura
4

nohup task.sh &

Berjalan di latar belakang, output menuju ke nohup.out di direktori saat ini. Terus berjalan saat Anda keluar.

Craig
sumber
2

Pilihan lain adalah utilitas layar yang sangat baik , yang dapat digunakan untuk menjalankan banyak proses pada saat yang sama, tanpa harus membuka terminal. Ini juga memungkinkan interaktivitas yang jauh lebih mudah daripada bg dan fg.

Jerami
sumber