GNU/Linux >> Belajar Linux >  >> Linux

Reptyr – Memindahkan Proses yang Berjalan Dari Satu Terminal Ke Terminal Lain Tanpa Menutupnya

Misalnya, Anda menjalankan proses di server jauh melalui sesi SSH dari sistem lokal Anda. Anda tidak tahu bahwa pekerjaan jarak jauh akan memakan waktu lama untuk diselesaikan. Anda hanya ingin meninggalkan pekerjaan yang sedang berjalan di server jarak jauh itu sendiri, dan menutup sesi SSH tanpa menghentikan pekerjaan jarak jauh, dan kemudian melampirkannya kembali ke sesi SSH nanti atau di hari berikutnya. Tentu saja, Anda dapat memulai pekerjaan di screen/tmux sesi, dan lepaskan dari sesi layar tanpa keluar dari pekerjaan jarak jauh, dan keluar dari sesi SSH. Tetapi jika Anda lupa memulai sesi layar sejak awal, tidak ada cara untuk memasang kembali ke proses yang sedang berjalan nanti. Setelah Anda menutup sesi SSH, proses yang berjalan juga akan ditutup pada sistem jarak jauh. Jadi, apa yang akan Anda lakukan dalam kasus seperti itu? Tidak masalah. Di sinilah Reptir perintah datang membantu.

Reptir adalah alat baris perintah untuk memindahkan proses yang berjalan antara ptys. Mulai saja proses yang membutuhkan waktu lama untuk diselesaikan di sistem jarak jauh Anda melalui sesi SSH dari Desktop atau Laptop lokal Anda, dan tutup sesi SSH, pulang, dan pasang kembali proses yang sedang berjalan pada hari berikutnya. Selain itu, Anda dapat dengan mudah memigrasi/memindahkan proses yang berjalan lama dari satu Terminal ke Terminal lain secara instan tanpa harus menghentikannya. Kedengarannya berguna? Tentu saja!

Unduh - eBuku Gratis:"6 Alat Baris Perintah Linux yang Berguna untuk Administrator Sistem"

Tutorial singkat ini menjelaskan cara memindahkan proses yang sedang berjalan ke terminal baru menggunakan perintah Reptyr.

Instal Reptyr di sistem jarak jauh Anda

Catatan:  Sistem jarak jauh Anda harus memiliki tmux atau layar diinstal untuk memindahkan proses yang sedang berjalan.

Di Arch Linux dan turunannya, jalankan:

$ sudo pacman -S reptyr

Dalam sistem berbasis DEB, jalankan perintah berikut untuk menginstal Reptyr:

$ sudo apt-get install reptyr

Untuk menginstal screen atau tmux, jalankan:

$ sudo apt-get install tmux screen

Pada RHEL / CentOS / Scieintific Linux / Fedora, reptyr tidak tersedia di repositori. Jadi, Anda dapat mengkompilasi dan menginstalnya seperti yang ditunjukkan di bawah ini.

Instal prasyarat berikut:

$ sudo yum install git tmux screen
$ sudo yum groupinstall 'development tools'

Git clone reptyr repositori dengan perintah sebagai pengguna root:

$ git clone https://github.com/nelhage/reptyr.git

Buka direktori reptyr:

$ cd reptyr/

Jalankan perintah berikut untuk mengompilasi dan menginstalnya.

$ make
$ sudo make install

Saya mengkompilasi dan menginstal Reptyr dari sumber dalam edisi server CentOS 7 64 bit, dan itu bekerja dengan cukup baik seperti yang dijelaskan di atas.

Memindahkan Proses yang Berjalan Dari Satu Terminal Ke Terminal Lain Tanpa Menutupnya Menggunakan Reptyr

Biasanya, kami terhubung ke server jarak jauh dari sistem lokal mana pun melalui SSH seperti yang ditunjukkan di bawah ini.

# ssh [email protected]_Of_remote_system

Setelah Anda terhubung ke sistem jarak jauh, mulailah proses yang berjalan lama. Sebagai contoh, saya akan mengunduh ISO desktop Ubuntu 16.04 menggunakan wget perintah.

# wget http://cdimage.ubuntu.com/daily-live/current/xenial-desktop-amd64.iso

Contoh keluaran:

Seperti yang Anda lihat pada tangkapan layar di atas, total ukuran unduhan adalah 1,5 GB, dan akan memakan waktu lebih dari 90 menit untuk menyelesaikannya.

Saya tidak ingin menunggu lebih lama lagi, dan saya juga tidak ingin keluar dari pekerjaan jarak jauh.

Jadi, yang akan saya lakukan adalah memulai layar atau tmux sesi di Terminal baru, gunakan reptyr utilitas untuk mengambil proses yang berjalan di dalam layar atau sesi tmux. Terakhir, saya akan menghentikan kedua sesi ssh, dan menyambungkan kembali ke proses yang sedang berjalan kapan pun saya mau.

Mari kita buka jendela Terminal baru atau tab baru, dan mulai layar atau sesi tmux dengan mengetik screen atau tmux di Terminal:

# screen

atau

# tmux

Seperti yang Anda lihat pada tangkapan layar di atas, sesi layar telah dimulai dan sedang berjalan.

Sekarang, mari kita cari proses yang sedang berjalan dari Terminal baru dengan menggunakan perintah berikut:

# ps -a

Contoh keluaran:

 PID TTY TIME CMD
 2320 pts/0 00:00:11 wget
 2343 pts/1 00:00:00 screen
 2358 pts/2 00:00:00 ps

Catat PID untuk wget proses, dan lampirkan proses yang berjalan di dalam sesi layar menggunakan perintah:

# reptyr 2320

Selesai! Seperti yang Anda lihat pada tangkapan layar di atas, proses wget telah dipindahkan (dimigrasikan) dari Terminal lama ke jendela Terminal baru (yang berjalan dengan sesi layar).

Setelah Anda memindahkan proses yang sedang berjalan dari Terminal asli, proses tersebut akan segera ditutup, dan mulai melanjutkan proses yang kami tinggalkan di Terminal baru.

Sekarang, Anda dapat melepaskan atau menutup terminal dengan aman dan pekerjaan akan terus berjalan di server jauh Anda.

Untuk melepaskan dari layar atau sesi tmux, tekan CTRL+A+D .

Setelah Anda keluar dari sesi layar, pesan berikut akan muncul.

[detached from 2344.pts-1.server1]

Untuk memasang kembali proses yang sedang berjalan, SSH ke sistem jarak jauh Anda:

# ssh [email protected]

Di sini. 192.168.1.150 adalah alamat IP server jarak jauh saya.

Dan jalankan perintah berikut jika Anda menggunakan sesi layar:

# screen -Dr

Untuk sesi tmux, jalankan:

# tmux attach

Voila! Proses yang berjalan telah disambungkan kembali, dan Anda akan melihat di sana bahwa proses tersebut masih berjalan.

Seperti yang Anda lihat pada tangkapan layar di atas, pekerjaan wget tidak terganggu atau dihentikan, dan masih berjalan. Ini akan terus berjalan selama sistem jarak jauh Anda aktif dan berjalan.

Ringkasan

Singkatnya, Reptyr adalah alat yang sangat penting dan berguna untuk administrator sistem Linux di tingkat mana pun. Jika Anda muak dengan proses yang membutuhkan waktu sangat lama untuk diselesaikan, Reptyr pasti akan sangat membantu. Cukup buka jendela Terminal baru, SSH ke server jarak jauh Anda, temukan ID proses yang sedang berjalan, dan pindahkan dengan aman ke dalam layar atau sesi tmux, dan keluar dari sesi SSH. Untuk detail lebih lanjut, lihat link terlampir di akhir tutorial ini.

Bacaan yang disarankan:

  • Mulai Otomatis Sesi Tmux Pada Sistem Jarak Jauh Saat Masuk Melalui SSH
  • Cara Menampilkan Informasi Proses Menggunakan Procs Di Linux
  • Tmate - Bagikan Terminal Anda Secara Instan Kepada Siapa Saja Dari Mana Saja
  • Cara Mengubah Jenis Dan Ukuran Font Konsol Linux
  • Cara Mengunci Sesi Konsol Virtual di Linux
  • Cara Beralih Antar TTY Tanpa Menggunakan Tombol Fungsi Di Linux

Itu saja untuk saat ini. Kalau begitu, saya meninggalkan Anda untuk berkenalan dengan alat yang berguna ini. Cobalah, dan Anda tidak akan kecewa.

Tautan referensi:

  • Reptyr GitHub
  • Panduan reptyr

Linux
  1. Salin struktur folder (tanpa file) dari satu lokasi ke lokasi lain

  2. Bagaimana cara memindahkan (dan menimpa) semua file dari satu direktori ke direktori lain?

  3. Apakah ada cara sederhana untuk memindahkan/menyalin volume logis dari satu grup volume ke grup volume lainnya? (LVM2)

  1. Menjalankan skrip dari direktori lain

  2. Bagaimana cara melepaskan sesi ssh tanpa mematikan proses yang sedang berjalan?

  3. Bagaimana cara melampirkan terminal ke proses yang terpisah?

  1. Bagaimana Cara Melihat Output Dari Proses yang Berjalan Di Sesi Bash Lain?

  2. Bagaimana Cara Menyalin Pengaturan Dari Satu Mesin Ke Mesin Lainnya?

  3. Salin N-baris Terakhir Dari Satu File Ke File Lain?