Kamis, 12 Desember 2024

Cara Mengelola Proses di Linux SSH Tanpa Kehilangan Koneksi

Dalam dunia administrasi server, pengelolaan proses di Linux menjadi salah satu keterampilan penting yang harus dikuasai. Seringkali, administrator mengakses server menggunakan SSH untuk menjalankan proses panjang seperti backup data, pemrosesan file besar, atau menjalankan aplikasi. Namun, jika koneksi SSH terputus, proses yang sedang berjalan bisa berhenti, menyebabkan kehilangan waktu dan tenaga.

Ketika bekerja di server, proses yang berjalan di background sangat penting. Misalnya, menjalankan skrip untuk analisis data atau melakukan migrasi database memerlukan waktu lama. Jika sesi SSH terputus secara tiba-tiba, proses tersebut akan dihentikan, menyebabkan gangguan besar, terutama pada server produksi. Manajemen proses yang baik memastikan bahwa tugas tetap berjalan meskipun ada gangguan pada koneksi.

Jika Anda sudah menjalankan proses di SSH tanpa memulai sesi `screen` atau `tmux`, Anda masih bisa menyelamatkan proses tersebut dengan langkah berikut:

  1. Jika proses sudah terlanjur berjalan, tekan `Ctrl + Z` untuk menghentikannya sementara. Ini akan mengembalikan Anda ke shell.
  2. Pindahkan proses ke background dengan perintah:
    # bg
  3. Agar proses tetap berjalan meskipun keluar dari sesi SSH, gunakan perintah:
    # disown   

Untuk selanjutnya, alat seperti `screen` atau `tmux` dapat digunakan. Kedua alat ini memungkinkan Anda membuat sesi terminal yang dapat dilepaskan dan disambungkan kembali kapan saja.

1. Menggunakan `screen`

  • Instal `screen` (jika belum terinstal):
    # sudo apt install screen
  • Mulai sesi baru:
    # screen
  • Jalankan perintah di dalam sesi `screen`.
  • Untuk melepaskan sesi, tekan `Ctrl + A, D`.
  • Untuk menyambungkan kembali sesi, gunakan:
    # screen -r

2. Menggunakan `tmux`

  • Instal `tmux`:
    # sudo apt install tmux
  • Mulai sesi baru:
    # tmux
  • Lepaskan sesi dengan `Ctrl + B, D`.
  • Sambungkan kembali dengan:
    # tmux attach

Jika Anda lupa menjalankan proses di dalam `screen` atau `tmux`, Anda dapat menggunakan `reptyr` untuk menghubungkan kembali proses ke sesi baru.

Instal `reptyr`

  1. Di Ubuntu/Debian:
    # sudo apt update
    # sudo apt install reptyr
  2. Di CentOS/RHEL:
    # sudo yum install epel-release
    # sudo yum install reptyr

Langkah Menghubungkan Proses:

  1. Temukan PID (Process ID) dari proses yang berjalan:
    # ps -ef | grep <nama_proses>
  2. Jalankan `screen` atau `tmux`, lalu gunakan `reptyr` untuk menghubungkan proses:
    # reptyr <PID>

Catatan:

Jika proses tidak dapat dihubungkan karena batasan kernel, ubah pengaturan `ptrace_scope` sementara:

# echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Untuk menghindari masalah serupa, salah satunya bisa menggunakan `nohup` untuk menjalankan perintah tanpa gangguan, jalankan perintah dengan `nohup` agar tetap berjalan meskipun sesi SSH terputus:

# nohup <command> &

0 komentar:

Posting Komentar