Biarkan skrip bash tetap berjalan di terminal jarak jauh saat tidak masuk?

14

Saya memiliki skrip bash yang membutuhkan beberapa jam untuk dijalankan. Ketika sedang berjalan, saya ingin melakukan hal-hal lain, yang mungkin melibatkan logout atau putuskan sambungan dari internet (skrip saya menjalankan tes jaringan pada berbagai komputer).

Saya mengerti bahwa ada perintah yang akan memungkinkan saya untuk menjalankan tes saya dari terminal jarak jauh dan keluar dari terminal saat itu berjalan. Adakah yang tahu apa perintah ini?

Ritwik Bose
sumber

Jawaban:

17

Perintah yang Anda cari adalah nohup.

Ada juga screen, yaitu ketika Anda ingin membiarkan sesuatu berjalan tetapi kembali dan pasang kembali secara interaktif nanti.

nohuplebih sederhana jika perintah tidak mengharapkan input pengguna setelah peluncuran, dan screenlebih baik jika Anda ingin dapat menjalankan program secara interaktif.

Justin Smith
sumber
Saya melihat nohup sekarang dan tampaknya ada masalah dengan input dan output yang mungkin menyebabkan skrip menutup. Saya juga melihat sesuatu tentang layar, yang menurut saya seperti yang pernah saya baca sebelumnya. Apakah Anda tahu cara menggunakan salah satu dari ini?
Ritwik Bose
1
nohup adalah untuk saat skrip tidak mengharapkan input pengguna - ia menyimpan semua output ke file. Layar adalah ketika Anda ingin membiarkan sesuatu berjalan tetapi kembali dan pasang kembali secara interaktif nanti. nohup lebih sederhana jika perintah tidak mengharapkan input pengguna setelah peluncuran, dan layar lebih baik jika Anda ingin dapat menjalankan program secara interaktif.
Justin Smith
Ah menemukannya. Untuk layar, itu ctrl-A d untuk melepaskan dan -r + pid untuk memasang kembali.
Ritwik Bose
Jawaban yang bagus. Anda harus menambahkan komentar layar ke jawaban Anda sehingga lebih menonjol.
DaveParillo
1

Saya gunakan nohupuntuk ini. Dalam kasus saya, saya memiliki skrip python bernama action.py saya menjalankan skrip pada server jauh dengan nohup python action.py & saya kemudian akan menutup terminal. Nanti ketika sudah selesai berjalan, Anda dapat melihat semua output dari proses nohup.outyang akan dibuat di direktori yang sama dengan action.py. Jika file sudah ada output lebih lanjut akan ditambahkan ke sana.

Satu-satunya halangan adalah tidak tahu kapan script telah berjalan dengan sendirinya, jadi dalam kasus saya, saya harus menembak saya email setelah selesai. Semoga ini bisa membantu seseorang!

Bryan J
sumber
0

Apa yang terjadi jika Anda lupa menambahkan nohupPerintah di awal Perintah Anda?

Katakanlah Anda telah menjalankan Perintah Panjang berikut:

Awal Output dari Perintah Panjang

Ini disebut sebagai ls -Ral /yang seharusnya mencantumkan semua File dan semua Folder, termasuk yang Tersembunyi, dengan Format Panjang, secara rekursif dimulai dari Root Folder. Mungkin butuh beberapa saat.

Cukup tekan ctrl+ Z.

Menghentikan Perintah Panjang

Bagaimana Anda mendapatkannya kembali?

Perintah untuk mengembalikannya ke Foreground adalah fg.

Membawa Perintah kembali


sumber