Apakah ada alat / perintah di Linux yang dapat saya gunakan untuk menjalankan perintah di lebih dari satu tab secara bersamaan? Saya ingin menjalankan perintah yang sama:./myprog argument1 argument2
secara bersamaan di lebih dari satu shell untuk memeriksa apakah mutex berfungsi dengan baik dalam program berulir. Saya ingin dapat meningkatkan jumlah instance dari program ini sehingga membuat kode saya di bawah tekanan nanti.
Saya agak mencari sesuatu seperti apa yang dilakukan dinding. Saya bisa memikirkan menggunakan tty's, tapi itu sepertinya banyak rasa sakit jika saya harus skala ini ke lebih banyak kerang.
shell
terminal
parallelism
Arpith
sumber
sumber
myprog
instance anak dan mengumpulkan hasilnya untuk Anda.Jawaban:
Seperti yang sudah disarankan mavillan, cukup gunakan terminator . Hal ini memungkinkan untuk menampilkan banyak terminal dengan cara ubin. Saat mengaktifkan fitur penyiaran, Anda dapat memasukkan perintah yang sama secara bersamaan di setiap terminal.
Berikut adalah contoh dengan perintah tanggal yang disiarkan ke jaringan 32 terminal.
sumber
tmux memiliki kemampuan ini. (bersama dengan banyak kemampuan berguna lainnya dalam nada yang sama)
Dapat dilakukan melalui:
sumber
Multixterm
Alat lain untuk ditambahkan ke daftar adalah yang disebut
multixterm
. Menggunakanxterm
terminal. Anda dapat memanggilnya seperti ini:Dan sekali Anda akan disajikan dengan GUI.
Anda kemudian dapat mulai memutar
xterm
windows dengan mengkliknew xterm
tombol. Di sini sebagai contoh saya telah memohon 2. Jika Anda kemudian klik pada jendela utama, Anda dapat mulai mengetik perintah di kedua jendela secara bersamaan:siaran keyboard
Tampaknya hanya tersedia di Ubuntu, terlihat mirip dengan multixterm.
kutipan
sumber
Itu bisa dicapai menggunakan iTerm2
Referensi: http://korishev.com/blog/2014/02/28/iterm2-broadcast-input/
sumber
Anda dapat melakukan sesuatu seperti:
Atau jika output dari setiap perintah relevan selama eksekusi, Anda dapat mengatur layar.
Layar membutuhkan lebih banyak pekerjaan manual.
sumber
tail -f
file log daripada menyiapkan seratus layar.tail -f *.log
Saya pengguna KDE, dengan konsole 2.13.2 di KDE 4.13.3 Anda dapat melakukan ini:
buka konsole
tampilan split secara vertikal
tulis secara bersamaan di setiap terminal di dalam jendela
sumber
Coba Terminator (terminal emulator). Itu dapat memiliki banyak sesi shell di jendela yang sama dan Anda dapat menyiarkan perintah kepada mereka semua.
Terminator
sumber
Anda bisa menggunakan alat seperti MobaXterm dan itu akan memungkinkan Anda untuk terhubung secara bersamaan dan kemudian menempelkan perintah Anda ke semua jendela Anda.
sumber
Jika Anda hanya ingin melihat output dari eksekusi program ke-100:
sumber
Anda dapat mengontrol
konsole
melaluiDCOP
. Contohnya adalah dari sini :sumber
Saya setuju dengan komentar yang dibuat @msw di atas. Ini akan menulis kepada Anda skrip yang akan diluncurkan oleh
sh
proses berlatar belakang dan mencetaksh
pid proses anak sehingga Anda dapat memonitornya dan anak-anaknya saat berfungsi.sumber
@Jinpeng berada di jalur yang benar dengan GNU Parallel , hanya saja bukan implementasinya.
Contoh: Jalankan 10 instance paralel dari program Anda, dengan setiap utas menjalankan program Anda hanya sekali:
Contoh: Jalankan 10 utas paralel, dengan masing-masing utas tersebut menjalankan program Anda tanpa batas:
Anda dapat dengan mudah mengatur skala ini ke ratusan utas dengan mengganti
10
dalam contoh saya.Jika program Anda menghasilkan pesan stdout apa pun dan Anda ingin melihatnya saat dihasilkan (daripada default yang menyusunnya),
--ungroup
opsi untuk paralel mungkin berguna.Jika Anda menjalankan banyak utas dari workstation Anda dan tidak ingin semuanya menjadi tidak responsif, pertimbangkan
nice
seluruh proses subtree pada waktu peluncuran.Side catatan, GNU Parallel biasanya tidak terinstal secara default tapi biasanya dalam paket repo normal Anda, jadi hanya menginstalnya seperti paket lain:
dnf install parallel
,apt-get install parallel
,brew install parallel
, dllsumber
Anda dapat memulai proses di latar belakang dengan
nohup
.Contoh:
Keluaran:
Ingatlah untuk membunuh tugas nanti dengan yang diberikan
PID
:Untuk membawa proses di latar depan Anda harus memasukkan nomor pekerjaan, dalam hal ini
[1]
:sumber
gnu parallel persis alat yang Anda cari.
parallel -j 9 yourcommand
sumber
Little to mill:
Akan membuat terminator config (istilah tata letak) untuk banyak jendela dalam satu grup.
EDIT: Setidaknya, terminator dapat mengirim siaran ke setiap terminal dalam grup yang sama. Fungsi ini dapat diubah - sehingga Anda dapat mengaktifkannya menulis 'su -' kemudian menonaktifkan dan menulis kata sandi ke terminal onces dan mengaktifkannya lagi.
sumber