Perintah screen Linux: menjaga dan menyambung kembali sesi terminal
screen adalah multiplexer terminal yang memungkinkan Anda membuat beberapa terminal virtual dalam satu terminal fisik, serta memutus sambungan sesi dan menghubungkannya kembali kemudian. Ini berguna ketika Anda perlu mempertahankan lingkungan kerja interaktif meskipun koneksi SSH Anda terputus. Alur dasarnya adalah: buat sesi → jalankan tugas → pisahkan dengan Ctrl+A kemudian d kecil → sambungkan kembali dengan screen -r.
Jika tujuan Anda hanya menjalankan perintah non-interaktif di latar belakang, nohup mungkin lebih sederhana. Di sisi lain, jika Anda perlu membuka kembali layar yang sedang berjalan untuk memasukkan perintah, screen atau tmux cocok.
Kapan screen digunakan?
GNU Screen memultiplikasikan satu terminal menjadi terminal virtual yang digunakan oleh beberapa proses. Program di setiap jendela terus berjalan bahkan ketika mereka tidak terlihat di layar atau seluruh sesi dilepas. Perilaku rinci dan perintah lengkap dapat ditemukan di manual screen(1) dari proyek GNU yang disajikan di man7.org.
- Saat menjalankan tugas jangka panjang seperti kompilasi, pemrosesan data, atau backup di server yang diakses melalui SSH
- Saat Anda perlu melepaskan layar tugas dan menyambung kembali dari komputer lain
- Saat mengoperasikan beberapa jendela terminal seperti shell, pemantauan log, dan editor dalam satu koneksi SSH
- Saat Anda perlu memeriksa layar program interaktif yang sedang berjalan nanti
Sesi screen tidak dapat bertahan terhadap reboot server, dan juga tidak secara otomatis restart ketika program gagal. Untuk layanan yang berkelanjutan, gunakan pengelola layanan seperti systemd.
Menginstal dan Memulai Sesi Pertama Anda
Menginstal screen
Pilih hanya blok untuk distribusi Anda; pemasangan memerlukan hak administrator. Dua baris berikut untuk Debian atau Ubuntu:
sudo apt update
sudo apt install screen
Untuk distribusi yang menggunakan DNF dan menyediakan paket pada repositori aktif:
sudo dnf install screen
Pada Rocky Linux, EPEL (Extra Packages for Enterprise Linux) yang sesuai versi mungkin diperlukan. Periksa paket screen Fedora/EPEL dan jangan mencampur repositori lintas versi. Perintah berikut untuk Arch Linux:
sudo pacman -S screen
Anda dapat memeriksa status instalasi dan versi sebagai berikut.
screen --version
Membuat Sesi Bernama
Menggunakan opsi -S untuk memberi nama sesi membuatnya lebih mudah untuk dibedakan antara beberapa tugas. Gunakan string pendek untuk nama yang mencerminkan tujuan tugas.
screen -S backup
Saat jendela Screen baru terbuka, jalankan perintah di dalamnya seperti biasa. Anda dapat memeriksa apakah shell saat ini berada di dalam Screen dengan menggunakan variabel lingkungan.
printf '%s\n' "$STY"
Memulai sesi dengan perintah
Anda juga dapat menentukan program untuk dijalankan saat membuat sesi. ./backup.sh adalah contoh skrip yang harus sudah ada pada direktori saat ini, dapat dieksekusi, dan memiliki interpreter yang sesuai; Screen tidak membuatnya.
screen -S backup ./backup.sh
Jika program yang ditentukan selesai dan tidak ada jendela lain dalam sesi, sesi Screen juga dapat berakhir. Jika Anda perlu memeriksa hasil di layar setelah pekerjaan selesai, lebih nyaman untuk terlebih dahulu membuat sesi shell dan kemudian menjalankan perintah di dalamnya.
Pintasan Screen yang sering digunakan
Perintah Screen pada dasarnya bekerja dalam metode dua langkah: tekan Ctrl+A dan kemudian tombol berikutnya. Ctrl+A, d di bawah ini berarti bahwa Anda melepas Ctrl+A sebelum menekan d kecil, bukan menekan kedua tombol secara bersamaan.
Huruf besar dan kecil berbeda: c membuat jendela, sedangkan C membersihkan layar. Gunakan Shift untuk A dan H besar; konfigurasi dapat mengubah ikatan tombol.
| Tombol pintasan | Fungsi | Deskripsi |
|---|---|---|
Ctrl+A, d |
Lepas sesi | Keluar dari terminal saat ini sambil menjaga program tetap berjalan. |
Ctrl+A, c |
Buat jendela baru | Buat jendela shell baru di sesi saat ini. |
Ctrl+A, n |
Jendela berikutnya | Pindah ke jendela terminal virtual berikutnya. |
Ctrl+A, p |
Jendela sebelumnya | Pindah ke jendela terminal virtual sebelumnya. |
Ctrl+A, " |
Daftar jendela | Pilih jendela untuk dipindahkan dari daftar. |
Ctrl+A, A |
Ganti nama jendela | Beri jendela saat ini judul yang mudah dikenali. |
Ctrl+A, [ |
Mode Salin/Gulir | Telusuri output sebelumnya atau salin teks. |
Ctrl+A, H |
Beralih pencatatan | Mulai atau hentikan pencatatan output jendela saat ini ke file log. |
Ctrl+A, k |
Tutup jendela saat ini | Setelah konfirmasi, hapus jendela virtual saat ini. |
Ctrl+A, ? |
Bantuan | Menampilkan daftar pembindian tombol saat ini. |
Jika Anda perlu mengirim Ctrl+A ke program itu sendiri, gunakan Ctrl+A diikuti dengan a kecil. Ini berbeda dari A besar untuk mengganti nama jendela. Tombol pintas bisa berbeda tergantung pada konfigurasi .screenrc.
Lepas dan sambungkan kembali sesi
Lepas sambil tetap menjaga pekerjaan
Tekan Ctrl+A diikuti oleh d kecil dalam sesi Screen untuk melepaskan sesi. Setelah dilepas, program dapat terus berjalan meskipun SSH ditutup selama proses dan server tetap berjalan dan kebijakan sistem tidak menghentikannya.
Bahkan jika koneksi terminal hilang secara tiba-tiba, jika pengaturan autodetach default diaktifkan, sesi akan otomatis dilepaskan.
Memeriksa daftar sesi
screen -ls
Output menunjukkan pengenal sesi dan status seperti Detached dan Attached. Jika ada beberapa sesi, Anda perlu menentukan nama atau pengenal lengkap untuk terhubung.
Jika nama tidak unik, gunakan pengenal lengkap yang ditampilkan oleh screen -ls, bukan PID dari contoh lain.
Menyambungkan kembali ke sesi yang telah dilepas
screen -r backup
Jika sebuah sesi terhubung ke terminal lain, periksa daftar terlebih dahulu. Gunakan formulir berikut hanya jika Anda yakin ingin memutuskan koneksi sebelumnya dan menghubungkannya ke terminal saat ini.
screen -d -r backup
-d -r dapat mengganggu layar kerja normal pengguna lain, jadi berhati-hatilah dalam akun yang dibagikan atau lingkungan kolaboratif.
Menggunakan beberapa jendela dalam satu sesi
Membuat dan menamai jendela
Setelah membuat jendela baru dengan Ctrl+A, c, Anda dapat menamainya dengan Ctrl+A, A. Misalnya, Anda dapat menggunakan jendela pertama untuk menjalankan tugas, jendela kedua untuk memeriksa log, dan jendela ketiga untuk memantau status sistem.
Berpindah Antara Jendela
Anda dapat berpindah ke jendela berikutnya atau sebelumnya menggunakan Ctrl+A, n dan Ctrl+A, p. Jika ada banyak jendela, lebih cepat membuka daftar dengan Ctrl+A, " dan memilih jendela yang diinginkan.
Menutup Jendela dan Sesi dengan Benar
Menjalankan exit di shell saat ini akan menutup jendela tersebut. Ketika jendela terakhir ditutup, sesi Screen juga akan berakhir.
exit
Jika Anda hanya ingin melepaskan sesi, sebaiknya gunakan Ctrl+A, d daripada exit. Menutup paksa jendela dengan program yang sedang berjalan dapat merusak hasil kerja mereka.
Menggunakan Riwayat Gulir dan Log
Menelusuri Output Sebelumnya
Tekan Ctrl+A, [ untuk masuk ke mode salin/gulir. Gunakan tombol panah untuk menelusuri dan Ctrl+B atau Ctrl+F untuk berpindah satu layar ke belakang atau ke depan; tekan Esc untuk keluar. Jumlah baris yang disimpan dipengaruhi oleh pengaturan dan opsi -h.
screen -h 10000 -S analysis
Merekam Output Jendela ke File
Tekan Ctrl+A, H untuk mengaktifkan atau menonaktifkan pencatatan output jendela saat ini. Nama berkas log bawaan biasanya screenlog.N, dengan N sebagai nomor jendela (misalnya screenlog.0), dan Anda juga dapat mengaktifkan pencatatan otomatis saat memulai sesi baru.
screen -L -Logfile backup-screen.log -S backup
Log mencatat keluaran sejak diaktifkan, bukan secara otomatis menyalin riwayat sebelumnya, dan menambahkan keluaran ke berkas yang sudah ada. Penulisan dapat tertunda; periksa ruang dan izin berkas.
Log mungkin mencakup kata sandi, token, dan informasi pribadi yang ditampilkan di layar. Periksa lokasi penyimpanan dan izin file, dan untuk tugas yang berjalan lama, buat kebijakan retensi terpisah untuk mencegah log tumbuh tanpa batas.
Situasi Masalah dan Tindakan Pencegahan Keamanan
Saat sesi tetap dalam keadaan Terhubung
Segera setelah terjadi putusnya jaringan, sebuah sesi mungkin tetap Attached. Pertama, konfirmasikan apakah sesi tersebut benar-benar digunakan di terminal lain, kemudian lepaskan tampilan sebelumnya dengan screen -d -r session_name dan sambungkan ke terminal saat ini.
Entri sesi Dead atau yang tidak dapat diakses dapat dibersihkan dengan screen -wipe setelah dipastikan dengan cermat bahwa tidak ada proses yang sedang berjalan.
Izin akses untuk sesi dari akun yang sama
Sesi screen mengikuti izin dari akun pengguna sistem operasi. Jika beberapa orang menggunakan akun yang sama, orang lain dapat kembali terhubung ke sesi, jadi hindari berbagi akun dan pisahkan kunci SSH dari hak istimewa akun. Penting juga untuk tidak meninggalkan sesi dengan shell administratif atau screen sensitif saat meninggalkan tempat.
Kunci SSH berbeda tidak mengisolasi orang yang memakai akun sistem yang sama. Jika tugas berakhir saat logout, periksa kebijakan sistem: KillUserProcesses=yes pada systemd-logind dapat menghentikan proses dalam lingkup sesi. Minta administrator memeriksa konfigurasi; autodetach tidak menggantikan kebijakan tersebut.
Perbandingan antara screen, nohup, tmux, systemd
| Alat | Tugas yang sesuai | Fitur utama |
|---|---|---|
screen |
Tugas terminal interaktif yang membutuhkan sambungan ulang | Mendukung pemutusan sesi, penyambungan kembali, dan banyak jendela. |
tmux |
Tugas interaktif dan pemisahan layar kompleks | Fitur kaya untuk mengelola jendela dan panel, dengan opsi kustomisasi pengguna yang luas. |
nohup |
Tugas batch sederhana yang tidak interaktif | Mengabaikan SIGHUP tetapi tidak mengembalikan layar terminal. |
systemd |
Layanan yang harus selalu berjalan | Anda dapat mengonfigurasi tautan boot, restart saat gagal, dependensi, dan manajemen log. |
Untuk membandingkan tugas non-interaktif, lihat Cara menggunakan perintah nohup.
Pertanyaan yang Sering Diajukan
Apakah tugas akan tetap berjalan meskipun koneksi SSH terputus?
Jika pemisahan otomatis Screen berfungsi dengan baik dan server terus berjalan, program di dalam sesi juga akan tetap terjaga. Namun, hal ini tidak mencegah server melakukan reboot, kesalahan pada proses itu sendiri, atau penghentian oleh administrator.
Apa yang harus saya lakukan jika beberapa sesi muncul saat menggunakan screen -r?
Setelah memeriksa daftar dengan screen -ls, tentukan nama sesi atau identifier lengkap seperti screen -r backup. Membuat sesi dengan nama yang berarti dapat mengurangi kesalahan dalam memilih.
Apa yang harus saya lakukan jika Ctrl+A bertabrakan dengan pintasan sebuah program?
Anda dapat mengirim karakter Ctrl+A ke program dengan menekan a kecil setelah Ctrl+A. Untuk mengubah tombol perintah Screen itu sendiri, Anda dapat menggunakan opsi -e atau mengonfigurasinya di .screenrc, tetapi Anda juga perlu menyesuaikan dokumentasi dan pintasan yang dibagikan di tim.
Apakah sesi Screen dapat dipulihkan setelah reboot?
Tidak. Screen hanya mempertahankan proses dan terminal virtual pada sistem yang berjalan; itu tidak secara otomatis memulihkan sesi dan proses setelah reboot. Jika Anda memerlukan startup otomatis setelah reboot, konfigurasikan layanan dengan systemd atau gunakan penjadwal yang sesuai untuk tugas tersebut.
Ringkasan
Penggunaan dasar adalah membuat sesi dengan screen -S name, melepaskan dengan Ctrl+A, d, dan menyambung kembali dengan screen -r name. Dengan menggunakan beberapa jendela dan fungsi pencatatan, Anda dapat melanjutkan pekerjaan interaktif secara sistematis bahkan melalui koneksi jarak jauh yang tidak stabil.
Namun, Screen bukanlah alat pemantauan layanan. Program yang memerlukan integrasi reboot atau pemulihan otomatis harus dijalankan dengan pengelola layanan, dan Screen harus digunakan untuk tugas terminal yang memerlukan seseorang untuk menyambung kembali dan mengoperasikan.




