আমি প্রায়শই bash
বিভিন্ন বিভিন্ন ফাইলের সহজ কমান্ড চালাতে শেল স্ক্রিপ্ট ব্যবহার করি । উদাহরণস্বরূপ, অনুমান যে আমি নিম্নলিখিত আছে bash
শেল স্ক্রিপ্ট, বলা script.sh
, যে প্রোগ্রাম / কমান্ড রান foo
তিন টেক্সট ফাইল "a.txt"
, "b.txt"
, "c.txt"
:
#!/bin/bash
for strname in "a" "b" "c"
do
foo $strname".txt"
done
এছাড়াও, ধরুন যে foo $strname".txt"
এটি ধীর গতির, সুতরাং স্ক্রিপ্টটির সম্পাদন করতে দীর্ঘ সময় লাগবে (ঘন্টা বা দিন, উদাহরণস্বরূপ)। এ কারণে, আমি এটি ব্যবহার করতে চাই nohup
যাতে টার্মিনালটি বন্ধ বা সংযোগ বিচ্ছিন্ন হয়ে গেলেও কার্যকর কার্যকর হয়। আমি স্ক্রিপ্টটি অবিলম্বে পটভূমিতে যেতে চাই, তাই আমি &
অপারেটরটি ব্যবহার করব । সুতরাং আমি কল করতে নিম্নলিখিত কমান্ডটি ব্যবহার করব script.sh
:
nohup bash script.sh &
এটি ব্যাকগ্রাউন্ডে এবং হ্যাংআপ ছাড়াই স্ক্রিপ্টটি চালানোর জন্য দুর্দান্ত কাজ করে তবে এখন মনে করুন যে আমি কোনও কারণে কোনও কারণে মৃত্যুদন্ড কার্যকর করতে চাই। কিভাবে আমি এটি করতে পারব?
সমস্যা হল আমি সম্মুখীন যে, দিকে তাকিয়ে দ্বারা top
, আমি শুধুমাত্র দেখতে foo
সংশ্লিষ্ট "a.txt"
। আমি যে বন্ধ করতে পারেন foo
কল, কিন্তু তারপর foo
সংশ্লিষ্ট "b.txt"
নামক পরার এবং তারপর আমি বিনষ্ট যে এক পাশাপাশি, এবং তাই আছে। for
লুপে উল্লিখিত দশ বা শত শত পাঠ্য ফাইলের জন্য foo
, একে একে একে একে শেষ করে দেওয়া ব্যথা হয়ে যায় ! সুতরাং কোনওরকমভাবে পরিবর্তে আমাকে শেল স্ক্রিপ্ট নিজেই বন্ধ করতে হবে, শেল স্ক্রিপ্ট থেকে জারি করা বিশেষ কলগুলি নয় ।
আমি যখন কমান্ডটি টাইপ করি
ps -u myusername
myusername
আমার ব্যবহারকারী নাম কোথায় , আমি যে প্রক্রিয়াগুলি চালিয়ে যাচ্ছি তার একটি তালিকা পাই get কিন্তু আমি দুটি ভিন্ন প্রক্রিয়া ID- র নামক দেখতে bash
। এই প্রসেসগুলির মধ্যে কোনটি আমার মূল কলের সাথে মিলে যায় তা আমি কীভাবে জানতে পারি nohup bash script.sh &
?
for s in a b c; do foo "$s".txt; done
nohup
আপনি যে কাজটি শুরু করেছেন তা দেখার জন্য আপনি কোনও প্রক্রিয়া তালিকা তৈরি করার সময়টি খুব দীর্ঘ হয়ে যাবে। আপনি ps
আউটপুটে "উদ্ভাবন" কলামটি দেখতে পারেন তবে উত্তরগুলি এখানে আরও কার্যকর।