Menyaring proses yang sedang berjalan

24

Kadang-kadang saya lupa menjalankan program di bawah sesi layar dan tidak bisa menghentikannya di tengah, dan saya tahu itu akan memakan waktu lama.

Apakah ada cara untuk menyaring proses yang sudah berjalan tanpa memulai kembali?

LiraNuna
sumber

Jawaban:

12

Menemukan jawaban ini di serverfault dari earl :

Namun, untuk masalah Anda yang sebenarnya, ada hal lain yang bisa Anda coba: setelah meluncurkan pekerjaan Anda dari terminal, latar belakang dengan mengetik ctrl- zdan kemudian bg.
Setelah itu, lepaskan pekerjaan dari itu orang tua shell - di bash: disown -h %<jobid>. Setelah itu, Anda dapat menutup terminal dengan aman dan pekerjaan akan terus berjalan.

Dan ini dari pertanyaan yang sama dari Rob Wells :

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

warren
sumber
Apakah ada cara untuk mendapatkan pekerjaan di latar depan lagi? 'layar' lalu 'fg 1' tidak berfungsi untuk saya
Putnik
@ Patnik - apakah Anda melakukan langkah-langkah lain seperti yang dijelaskan?
warren
7

Menemukan duplikat Di ServerFault .

Solusi lain yang tidak ditemukan dalam posting itu adalah menggunakan retty setelah memulai sesi layar.

LiraNuna
sumber
5
Saya menghapus jawaban saya; Anda dapat (dan harus) menerima jawaban Anda sendiri setelah 2 hari. Jangan ragu mengutip bagian-bagian yang relevan di sini, karena "duplikat" lintas-situs sebenarnya bukan duplikat karena pemirsa yang berbeda.
Jeff Atwood
4
Tetapi Anda tidak mengutip bagian yang relevan, sesuai saran Jeff. =)
David mengatakan mengembalikan Monica
5

Lihatlah reptyr , yang melakukan hal itu. Halaman github memiliki semua informasi.

reptyr - Alat untuk "re-ptying"

program.

reptyr adalah utilitas untuk mengambil program yang sedang berjalan dan melampirkannya ke terminal baru. Memulai proses yang berjalan lebih lama dari ssh, tetapi harus pergi dan tidak ingin mengganggu? Mulai saja layar, gunakan reptyr untuk meraihnya, lalu matikan sesi ssh dan langsung menuju rumah.

PEMAKAIAN

PID reptyr

"reptyr PID" akan mengambil proses dengan id PID dan melampirkannya ke terminal Anda saat ini.

Setelah melampirkan, proses akan mengambil input dari dan menulis output ke terminal baru, termasuk ^ C dan ^ Z. (Sayangnya, jika Anda latar belakang, Anda masih harus menjalankan "bg" atau "fg" di terminal lama. Ini kemungkinan tidak mungkin untuk diperbaiki dengan cara yang wajar tanpa menambal shell Anda.)

Dave Johnston
sumber