GNU/Linux >> Belajar Linux >  >> Linux

Menjaga proses linux tetap berjalan setelah saya logout

Solusi 1:

Metode terbaik adalah memulai proses di terminal multiplexer. Atau Anda dapat membuat proses tidak menerima sinyal HUP.

Multiplexer terminal menyediakan terminal "virtual" yang berjalan independen dari terminal "nyata" (sebenarnya semua terminal saat ini adalah "virtual" tetapi itu adalah topik lain untuk hari lain). Terminal virtual akan tetap berjalan meskipun terminal asli Anda ditutup dengan sesi ssh Anda.

Semua proses yang dimulai dari terminal virtual akan tetap berjalan dengan terminal virtual tersebut. Saat Anda menyambung kembali ke server, Anda dapat menyambung kembali ke terminal virtual dan semuanya akan seolah-olah tidak terjadi apa-apa, selain waktu yang telah berlalu.

Dua multiplekser terminal yang populer adalah layar dan tmux.

Layar memiliki kurva belajar yang curam. Berikut adalah tutorial yang bagus dengan diagram yang menjelaskan konsepnya:http://www.ibm.com/developerworks/aix/library/au-gnu_screen/

Sinyal HUP (atau SIGHUP) dikirim oleh terminal ke semua proses anaknya saat terminal ditutup. Tindakan umum setelah menerima SIGHUP adalah mengakhiri. Jadi, ketika sesi ssh Anda terputus, semua proses Anda akan berhenti. Untuk menghindari hal ini, Anda dapat membuat proses Anda tidak menerima SIGHUP.

Dua metode mudah untuk melakukannya adalah nohup dan disown .

Untuk informasi selengkapnya tentang cara nohup dan disown bekerja membaca pertanyaan dan jawaban ini:https://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and

Catatan:meskipun proses akan tetap berjalan, Anda tidak dapat lagi berinteraksi dengannya karena tidak lagi terhubung ke terminal mana pun. Metode ini terutama berguna untuk proses batch yang berjalan lama, setelah dimulai, tidak lagi memerlukan masukan pengguna.

Solusi 2:

Ada beberapa cara untuk melakukannya, tetapi yang menurut saya paling berguna adalah menggunakan Layar GNU.

Setelah Anda ssh masuk, jalankan screen . Ini akan memulai shell lain yang berjalan di dalam layar. Jalankan perintah Anda, lalu lakukan Ctrl -a d .

Ini akan "memutuskan" Anda dari sesi layar. Pada titik ini, Anda dapat keluar atau melakukan hal lain yang Anda inginkan.

Saat Anda ingin menyambung kembali ke sesi layar, jalankan saja screen -RD dari prompt shell (sebagai pengguna yang sama yang membuat sesi).

Solusi 3:

Di bash , disown kata kunci sangat cocok untuk ini. Pertama, jalankan proses Anda di latar belakang (gunakan & , atau ^Z lalu ketik bg ):

$ wget --quiet http://server/some_big_file.zip &
[1] 1156

Dengan mengetikkan jobs Anda dapat melihat bahwa proses tersebut masih dimiliki oleh shell:

$ jobs
[1]+  Running  wget

Jika Anda keluar pada saat ini, tugas latar belakang juga akan terbunuh. Namun, jika Anda menjalankan disown , bash melepaskan pekerjaan dan memungkinkannya untuk terus berjalan:

$ disown

Anda dapat mengonfirmasi ini:

$ jobs
$ logout

Anda bahkan dapat menggabungkan & dan disown pada baris yang sama, seperti:

$ wget --quiet http://server/some_big_file.zip & disown
$ logout

Ini lebih baik daripada menjalankan nohup menurut saya karena tidak meninggalkan nohup.out file berserakan di seluruh sistem file Anda. Juga, nohup harus dijalankan sebelum Anda menjalankan perintah — disown dapat digunakan jika Anda hanya memutuskan nanti bahwa Anda ingin membuat latar belakang dan melepaskan tugas.

Solusi 4:

Alat nohup, tersedia di sebagian besar kotak Linux akan melakukan ini.

Solusi 5:

Untuk lebih teliti, saya akan menunjukkan tmux, yang memiliki ide dasar yang sama dengan screen:

tmux dimaksudkan untuk menjadi alternatif modern, berlisensi BSD untuk program seperti layar GNU. Fitur utama meliputi:

  • Antarmuka perintah yang andal, konsisten, terdokumentasi dengan baik, dan mudah dibuat skrip.
  • Jendela dapat dibagi secara horizontal dan vertikal menjadi beberapa panel.
  • Panel dapat dipindahkan dan diubah ukurannya dengan bebas, atau disusun menjadi tata letak prasetel.
  • Dukungan untuk terminal UTF-8 dan 256 warna.
  • Salin dan tempel dengan beberapa buffer.
  • Menu interaktif untuk memilih jendela, sesi, atau klien.
  • Ubah jendela saat ini dengan mencari teks di target.
  • Penguncian terminal, secara manual atau setelah waktu habis.
  • Basis kode berlisensi BSD yang bersih, mudah diperluas, sedang dalam pengembangan aktif.

Namun, ini jauh lebih mudah untuk ditelusuri di Google.


Linux
  1. Bagaimana Cara Memulai Ulang (atau Mengatur Ulang) Proses yang Berjalan Di Linux?

  2. Bagaimana Cara Membunuh Proses yang Berjalan pada Port Tertentu di Linux?

  3. Bagaimana cara menghentikan proses layar di linux?

  1. Bagaimana cara mematikan proses yang berjalan pada port tertentu di Linux?

  2. Proses Linux di latar belakang - Berhenti bekerja?

  3. Bagaimana saya tahu saya menjalankan di dalam layar linux atau tidak?

  1. Kiat Linux untuk menggunakan Layar GNU

  2. Linux – Apakah Proses Yang Memiliki Terminal Pengendali, Atau Sesi Yang Memiliki Terminal Pengendali?

  3. di konsol linux, cara TIDAK membungkus keluaran