pengembangan-web-mp.com

Apakah mungkin untuk melepaskan suatu proses dari terminalnya? (Atau, "Saya seharusnya menggunakan layar!")

Kemungkinan Duplikat:
Bisakah saya Nohup/menyaring proses yang sudah dimulai?

Di Unix (khususnya, Linux), saya telah memulai pekerjaan dalam sesi ssh-> bash biasa. Saya ingin segera meninggalkan pekerjaan, tetapi sekarang saya menyadari bahwa pekerjaan itu akan memakan waktu beberapa jam.

Jika saya baru saja memulai pekerjaan ini di layar, saya bisa melepaskan dan pulang. Tetapi saya tidak melakukannya.

Apakah ada cara untuk memutuskan pekerjaan dari sesi ssh, sehingga saya dapat mematikan komputer saya, (menjatuhkan koneksi TCP dan mematikan sesi ssh), namun apakah program tetap berjalan?

Saya tidak peduli dengan hasilnya - pada kenyataannya, saya mengarahkan stdout ke file. Saya hanya ingin menjalankannya sampai selesai.

146
mike

Anda dapat menekan ctrl-z untuk menghentikan proses dan kemudian menjalankan bg untuk membuatnya berjalan di latar belakang.

Anda dapat menampilkan daftar nomor semua proses yang dilatar belakangi dengan cara ini dengan jobs.

Maka Anda dapat menjalankan disown %1 (ganti 1 dengan nomor proses yang dihasilkan oleh jobs) untuk melepaskan proses dari terminal.

Terlepas dari namanya, proses masih akan Anda miliki setelah menjalankan disown, itu hanya akan terlepas dari terminal tempat Anda memulainya.

Jawaban ini memiliki informasi lebih lanjut

201
David Pashley

Saya percaya perintah yang Anda cari adalah "ditolak"

21
Seigel
 Gunakan 
 Perintah Nohup & 
 
 Sangat indah: 
 Root @ index: ~ # Nohup/usr/bin/curl localhost/begemot.php & 
 [1] 894 
 Root @ index: ~ # Nohup: mengabaikan input dan menambahkan output ke `Nohup.out '
 
 Dan keluar dari terminal ini, tugas dilanjutkan untuk dilanjutkan ... 
13

Dari dalam bash Shell Anda:

control+z

Kemudian, untuk terus menjalankan pekerjaan di latar belakang:

bg

Kemudian, Anda dapat mengetik jobs untuk melihat apakah proses Anda masih berjalan.

9
Joe

Saat menggunakan reptyr di dalam layar, Anda dapat memindahkan proses (atau hasilnya) ke layar.

8
mab

Saya telah mengambil pengaturan screen untuk menjalankan otomatis ketika saya terhubung ke host yang saya gunakan secara teratur, untuk menghindari masalah ini.

http://tlug.dnho.net/?q=node/239 adalah salah satu cara untuk melakukannya, meskipun ada variasi lain di luar sana.

Telah menyelamatkan saya sekali atau dua kali ketika saya mengalami pemutusan yang tidak terduga di pertengahan sesi dan sebaliknya saya lupa memulai screen sebelum saya memulai sesuatu yang bertele-tele.

7
David Spillett

Menggunakan crtl-Z lalu bg atau menggunakan & saat menjalankan perintah tidak dapat diandalkan pada 100%. Ini akan berfungsi dalam banyak kasus tetapi mungkin tidak berfungsi seperti yang diharapkan dalam beberapa kasus (penggunaan I/O, ...).
Layar adalah solusi yang dapat diandalkan.

6
radius

Jika Anda menggunakan bash, Anda dapat mencurigai dengan kontrol-Z dan latar belakang dengan bg.

Kontrol pekerjaan (dari man bash)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

help bg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the Shell's notion of the current
    job is used.

pekerjaan bantuan

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.
5
Zoredache

Jika Anda tahu sebelumnya bahwa Anda ingin menjalankannya di latar belakang, perintah unix at adalah opsi yang baik. Itu mulai perintah di latar belakang pada waktu yang dijadwalkan, seperti pekerjaan cron yang tidak berulang. Tergantung pada distribusi Anda, Anda mungkin perlu menginstalnya dan memulai daemon atd.

4
Sylvain