Saya ingin menulis skrip untuk membuka banyak program (server) secara bersamaan di terminal terpisah - tidak masalah yang mana - dan menetapkan perintah yang berbeda untuk terminal yang berbeda dengan perintah "pendaratan" di dalam terminal yang benar. Apakah ini mungkin?
Mungkin, kira-kira seperti ini:
- terminal terbuka1
- buka terminal2 // secara simultan dengan 1.
- command1 // jalankan di terminal1 tanpa membuka jendela terminal baru
- command2 // jalankan di terminal2 tanpa membuka jendela terminal baru
- ...
Bisakah saya memberi label windows terminal sehingga perintah dijalankan di dalam terminal yang benar?
Saya juga ingin menonton semua terminal saat program mereka berjalan - program saya memiliki argumen untuk mencetak jejak / debug ke terminal. Jadi saya ingin melihat pesan apa yang dipertukarkan di antara mereka.
CATATAN: Saya kurang khawatir tentang keamanan data yang dipertukarkan karena skrip ini harus berfungsi sebagai "simulasi". Saya telah mengkonfigurasi setiap server untuk dijalankan dari port yang dialokasikan di localhost.
sumber
Jawaban:
Karena Anda menyebutkan bahwa Anda telah memecahkan masalah untuk situasi spesifik Anda, di bawah solusi untuk tujuan umum. Berkat
xdotool
's--sync
pilihan, bekerja dengan cukup handal dalam tes Aku berlari; Saya bisa "mengirim" perintah ke jendela terminal tertentu dan itu berjalan dengan sempurna tanpa kecuali.Cara kerjanya dalam praktik
Solusinya ada dari skrip, yang dapat dijalankan dengan dua opsi
-set
dan-run
:Untuk mengatur (membuka) sejumlah jendela terminal yang sewenang-wenang, dalam contoh 3 ini:
Tiga terminal baru akan terbuka, id window mereka diingat dalam file tersembunyi:
Untuk alasan kejelasan saya meminimalkan jendela terminal saya menjalankan perintah dari :)
Sekarang saya membuat tiga jendela, saya dapat mengirim perintah ke salah satu dari mereka dengan menjalankan perintah (misalnya):
Seperti yang ditunjukkan di bawah ini, perintah dijalankan di terminal kedua:
Selanjutnya, saya dapat mengirim perintah ke terminal pertama:
Membuat
sudo apt-get update
berjalan di terminal 1:dan seterusnya...
Cara mengatur
Script membutuhkan keduanya
wmctrl
danxdotool
:Salin skrip di bawah ini ke file kosong, simpan sebagai
target_term
(tanpa ekstensi!) Di~/bin
(buat direktori~/bin
jika perlu.Jadikan skrip dapat dieksekusi (jangan lupa) dan keluar / masuk atau jalankan:
Sekarang atur jendela terminal Anda, dengan jumlah jendela yang diperlukan sebagai argumen:
Sekarang Anda dapat "mengirim" perintah ke salah satu terminal Anda dengan perintah:
Naskah
Catatan
Skrip diatur untuk
gnome-terminal
, tetapi dapat digunakan untuk terminal apa pun (atau program lain juga) dengan mengubahapplication
bagian kepala skrip:Tidak perlu dikatakan bahwa skrip hanya berfungsi dengan pengaturan terminal (windows) yang dipanggil oleh perintah:
Jendela terminal kemudian akan "diberi label" oleh skrip, seperti yang Anda sebutkan dalam pertanyaan Anda.
target_term
sesi baru , file tersembunyi, yang dibuat oleh skrip hanya akan ditimpa, sehingga tidak perlu menghapusnya jika tidak.sumber