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

Tutorial langkah demi langkah ini menjelaskan apa itu aplikasi Reptyr dan bagaimana cara memindahkan proses yang sedang berjalan ke terminal baru menggunakan perintah Reptyr di sistem operasi Linux dan Unix.
Contents
PendahuluanApa itu Reptyr?Instal Reptyr Di Sistem Linux Jarak Jauh AndaInstal Reptyr Dari SumberPindahkan Proses yang Berjalan Dari Satu Terminal Ke Lain Tanpa Menutupnya Menggunakan ReptyrContoh 1:Langkah 1 – SSH Ke Sistem Jarak JauhLangkah 2 – Mulai Proses yang Berjalan LamaLangkah 3 – Latar Belakang ProsesLangkah 4 – Singkirkan ProsesLangkah 5 – Mulai Tmux Atau Sesi LayarLangkah 6 – Lampirkan Ke Latar Belakang ProsesLangkah 7 – Tutup Koneksi SSHLangkah 8 – Pasang Kembali Ke TmuxContoh 2:RingkasanPengenalan

Misalnya, Anda menjalankan tugas di server jauh melalui sesi SSH dari sistem lokal Anda.

Saat Anda memulai tugas, Anda tidak tahu bahwa remote pekerjaan 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 sesi screenatau tmux, dan melepaskan 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 situasi seperti itu? Jangan khawatir! Di sinilah perintah Reptyr masuk help.
Apa itu Reptyr?

Reptyr adalah alat baris perintah untuk memindahkan proses yang sedang berjalan antara ptys.

Menggunakan Reptyr, kita dapat dengan mudah bermigrasi atau memindahkan proses yang berjalan lama dari satu Terminal ke Terminal lain secara instan tanpa menghentikannya . Reptyr menggunakan panggilan sistem ptrace untuk melampirkan ke program target.

Hanya memulai proses yang berjalan lama di sistem jarak jauh Anda melalui sesi SSH dari mesin lokal Anda, dan tutup sesi SSH, pulang, dan pasang kembali proses yang sedang berjalan di berikutnya day.

Reptyr adalah aplikasi baris perintah opensource. Ini mendukung Linux dan FreeBSD.
Install Reptyr Di Sistem Linux Jarak Jauh Anda

Pertama-tama, pastikan Anda telah menginstal tmux atau layar di sistem jarak jauh Anda untuk memindahkan proses yang sedang berjalan dari terminal lokal ke terminal jarak jauh. Jika Anda belum menginstal tmux/screen, lihat tautan berikut. Contoh Perintah

Tmux Untuk Mengelola Beberapa Sesi Terminal Di Linux

Contoh Perintah Layar Untuk Mengelola Beberapa Sesi Terminal

Selanjutnya, Anda harus menginstal aplikasi Reptyr di sistem REMOTE Anda.

Untuk menginstal Reptyr di Arch Linux dan turunannya seperti Endeavour OS dan Manjaro Linux, jalankan:

$ sudo pacman -S reptyr

Di Debian, Ubuntu, Linux Mint, Pop!_OS, jalankan perintah berikut untuk menginstal Reptyr:

$ sudo apt install reptyr

On Fedora, RHEL, CentOS , AlmaLinux, dan Rocky Linux, reptyr dapat diinstal dari repositori EPEL.

Untuk menginstal repositori EPEL di sistem berbasis RHEL, jalankan perintah berikut:

$ sudo dnf config-manager --set-enabled powertools
$ sudo dnf install epel-release

mengaktifkan repositori EPEL, jalankan perintah berikut untuk menginstal Reptyr:

$ sudo dnf install reptyr

Install Reptyr Dari Sumber

Instal alat pengembangan yang diperlukan seperti yang dijelaskan dalam tautan berikut.

Cara Menginstal Alat Pengembangan Di Linux

Git clone reptyr repositori dengan perintah sebagai root atau sudo user:

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

Buka reptyr directory:

$ cd reptyr/

Jalankan perintah berikut untuk mengkompilasi dan menginstalnya.

$ make
$ sudo make install

I mengkompilasi dan menginstal Reptyr dari sumber dalam edisi server CentOS 7 64 bit, dan itu bekerja cukup baik seperti dijelaskan di atas.
Move A Running Proses Dari Satu Terminal Ke Terminal Lain Tanpa Menutupnya Menggunakan Reptyr

Pastikan Anda menginstal yang berikut ini di sistem Linux jarak jauh Anda.
Reptyr.Tmux atau Layar.Contoh 1:

Untuk tujuan demonstrasi, saya akan menggunakan sistem berikut.
Sistem jarak jauh – Debian 11 Bullseye ( username – ostechnix, IP – 192.168.1.20)Langkah 1 – SSH Ke Sistem Jarak Jauh Biasanya, kita terhubung ke server jarak jauh dari sistem lokal mana pun melalui SSH seperti yang ditunjukkan di bawah ini.

ssh remote_username@IP_of_remote_system

Saya akan memasukkan SSH ke sistem jarak jauh saya (AlmaLinux 8) dari sistem lokal saya (Debian 11).

$ ssh [email protected]

Di sini, “ostechnix” adalah nama pengguna dan nama pengguna sistem jarak jauh “192.168.1.20” adalah alamat IP sistem jarak jauh. Ganti kedua nilai ini dengan milik Anda sendiri.
Langkah 2 – Mulai Proses yang Berjalan Lama
Setelah terhubung ke sistem jarak jauh, mulai proses yang berjalan lama. Saya akan memulai perintah “atas”.

$ top

Berikut adalah perintah “atas” yang berjalan di AlmaLinux saya yang terhubung melalui SSH. Sebut saja Terminal 1.

Seperti yang Anda lihat pada output di atas, saya menjalankan perintah “top” di mesin virtual Debian 11 melalui SSH dari sistem lokal saya. Perintah atas akan terus berjalan sampai kita menghentikannya secara manual dengan menekan CTRL+C.

Yang akan kita lakukan sekarang adalah memindahkan proses perintah teratas di dalam sesi tmux atau layar sistem jarak jauh kita (yaitu Debian 11) menggunakan Reptyr. Dan akhirnya kami menutup sesi SSH di sistem lokal kami. Selama transisi, perintah teratas akan tetap berjalan tanpa gangguan.
Langkah 3 – Latar Belakang Process
Now tekan CTRL+Z untuk meletakkan proses di latar belakang. Dan kemudian jalankan bg untuk melanjutkan proses di background.

$ bg

Verifikasi pekerjaan latar belakang yang berjalan dengan perintah jobs:

$ jobs -l

Di sini, flag -l akan mencantumkan PID dari pekerjaan latar belakang.

Anda akan melihat output berikut.

 [1]+ 1972 Berhenti (sinyal) top

Catat PID. Kami akan membutuhkannya nanti untuk melampirkan proses ke terminal jarak jauh. Di sini, PID dari perintah teratas adalah 1972.
Step 4 – Disown The Process
Disown proses yang berjalan dari induk saat ini menggunakan perintah:

$ disown top

Sample output:

-bash: warning: menghapus pekerjaan yang dihentikan 1 dengan grup proses 1972

Sekarang pekerjaan -l perintah tidak akan menampilkan pekerjaan lagi, tetapi perintah ps -a will.

$ ps -a PID TTY TIME CMD 1972 pts/1 00:00:00 top 2061 pts/1 00:00:00 ps

Langkah 5 – Mulai Tmux Atau Screen Session
Mulai sesi Tmux atau Screen baru di terminal yang sama atau jendela terminal baru. Untuk memudahkan pemahaman, saya akan memanggil sesi tmux baru sebagai Terminal 2.

$ tmux

Harap dicatat bahwa Anda harus memulai tmux/screen multiplexer di konsol jarak jauh(Debian 11), bukan di konsol sistem lokal kami.
Step 6 – Attach To The Background Process
Ingat kita meletakkan perintah teratas di latar belakang pada Langkah 3. PID dari proses latar belakang adalah 1972. Jika Anda tidak ingat PID, jalankan ps -a command.

Sekarang, lampirkan ke proses latar belakang dengan Reptyr menggunakan perintah:

$ reptyr 1972

Itu saja. Kami telah berhasil memindahkan proses latar belakang di dalam sesi tmux.

Anda sekarang dapat dengan aman melepaskan dari sesi Tmux dengan menekan CTRL+B dan D. Ini hanya akan menutup sesi tmux, tetapi tidak proses (perintah atas) yang berjalan di dalam it.

Kita kembali ke Terminal 1. Verifikasi daftar panel Tmux yang aktif menggunakan perintah:

$ tmux list-panes -F '#{pane_active} #{pane_pid}' 1 2072

Di sini,
pane_active akan menampilkan 1 jika pane.pane_pid aktif adalah PID dari proses pertama di panel.Langkah 7 – Tutup Koneksi SSH
Anda sekarang dapat menutup sesi SSH. Proses (Perintah teratas dalam kasus kami) akan terus berjalan di dalam sesi Tmux dari sistem jarak jauh Anda selama sistem jarak jauh Anda aktif. Menutup koneksi SSH tidak akan menghentikan proses.
Langkah 8 – Pasang Kembali Ke Tmux
Untuk menyambungkan kembali ke proses, cukup SSH ke sistem jarak jauh Anda:

$ ssh remote_user@remote_ip

Dan jalankan perintah berikut untuk melampirkan sesi tmux di mana proses teratas masih berjalan .

$ tmux attach

Anda sekarang akan melihat proses yang berjalan di dalam sesi Tmux.

Dengan cara ini Anda dapat memulai sejumlah panel Tmux dan memindahkan proses yang berjalan di dalam ke setiap panel.

Biarkan saya tunjukkan contoh lain.
Contoh 2:

Dalam contoh ini, Saya menggunakan cara memindahkan proses yang sedang berjalan (Misalnya wget) di server CentOS.

Step 1 – SSH ke Remote system.

Step 2 – Setelah Anda terhubung ke sistem jarak jauh, mulailah proses yang berjalan lama. Sebagai contoh, saya akan mengunduh ISO desktop Ubuntu 16.04 dengan wget command.

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

Contoh output:

Seperti yang Anda lihat di atas tangkapan layar, 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 juga saya tidak ingin keluar dari pekerjaan jarak jauh.

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

Langkah 3 – Mari kita buka jendela terminal baru atau tab baru, dan mulai layar atau sesi tmux dengan mengetik screen atau tmux di terminal:

 # screen

or

# tmux

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

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

# ps -a

Sample output :

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

Catat PID untuk proses wget, dan lampirkan proses yang sedang berjalan di dalamnya 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 (yaitu terminal jarak jauh), itu akan segera ditutup di terminal lokal, dan mulai melanjutkan di mana kami tinggalkan di terminal baru.

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

Untuk melepaskan dari screen session, tekan CTRL+A dan D. Jika sesi Tmux, tekan CTRL+B dan D.

Setelah Anda melepaskan dari sesi layar, Anda akan melihat output berikut.

[terlepas dari 2344.pts-1.server1]

Step 6 – 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.

Langkah 7 – Dan jalankan perintah berikut jika Anda menggunakan screen session:

# screen -Dr

Untuk sesi tmux, jalankan:

# tmux attach

Voila! Proses yang berjalan telah disambungkan kembali, dan Anda akan melihat di sana bahwa proses pengunduhan 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.
Summary

Kesimpulannya, Reptyr adalah alat yang sangat sangat penting dan berguna untuk pengguna Linux dan administrator sistem dari 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 tautan terlampir di akhir tutorial ini.

Baca yang Disarankan:
Autostart Tmux Session Pada Sistem Jarak Jauh Saat Masuk Melalui SSHCara Menampilkan Informasi Proses Menggunakan Procs Di LinuxTmate – Bagikan Terminal Anda Secara Instan Kepada Siapa Saja Dari Mana SajaCara Mengubah Konsol Linux Jenis Dan Ukuran FontCara Mengunci Sesi Konsol Virtual Di LinuxCara 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.

Resources:
Reptyr Panduan GitHubReptyr

Scroll to Top