শেল থেকে অনেক কমান্ড কীভাবে প্রেরণ করতে হয় এবং শেষের [কমান্ড] এর পিছনে থাকা কমান্ডের জন্য অপেক্ষা করতে হয়


16

আমার প্রায় 20 টি কমান্ড রয়েছে এবং আমাকে ইউনিক্স শেলের কাছে এই সমস্তগুলি প্রেরণ করতে হবে এবং ফলাফলটি অনুলিপি করতে হবে, তবে আমি কীভাবে এটি করব তা জানি না।

আমার কী শেল রয়েছে তা সম্পর্কে আমি নিশ্চিত নই, কারণ এটি একটি মোবাইল প্রোগ্রাম ম্যানেজমেন্টের সাথে সংযুক্ত একটি ছোট প্রোগ্রাম এবং এই ছোট প্রোগ্রামের সাথে আমাদের লাইন দিয়ে কমান্ড প্রেরণ এবং চিৎকার করে ফলাফলগুলি পুনরুদ্ধার করার অ্যাক্সেস রয়েছে, সেই কারণে আমি স্ক্রিপ্ট ব্যবহার করতে পারি না কম্যান্ড পাঠাচ্ছি।

কমান্ড 1 - একটি সার্ভারের সাথে সংযুক্ত করুন।

কমান্ড 1 সমাপ্ত হওয়া পর্যন্ত অপেক্ষা করুন

কমান্ড 2 - সার্ভার 1 সমাপ্তি থেকে সমস্ত তথ্য আপডেট করুন

অপেক্ষা করুন।

কমান্ড 3 । কিছু প্যারামিটার পান।

... এবং আরও অনেক কমান্ড।

আমি চেষ্টা সঙ্গে cmd1 | cmd2 | cmd3 এবং cmd1 & cmd2 & cmd3 এবংcmd1;cmd2

সমস্যাটি cmd1একটি আরএনসি (নেটওয়ার্ক উপাদান) এর সাথে সংযুক্ত cmd2রয়েছে এবং বুদ্ধিমান হওয়ার পরে 15 সেকেন্ড সময় নেয় । তবে কেবল প্রথম সেন্টিমিটারের জন্য কাজ করুন। কোন সূত্র, কিভাবে এটি চালানো?


3
স্ক্রিপ্ট ব্যবহার করবেন? অথবা &&কমান্ডের মধ্যে।
বার্নহার্ড

উত্তর:


20

সাধারণত কেবল cmd1;cmd2;cmd3;cmd4(যদি আপনি এটি একটি লাইনে লিখতে চেয়েছিলেন), বা cmd1 && cmd2 && cmd3 && cmd4যখন cmd2 ব্যর্থ হয় আপনি cmd3 চালাতে চান না তা ব্যবহার করে ।

বিকল্প হিসাবে ;আপনি কেবল প্রতি লাইন একটি কমান্ড লিখতে পারেন।

cmd1
cmd2
cmd3
cmd4

আপনি যদি আদেশগুলি পটভূমিতে সমান্তরালভাবে চালিত করতে চান তবে আপনি এটি ব্যবহার করতে পারেন

cmd1 &
cmd2 &
cmd3 &
cmd4 &
wait # for cmd1-4 to finish

এই পদ্ধতিগুলির মধ্যে একটিও শেল স্ক্রিপ্টে রাখা যেতে পারে। আপনি শেল স্ক্রিপ্টে যা লেখেন এবং আসল শেলটিতে আপনি যা লিখেন তার মধ্যে সামান্য পার্থক্য রয়েছে।


এমএম সমস্যাটি যখন আমি সেমিডি 1 প্রেরণ করি তখন এটি প্রায় 6 সেকেন্ডের মধ্যে শেষ করতে হয়, সমস্যাটি এটি যখন সেমিডি 2 এবং সেমিডি 1 পাঠায় এটির এখনও প্রক্রিয়াটি ব্যর্থ হয়।
জোনাথন রাউল টপিয়া লোপেজ

4
সেক্ষেত্রে cmd1;cmd2(বা cmd1 && cmd2সেই বিষয়ে) সেমিডি 2 চালানো হবে না যতক্ষণ না সেন্টিমিডি 1 বেরিয়ে আসে (এবং সম্ভবত এটি শেষ হয়)। সুতরাং কোনও সমস্যা হওয়া উচিত নয় - দয়া করে আপনার প্রশ্নটি পুনরায় লিখুন বা লোকেরা প্রকৃতপক্ষে পুনরুত্পাদন করতে পারে এমন একটি উদাহরণ সরবরাহ করুন।
frostschutz

ঠিক আছে আমি প্রশ্নটি পরিবর্তন করতে যাচ্ছি। ধন্যবাদ
জোনাথন রাউল টপিয়া লোপেজ

2

আপনি দেখব করতে চাইতে পারেন sleep, আপনার পরিবেশ এটা করতে পারবেন পারেন। সম্পূর্ণ ক্রমটি তখন এর মতো কিছু হবে cmd1 && sleep 10s && cmd2ঘুমের জন্য
প্রাসঙ্গিক পৃষ্ঠাটি এখানে ।


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

1

একের পর এক কমান্ড যুক্ত একটি ফাইল কেবল একটি স্ক্রিপ্ট ব্যবহার করুন, যেমন:

#!/bin/sh

command-01
command-02
...
command-20

প্রথম লাইন (শেবাং) নিম্নলিখিত কমান্ডগুলি ব্যবহার /bin/shকরে ফাইলটি এক্সিকিউটেবল ( chmod u+x your-little-script) তৈরি করতে বলেছে তবে আপনি এটি চালিয়ে যেতে পারেন ./my-little-script। এইভাবে আপনি কিছু পদক্ষেপ ছাড়বেন না ;-)

শেলটির জন্য ম্যানুয়ালটি পড়ুন, এটি একটি সম্পূর্ণ প্রোগ্রামিংয়ের ভাষা সরবরাহ করে। bash(1)এটি উপলভ্য কিনা তা পরীক্ষা করে দেখুন , না হলে কর্ন শেল ksh(1)। তারা স্ক্রিপ্টগুলিতে নিয়ন্ত্রণের প্রবাহ নিয়ন্ত্রণ করার জন্য প্রচুর দরকারী বৈশিষ্ট্যগুলি সরবরাহ করে (বা ইন্টারেক্টিভভাবে, সেই বিষয়ে)।


ধন্যবাদ তবে আমি স্ক্রিপ্ট ব্যবহার করতে পারি না।
জোনাথন রাউল টপিয়া লোপেজ

কেন? যাই হোক, যদি না এই একটি হল খুব : ফ্যাসিবাদী পরিবেশ, উৎসটি স্ক্রিপ্ট সক্ষম হবে source your-little-script(অথবা . your-little-scriptসংক্ষিপ্ত জন্য)।
ভনব্র্যান্ড

তবে, আমি ইউনিক্স সিস্টেমে সরাসরি অ্যাক্সেস করতে পারি নি আমার কাছে একটি মিনি প্রোগ্রামের মতো যা কেবলমাত্র লাইনে সিএমডি চালানোর অনুমতি দেয় এবং চেঁচামেচি দিয়ে ফলাফলটি অর্জন করতে পারে, এবং ব্যবহারের জন্য আমি এই কমান্ডগুলি ব্যবহার করে স্ক্রিপ্টগুলি ব্যবহার করা ব্যবহারিক নয়।
জোনাথন রাউল টপিয়া লোপেজ

ঠিক আছে, যা কিছুটা পরিষ্কার করে দেয় ... আপনার আদেশগুলির মূল / গন্তব্য কোন পরিবেশ? কমান্ডগুলি চালিত হওয়ার জন্য শিপ করার জন্য আপনি কী ব্যবহার করেন? দূরবর্তী পরিবেশ কী? সেখানে আপনার সেটআপটি কী (আপনি কি নিয়মিত একাউন্ট পান, যা দিয়ে আপনি অ্যাক্সেস করতে পারবেন sshবা PuTTYসম্ভবত?
ভনব্র্যান্ড

-1

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

অবশ্যই, cmd1; cmd2; cmd3; cmd4একটি কমান্ড একের পর এক ক্রমানুসারে কমান্ডগুলি কার্যকর করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.