Jika Anda ^ Z dari suatu proses, itu akan "berhenti". Bagaimana Anda kembali?

83

Saya tidak sengaja "menghentikan" telnetproses saya . Sekarang saya tidak bisa "beralih kembali" ke dalamnya, saya juga tidak bisa membunuhnya (itu tidak akan merespons kill 92929, di mana 92929 adalah processid.)

Jadi, pertanyaan saya adalah, jika Anda memiliki proses yang berhenti pada baris perintah linux, bagaimana Anda beralih kembali ke dalamnya, atau membunuhnya, tanpa harus menggunakan kill -9?

bobobobo
sumber

Jawaban:

92

Cara termudah adalah menjalankannya fguntuk membawanya ke latar depan:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

Atau, Anda dapat menjalankan bgagar terus di latar belakang:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

Jika Anda baru saja menekan Ctrl Z, maka untuk membawa pekerjaan kembali jalankan fgtanpa argumen.

terdon
sumber
Terima kasih!! Saya kira ini adalah persamaan Alt + Tab. Apakah Anda tahu apa yang terjadi segera setelah saya melakukannya fg telnet? Dikatakan Terminated, mungkin b / c dari killcmd saya sebelumnya .
bobobobo
@obobobo mungkin, ya. Lagi pula, fgtidak perlu ada argumen. Jika Anda baru saja menekan ^Z, jalankan fgdi terminal yang sama dan itu akan mengembalikan pekerjaan pertama.
terdon
48

Anda dapat menggunakan jobsdaftar proses yang ditangguhkan. Ambil contohnya. Mulai dengan suatu proses:

$ sleep 3000  

Kemudian Anda menunda proses:

^Z
[1]+  Stopped                 sleep 3000

Anda dapat membuat daftar proses:

$ jobs
[1]+  Stopped                 sleep 3000

dan membawanya kembali ke latar depan:

$ fg %1
sleep 3000

The %1berkorespondensi ke [1]terdaftar dengan jobsperintah.

Luis
sumber
19

Anda harus dapat memulai kembali proses yang ditangguhkan dengan menggunakan killperintah untuk mengirimkan proses sinyal LANJUTKAN, dari baris perintah, dengan demikian:

kill -CONT 92929
Geeb
sumber
1
Ini akan menyebabkannya untuk melanjutkan operasi, tetapi tidak dibawa ke latar depan.
bahamat
1
@ Bahat Ya, cukup benar. Satu masih perlu fgdi dalam terminal asli. Saya suka program -STOP dan -CONT gui untuk menghemat sumber daya, tetapi mereka tetap berjalan di latar belakang.
Geeb
Dalam hal sleepini akan killproses yang bukan apa yang Anda inginkan ..;)
Timo