Untuk menjalankan perintah secara bersamaan, Anda dapat menggunakan &
pemisah perintah.
~$ command1 & command2 & command3
Ini akan mulai command1
, lalu jalankan di latar belakang. Sama dengan command2
. Kemudian itu dimulai secara command3
normal.
Output dari semua perintah akan kacau, tetapi jika itu bukan masalah bagi Anda, itu akan menjadi solusinya.
Jika Anda ingin memiliki tampilan terpisah pada output nanti, Anda dapat menyalurkan output dari setiap perintah tee
, yang memungkinkan Anda menentukan file untuk mencerminkan output.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
Outputnya mungkin akan sangat berantakan. Untuk mengatasinya, Anda bisa memberikan output dari setiap perintah menggunakan awalan sed
.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Jadi jika kita menyatukan semua itu kita dapatkan:
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
[Command1] Starting command1
[Command2] Starting command2
[Command1] Finished
[Command3] Starting command3
Ini adalah versi yang sangat ideal tentang apa yang mungkin akan Anda lihat. Tapi itu yang terbaik yang bisa saya pikirkan saat ini.
Jika Anda ingin menghentikan semuanya sekaligus, Anda dapat menggunakan build in trap
.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Ini akan mengeksekusi command1
dan command2
di latar belakang dan command3
di latar depan, yang memungkinkan Anda membunuhnya dengan Ctrl+ C.
Ketika Anda membunuh proses terakhir dengan Ctrl+ Cyang kill %1; kill %2
perintah dijalankan, karena kita terhubung eksekusi mereka dengan penerimaan dari interupsi sinyal, hal yang dikirim dengan menekan Ctrl+ C.
Mereka masing-masing membunuh proses latar belakang 1 dan 2 (Anda command1
dan command2
). Jangan lupa untuk menghapus jebakan, setelah Anda selesai dengan perintah Anda menggunakan trap - SIGINT
.
Monster perintah yang lengkap:
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
Anda tentu saja dapat melihat layar . Ini memungkinkan Anda membagi konsol Anda menjadi konsol terpisah sebanyak yang Anda inginkan. Jadi Anda dapat memonitor semua perintah secara terpisah, tetapi pada saat yang sama.