আমি একসাথে একাধিক ট্যাব / শেলের মধ্যে একই লিনাক্স কমান্ডটি কীভাবে চালাব?


33

লিনাক্সে এমন কোন সরঞ্জাম / কমান্ড রয়েছে যা আমি একাধিক ট্যাবে একসাথে একসাথে চালানোর জন্য ব্যবহার করতে পারি? আমি একই কমান্ডটি চালাতে চাই: ./myprog argument1 argument2একই সাথে একাধিক শেলের মধ্যে মুটেক্সগুলি থ্রেডেড প্রোগ্রামে সূক্ষ্মভাবে কাজ করছে কিনা তা পরীক্ষা করে দেখুন। আমি এই প্রোগ্রামটির উদাহরণগুলির সংখ্যা বাড়াতে সক্ষম হতে চাই যাতে আমার কোডটি পরে চাপের মধ্যে পড়ে।

আমি প্রাচীর কী করে তার মতো কিছু খুঁজছি। আমি টিটিআই ব্যবহারের কথা ভাবতে পারি, তবে এটি কেবল অনেক যন্ত্রণার মতো মনে হয় যদি আমাকে এটি আরও অনেক শাঁস পর্যন্ত স্কেল করতে হয়।


1
"যে কোনও সময় আপনি নিজেকে কোনও কম্পিউটারের সাথে জড়িত পুনরাবৃত্ত টাস্কটি করতে দেখেন, এটি স্বয়ংক্রিয় করুন" - আমাকে । আমি মনে করি আপনি লোড টেস্টিংয়ের জন্য একাধিক টার্মিনাল ট্যাব ব্যবহার করে নিজেরাই একটি বিচ্ছিন্নতা বোধ করছেন কারণ আপনার সমস্ত ক্লান্তিকর সমস্ত দেখতে হবে। এমন একটি প্রোগ্রাম থাকা ভাল যা শিশুদের myprogদৃষ্টান্তগুলিকে উত্সাহ দেয় এবং আপনার জন্য তাদের আউটপুট একত্রিত করে।
এমএসডব্লিউ

1
সাধারণ মাল্টি-থ্রেডিংয়ের প্রক্রিয়াগুলির মধ্যে একটি মিটেক্স থাকবে না ...?
অ্যারন ডি মারাকো

@ এমএসডাব্লু: হ্যাঁ তবে যদি আমি দেখতে চাইতাম যে শেষ ব্যবহারকারী যখন তার টার্মিনাল থেকে একই কমান্ডটি চালাচ্ছিল এবং আমি যদি 100 বলে স্কেল করেছিলাম, তবে তারা তাদের পর্দায় কী দেখতে পাবে? এটি নির্ধারণ করার জন্য কি বৈধ জিনিস নয়?
অর্পিথ

@ অ্যারোনডি.মারাস্কো: আমি ব্যবহারকারীর জায়গাতে আমি যে মুটিেক্সগুলি রেখেছি তা পরীক্ষা করতে চাই।
অর্পিত

সুতরাং এক সুপারভাইজারের অধীনে 99 টি দৃষ্টান্ত চালান এবং একটি টার্মিনালে 100 তম চালান। আমি স্বীকার করি যে আপনি একই সাথে 100 টি টার্মিনাল দেখতে সক্ষম হতে পারেন, যদি তাই হয় তবে আমি মুগ্ধ হয়েছি।
এমএসডাব্লু

উত্তর:


46

মাভিলান ইতিমধ্যে পরামর্শ হিসাবে, কেবল টার্মিনেটর ব্যবহার করুন । এটি টাইল্ড উপায়ে অনেক টার্মিনাল প্রদর্শন করতে দেয়। সম্প্রচার বৈশিষ্ট্য সক্ষম করার সময়, আপনি প্রতিটি টার্মিনালে একই সাথে একই কমান্ডটি প্রবেশ করতে পারেন।

এখানে 32 টার্মিনালের গ্রিডে সম্প্রচারিত ডেট কমান্ডের একটি উদাহরণ রয়েছে।

terminatorx32


3
ধিক! এটা দুর্দান্ত!
আফ্রি

আমি কীভাবে সহজেই 32 টি টার্মিনাল খুলতে পারি?
আনানান

6
@ অান্নান টার্মিনেটর কাস্টম লেআউটগুলি সমর্থন করে, ইউনিক্স.স্ট্যাকেক্সেঞ্জঞ্জ. com
a/

11

tmux এই ক্ষমতা আছে। (একই শিরা অন্যান্য অনেক দরকারী ক্ষমতা সহ)

এর মাধ্যমে করা যেতে পারে:

:setw synchronize-panes on

আপনি কি দয়া করে খুব শীঘ্রই বর্ণনা করতে পারবেন টিএমউক্স এটি কীভাবে করে - বা কোনও লিঙ্ক পেস্ট করে? ধন্যবাদ!
eli

1
: সিঙ্ক্রোনাইজ-পেনগুলি সেট করুন
মাইকেল মার্টিনেজ

9

Multixterm

তালিকায় যুক্ত করার জন্য অন্য একটি সরঞ্জাম বলা হয় multixterm। এটি xtermটার্মিনাল ব্যবহার করে । আপনি এটির মত অনুরোধ করতে পারেন:

$ multixterm

এবং একবার আপনি GUI উপস্থাপন করা হবে।

                                                         গি এস এস

তারপরে আপনি বোতামটি xtermক্লিক করে উইন্ডোজ কাটানো শুরু করতে new xtermপারেন। এখানে উদাহরণস্বরূপ আমি ২।

   এক্সটেম এর এসএস

keyboardcast

এটি কেবল উবুন্টুতে উপলভ্য হবে বলে মনে হচ্ছে, এটি মাল্টেক্সটার্মের অনুরূপ।

উদ্ধৃতাংশ

কীবোর্ডকাস্টের উদ্দেশ্য হ'ল একাধিক এক্স উইন্ডোতে আপনাকে একবারে কীস্ট্রোক প্রেরণ করতে দেওয়া। এটি আপনাকে উদাহরণস্বরূপ, গণ-প্রশাসনের উদ্দেশ্যে বিভিন্ন কিন্তু অনুরূপ হোস্টগুলিতে সংযুক্ত বেশ কয়েকটি টার্মিনাল নিয়ন্ত্রণ করতে দেয়।

আপনি নন-টার্মিনালগুলিও নির্বাচন করতে পারেন। আপনি যদি এই ক্ষমতার জন্য যুক্তিসঙ্গত ব্যবহার নিয়ে আসে তবে আমি এটি সম্পর্কে শুনতে আগ্রহী।

প্রোগ্রামটি তাদের শিরোনামগুলি (একটি স্ট্রিং ব্যবহার করে) মেলে বা তাদের (জিআইএমপির স্ক্রিনশট বৈশিষ্ট্যের অনুরূপ পদ্ধতিতে) ক্লিক করে পাঠাতে উইন্ডো নির্বাচন করতে পারে।

প্রোগ্রামটিতে একাধিক যুক্তি (উদাহরণস্বরূপ বেশ কয়েকটি হোস্টে 'ssh' চালানো) জিনোম-টার্মিনালের একক কমান্ড কার্যকর করার একাধিক উদাহরণ ছড়িয়ে দেওয়ার ক্ষমতাও রয়েছে। জিনোম-টার্মিনালগুলি প্রোফাইল 'কীবোর্ডকাস্ট' এর সাথে উপস্থিত থাকলে এটি উপস্থিত থাকে (সুতরাং, উদাহরণস্বরূপ, আপনার ফন্টের আকার আরও কম হতে পারে)।


রক্ষাকারী! নোট নেওয়া।
রানলেভেল0

দেখে মনে হচ্ছে কীবোর্ডকাস্টটি ভেঙে গেছে, যা হতাশাব্যঞ্জক।
আরজে

9

এটি আইটার্ম 2 ব্যবহার করে অর্জন করা যায়

তথ্যসূত্র: http://korishev.com/blog/2014/02/28/iterm2-broadcast-input/

এখানে চিত্র বর্ণনা লিখুন


লিনাক্স সম্পর্কিত নয়, যেহেতু আইটার্ম শুধুমাত্র ম্যাক ওএস এবং প্রশ্নটি একটি লিনাক্স সমাধান সম্পর্কে স্পষ্টভাবে জিজ্ঞাসা করছে।
আরজে

8

আপনি যেমন কিছু করতে পারেন:

max_processes=20
for ((i=0; i<$max_processes; i++))
do 
    /path/to/myprog arg1 arg2 > /tmp/myprog.${i}.log &
done

অথবা যদি প্রতিটি কমান্ডের আউটপুট কার্যকর করার সময় প্রাসঙ্গিক হয় তবে আপনি স্ক্রিন সেটআপ করতে পারেন।

vi ~/.screenrc
screen -t inst1    1 /path/to/myprog arg1 arg2
screen -t inst2    2 /path/to/myprog arg1 arg2
screen -t inst3    3 /path/to/myprog arg1 arg2
screen -t inst4    4 /path/to/myprog arg1 arg2

স্ক্রিনটির জন্য আরও ম্যানুয়াল কাজ দরকার।


আপনি কি পর্দার সমাধান আরও প্রসারিত করতে পারেন? আমি যা চাই তার সাথে আরও
সামঞ্জস্য

কেন কেবল tail -fএকশ স্ক্রিন স্থাপনের পরিবর্তে লগ ফাইল নয় ।
মিথ্যা রায়ান

@ অ্যারপিথ স্ক্রিনটি একক একাধিক টার্মিনাল স্প্যান করে। আপনি যদি তাদের সকলকে "রিয়েল টাইম" তে দেখতে চান তবে আপনি পর্দা ব্যবহার করতে পারেন। যদিও ব্যক্তিগতভাবে আমি লগ-ফাইলে যাব, আপনি বার্তা প্রেরণের জন্য আপনার প্রগ সেট করতে পারেন বা প্রতিটি উদাহরণের জন্য একটি লগফিল লেখার জন্য আপনার নিজের প্রগ সেট করতে পারেন (উদা: মাইপ্রোগ.পিড.লগ)
বিটস অফফিক্স

@ লাইরিয়ান কারণ আপনি যদি সিসলগের মতো কিছুতে লগইন না করেন তবে প্রতিটি প্রক্রিয়াটির জন্য আপনাকে একটি পৃথক ফাইলে লগ করতে হবে। যদি আপনি কেবল 20+ প্রসেস একই সময়ে একই ফাইলটিতে লেখার চেষ্টা করেন তবে আপনার খারাপ সময় কাটাতে চলেছে।
সম্মিচ

@ সাম্মিচ:tail -f *.log
মিথ্যা রায়ান

5

আমি কেডিএর ব্যবহারকারী, কেডিএ ৪.১৩.৩ এ কনসোল ২.১.2.২ সহ আপনি এটি করতে পারেন:

  1. খোলা কনসোল

  2. উল্লম্বভাবে বিভক্ত দেখুন এখানে চিত্র বর্ণনা লিখুন

  3. উইন্ডোর প্রতিটি টার্মিনালে একসাথে লিখুন এখানে চিত্র বর্ণনা লিখুন


4

টার্মিনেটর (এমুলেটর টার্মিনাল) ব্যবহার করে দেখুন। এটিতে একই উইন্ডোতে অনেকগুলি শেল সেশন থাকতে পারে এবং আপনি তাদের সকলের কাছে একটি কমান্ড সম্প্রচার করতে পারেন।

টার্মিনেটর


3

আপনি মোবাএক্সটারমের মতো একটি সরঞ্জাম ব্যবহার করতে পারেন এবং এটি আপনাকে একই সাথে সংযোগ করার অনুমতি দেবে এবং তারপরে আপনার সমস্ত আদেশগুলিকে আপনার উইন্ডোতে আটকানো হবে।


লিনাক্স সম্পর্কিত নয়, মুব্যাক্সটার্ম হিসাবে, এটি যা করে তার জন্য খুব চিত্তাকর্ষক, কেবল উইন্ডোজ এবং প্রশ্নটি একটি লিনাক্স সমাধান সম্পর্কে স্পষ্টভাবে।
আরজে

3

আপনি যদি কেবলমাত্র 100 তম প্রোগ্রামের সম্পাদনা থেকে আউটপুট দেখতে চান:

#!/bin/bash

prog="/path/to/myprog"
args="argument1 argument2"
max=100
for i in $(seq $max); do
    if [ $i -lt $max ]; then
        exec $prog $args &> /dev/null &
    else
        exec $prog $args
    fi
done

2

আপনি konsoleমাধ্যমে নিয়ন্ত্রণ করতে পারেন DCOP। একটি উদাহরণ এখানে থেকে :

#!/bin/bash

checkfile() {
  if [ ! -f $1 ]; then
    echo "could not find $1"
    exit 99
  else
    echo "OK"
  fi
}

# Check for App1 XML
echo -n "Checking for App 1 XML... "
XMLA=/domain/DM.xml
checkfile ${DEVROOT}/${XMLA}

# Check for App2 XML
echo -n "Checking for App 2 XML... "
hostname=$(hostname)
XMLB=/domain/DM_${hostname}.xml
checkfile ${DEVROOT}/${XMLB}

# Launch Konsole
echo -n "Launching konsole... "
K=$(dcopstart konsole-script)

[ -z "${K}" ] && exit 98
# Create second tab and resize
SDA=$(dcop $k konsole currentSession)
SDB=$(dcop $k konsole newSession)
dcop $K $SDA setSize 121x25

# Let bash login, etc.
sleep 1

# Rename the tabs
dcop $K $SDA renameSession "App 1"
dcop $K $SDB renameSession "App 2"

# Start services, letting user watch
echo -n "starting app1... "
dcop $K konsole activateSession $SDA
dcop $K $SDA sendSession "echo -ne '\033]0;DEV (${hostname})\007' && clear && starter $XMLA"
sleep 2
echo -n "starting app2... "
dcop $K konsole activateSession $SDB
dcop $K $SDB sendSession "echo -ne '\033]0;DEV (${hostname})\007' && clear && starter $XMLB"
echo done.

2
sh <<-STRESS & 
$( printf 'myprog &\n%.0b' \
    `seq 1 ${MAX_CONCURRENT_PROCS}` )
STRESS
echo "$!"

আমি উপরের এমএমএসউ করা মন্তব্যের সাথে একমত এটি আপনাকে একটি পটভূমি shপ্রক্রিয়া দ্বারা প্রবর্তন করার জন্য একটি স্ক্রিপ্ট লিখবে এবং শিশু shপ্রক্রিয়াটির পিড প্রিন্ট করবে যাতে আপনি এটি এবং এটির শিশুদের যেমন কাজ করে তদারকি করতে পারেন।


2

@ জিনপেং জিএনইউ প্যারালাল দিয়ে ডান ট্র্যাকে ছিলেন , কেবল বাস্তবায়ন নয়।

উদাহরণ: আপনার প্রোগ্রামের 10 টি সমান্তরাল দৃষ্টান্তগুলি চালান, প্রতিটি থ্রেড আপনার প্রোগ্রামটি একবার চালিত করে:

parallel -j10 './myprog argument1 argument2 #' ::: {1..10}

উদাহরণ: 10 টি সমান্তরাল থ্রেড চালান, সেই প্রতিটি থ্রেডের সাথে আপনার প্রোগ্রাম অসীমভাবে চলছে:

parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}

10আমার উদাহরণগুলিতে প্রতিস্থাপন করে আপনি এটি সহজেই কয়েকশ থ্রেডে স্কেল করতে পারেন ।

parallel -j200     ...     ::: {1..200}

যদি আপনার প্রোগ্রামটি কোনও স্টাডাউট বার্তা উত্পন্ন করে এবং আপনি সেগুলি যেমন উত্পাদিত হয় সেগুলি দেখতে চান (তাদের পরিবর্তিত ডিফল্টের চেয়ে), --ungroupসমান্তরালের বিকল্পটি কার্যকর হতে পারে।

parallel --ungroup   ...

যদি আপনি আপনার ওয়ার্কস্টেশন থেকে প্রচুর থ্রেড চালাচ্ছেন এবং জিনিসগুলি প্রতিক্রিয়াহীন হয়ে উঠতে চান না nice, তবে লঞ্চের সময় পুরো প্রক্রিয়াটির সাবট্রিকে আইং বিবেচনা করুন ।

nice -n19 parallel   ...

সাইড নোট, গনুহ সমান্তরাল সাধারণত ডিফল্ট অনুসারে ইনস্টল করা নেই কিন্তু আপনার স্বাভাবিক প্যাকেজ Repos সাধারণত, তাই শুধু অন্য কোন প্যাকেজ মত এটি ইনস্টল করুন: dnf install parallel, apt-get install parallel, brew install parallel, ইত্যাদি


1

আপনি এর সাথে পটভূমিতে প্রক্রিয়াগুলি শুরু করতে পারেন nohup

উদাহরণ:

nohup ./myprog -arg1 -arg2 &

আউটপুট:

[1] 1769    
nohup: ignoring input and appending output to 'nohup.out'

প্রদত্তটি দিয়ে পরে টাস্কটি মারতে ভুলবেন না PID:

kill 1769

অগ্রভাগে প্রক্রিয়াটি আনতে আপনার অবশ্যই চাকরির সংখ্যাটি প্রবেশ করতে হবে [1]:

fg %1


0

আমার ছোট থেকে মিল:

#!/bin/sh

[ $# -lt 1 ] && {
        echo "Use: $0 <file>
        where file includes list of server"
        exit 9
}

cp ~/.config/terminator/config ~/.config/terminator/config.`date +%Y%m%d-%H%M`

cat ~/.config/terminator/config.`date +%Y%m%d-%H%M`|grep -v "^.plugins" >~/.config/terminator/config

inc=5
echo "  [[terms]]" >>~/.config/terminator/config
for i in `cat $1` ; do
        echo "   [[[window${inc}]]]"
        echo "       type = Window"
        echo "   [[[terminal${inc}]]]"
        echo "     profile = default"
        echo "     order = 0" 
        echo "     type = Terminal"
        echo "     parent = window${inc}"
        echo "     command = ssh $i"
        inc=$((inc+1))
done >>~/.config/terminator/config

echo "[plugins]" >>~/.config/terminator/config

এক গোষ্ঠীর অনেক উইন্ডোর জন্য টার্মিনেটর কনফিগার (বিন্যাসের শর্তাদি) তৈরি করবে।

সম্পাদনা: কমপক্ষে, টার্মিনেটর একই গ্রুপে প্রতিটি টার্মিনালে সম্প্রচার পাঠাতে সক্ষম। এই ফাংশনটি পরিবর্তনযোগ্য - যাতে আপনি এটি 'su -' লিখতে সক্ষম করতে পারেন তবে অনেস টার্মিনালগুলিতে উন পাসওয়ার্ডটি অক্ষম করে লিখুন এবং এটি আবার সক্ষম করুন।


1
ইহা কি ভালো? আমাকে অসুস্থ ইংলিশ দয়া করে মাফ করবেন :)
মেরেক are
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.