Artikel:Screen multiuser
GNU screen, atau singkatnya disebut screen, adalah
utilitas berbasis konsol (bukan GUI) untuk melakukan multipleksing
terminal. Screen mengizinkan kita menjalankan beberapa terminal
virtual (umumnya menjalankan shell interaktif) di bawah satu terminal
"fisik". Jadi, kita menjalankan screen lalu di "bawah"-nya dapat
membuka lagi window-window terminal, dapat berpindah dari satu window
ke window lain, dapat mengatur jalannya proses di dalam masing-masing
window, dapat merangkai tampilan window secara vertikal atau
horizontal, dsb. Singkatnya, bisa dibilang bahwa screen adalah window
manager berbasis teks.
Kegunaan utama screen adalah untuk menyimpan sesi terminal kita, agar
jika kita logout atau terputus dari terminal "fisik",
terminal-terminal yang kita buka di bawah screen masih dapat terus
berjalan. Amat bermanfaat jika kita ingin menjaga sesi terminal di
server remote, tapi koneksi internet kita sendiri buruk atau tidak
24-jam. Kegunaan lainnya misalnya untuk dapat menjalankan banyak
terminal sekaligus, agar bisa mengunci terminal, agar bisa menyimpan
output terminal atau melakukan kopi paste tanpa mouse, dll.
Screen juga memiliki fitur multiuser, agar lebih dari satu pemakai
dapat berbagi sesi terminal secara bersama-sama. Artikel ini akan
membahas fitur tersebut, dan beberapa aplikasi yang mungkin dibuat
dengannya.
Sekilas dasar screen
Seingat saya, Infolinux pernah menyajikan tulisan tentang program
screen ini, jadi saya tidak akan membahas dasarnya secara panjang
lebar lagi di sini. Namun berikut ini dasar-dasar penggunaan screen:
Untuk mulai menjalankan screen, dari terminal/shell ketik:
% screen
screen akan menampilkan pesan selamat datang. Tekan Enter atau
spasi. Maka Anda akan kembali ke prompt shell. Ini adalah sesi
terminal baru di bawah screen. Anda dapat lanjut memakai shell,
menjalankan program command-line lain, dll.
Bedanya setelah pakai screen apa? Anda dapat membuka lebih dari 1
terminal. Tekan Ctrl-a diikuti c. Maka Anda membuat 1 terminal baru
lagi dan diberi prompt shell baru. Terminal Anda sebelumnya masih
tetap ada. Tekan Ctrl-a diikuti n untuk kembali ke terminal
kesatu. Tekan lagi Ctrl-a, n untuk berpindah ke terminal
kedua. Berguna misalnya jika terminal 1 sedang sibuk menjalankan
perintah dan Anda belum mendapat prompt shell lagi, maka Anda dapat
berpindah dulu ke terminal 2, dst.
Jika Anda sedang login remote ke server dan tiba-tiba koneksi putus,
jangan khawatir, screen akan otomatis menyelamatkan (autodetach)
sesi-sesi terminal di bawah screen (yang saat ini jumlahnya 2)
tersebut.
Sewaktu Anda login lagi ke server remote, ketik:
% screen -r
maka sesi terminal Anda akan direstore ke tampilan! "Ajaib," begitu
mungkin seru Anda jika baru pertama kali menyaksikan ini.
Silakan melihat-lihat manpage screen untuk berbagai opsi yang
tersedia.
Screen multiuser
Screen memiliki fitur multiuser, namun defaultnya fitur ini
dimatikan. Untuk menghidupkannya, di file ~/.screenrc milik Anda,
tambahkan baris:
multiuser on
Program screen juga mungkin perlu diset dulu permission-nya agar dapat
berjalan dengan mode multiuser. Di Debian atau Ubuntu, caranya:
# chmod u+s /usr/bin/screen
# chmod 755 /var/run/screen
Barulah kini jalankan screen baru (bukan hasil reattach dengan opsi
-r). Aktifnya mode multiuser atau tidak dapat dilihat dengan perintah
screen -ls:
% screen -ls
There is a screen on:
8175.pts-6.builder (Multi, attached)
1 Socket in /var/run/screen/S-steven.
Apa yang berbeda di screen dengan mode multiuser aktif? Sebuah screen
yang multiuser dapat di-attach oleh lebih dari satu user pada saat
yang bersamaan (termasuk oleh user Unix lain). Pada screen singleuser,
screen hanya dapat di-attach oleh user yang sama, dan begitu di-attach
di satu terminal, di terminal yang lain jika sedang di-attach otomatis
akan ter-detach.
Memberi akses read-only pada user lain
Screen mengizinkan kita mengatur akses user lain terhadap
window-window dalam screen milik kita dan bahkan untuk setiap
perintah. Anda dapat melihat detilnya di manpage screen, perintah
acladd, aclchg, dan acldel. Namun untuk sederhananya, mari kita
mencoba memberi akses read only pada user lain.
Cobalah login sebagai user Unix lain, misalnya Budi, lalu attach-lah
screen milik Steven:
% screen -r steven/
Mula-mula screen akan menolak, karena Steven belum memberikan
permission apa-apa kepada budi. Dari screen steven, ketikkan Ctrl-a
diikuti : (titik dua), lalu ketik:
aclchg budi -w
-w berarti kita tidak memberi Budi akses write.
Kini cobalah kembali, sebagai Budi, masuk ke screen milik Steven:
% screen -r steven/
maka tampilan screen milik Steven akan muncul di terminal Budi. Jika
Steven mengetikkan sesuatu di screennya, maka tampilan Budi akan
otomatis terupdate. Namun budi tidak dapat mengetikkan perintah screen
apa-apa (Ctrl-a ...) untuk mengubah atau merecoki sesi terminal
Steven. Efeknya adalah, Budi dapat menonton namun tidak dapat ikut
berpartisipasi.
Setting seperti ini cocok untuk aplikasi demo. Misalnya, kita sebagai
guru/pelatih/pendemo memperlihatkan cara melakukan sesuatu di terminal
dan satu atau lebih murid/pengamat, baik yang berada secara fisik di
ruangan yang sama, ataupun jauh terpisah di belahan dunia lain dan
login remote ke server yang sama, dapat menyaksikannya secara "siaran
langsung".
Aplikasi lain misalnya ujian (dalam konteks sekolah atau wawancara
kerja). Orang yang diuji membuka sesi screen multiuser lalu
mengizinkan pengujinya masuk. Penguji attach ke screen milik si teruji
lalu mengamati yang terjadi sambil memberi penilaian.
Memberi akses read-write pada user lain
Selain hanya akses read (menonton), tentu kita juga dapat mengizinkan
user lain akses read-write. Dari screen milik Steven, coba ketikkan
Ctrl-a, : lalu
aclchg budi +rwx "#?"
Kini Budi akan dapat masuk ke screen dan juga mengetikkan perintah ke
dalam screen. Apa yang diketik oleh Steven maupun Budi akan sama-sama
dapat dirasakan efeknya oleh Budi dan Steven.
Si pemilik screen (Steven) dapat membatasi akses terhadap window atau
perintah tertentu saja. Misalnya, agar Budi hanya memiliki akses
terhadap window ke-0 saja:
Ctrl-a, :, acldel budi
Ctrl-a, :, aclchg budi +rwx "0,?"
Akses read-write bagi user lain dapat dipakai untuk chatting sederhana
misalnya. Untuk ini, di screen Steven:
Ctrl-a, S
cat >/dev/null
di screen Budi:
Ctrl-a, S
Ctrl-a, [Tab]
Ctrl-a, c
cat >/dev/null
di screen Steven:
Ctrl-A, [Tab]
Ctrl-a, n
Ctrl-a, n
Ctrl-a, [Tab]
Perintah Ctrl-a, S untuk melakukan split menjadi 2 region sehingga dua buah
sesi akan tampak bersamaan atas-bawah. Steven lalu mengetikkan perintah
shell cat >/dev/null agar bisa mengetik-ngetik tanpa harus men-save ke
file. User budi melakukan hal yang sama, men-split tampilan screen-nya agar
bisa menulis juga. Ctrl-A, [Tab] untuk berpindah-pindah antarregion. Kedua
user saling menulis di shell masing-masing, dan bisa saling melihat. (Lihat
Gambar 1).
Selain chatting, aplikasi lainnya adalah untuk asistansi. Steven dapat
membantu Budi dengan mengamati apa yang Budi ketik, lalu nanti jika
budi mengalami kesulitan, Steven dapat ikut membantu mengetikkan
perintah yang dibutuhkan. Atau, sama seperti chatting, kedua user
men-split tampilan masing-masing. Steven dapat mengetikkan sesuatu,
lalu Budi mengikuti di terminal miliknya. Keduanya dapat saling
melihat hasil perintah yang lainnya. Sehingga benar-benar bisa disebut
belajar sambil praktik.
Kemungkinan penggunaan lainnya adalah bermain game teks atau
perlombaan lain, bekerja sama menyusun teks, dan masih banyak lagi.
Komentar atau masukan dapat dikirimkan ke <steven@masterweb.net>.
|