আমি জানতাম না যে এটি এসও-তে অন্তর্ভুক্ত কিনা (যেহেতু এটি একটি কোডিং বাগ) তবে ভেবেছিলাম যে ছেলেরা ব্যবহৃত সফ্টওয়্যারটির সূক্ষ্মতা সম্পর্কে আরও জ্ঞানী হতে পারে (তাই সম্ভবত ইউএন্ডএলও বিবেচনা করা যেতে পারে)।
এখানে নূন্যতম কোড স্ক্রিপ্ট (সম্পূর্ণ স্ক্রিপ্টের সম্পাদনাগুলি দেখুন, আমি এটি এইভাবে করছি এর কারণ রয়েছে);
#/bin/bash
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 &
less +F currentOutput.log
এটি যা করার চেষ্টা করে তা হ'ল ব্যাকগ্রাউন্ডে একটি সার্ভার চালানো যা কোনও লগ ফাইলে আউটপুট দেয়।
তারপর আমি follow
যে লগ ফাইল ব্যবহার করে less +F
। এটি করার জন্য, এটি থেকে বেরিয়ে আসার জন্য আপনাকে আঘাত করার আগে অবশ্যই ctrl+ cটিপুন Q।
কি হবে, আমি ctrl+ + cভিতরে less
কমান্ড (স্টপেজ tailing
) এটি একরকম সার্ভার দিয়ে শুরু নিহত nohup
উপরের! অন্য কিছু প্রভাবিত হয় না। আমি করতে shift+ + fআবার লগ পিছাড়ী শুরু করার জন্য (যা কোন নতুন তথ্য পায় যেহেতু সার্ভার মারা যায়) এবং যদি আমি আঘাত Qস্ক্রিপ্ট, executes বাকি স্বাভাবিকভাবে।
কেন এমন হয় জানেন? কীভাবে এটি এড়ানো যায় / আমার অন্য কিছু ব্যবহার করা উচিত?
পিএস
সার্ভার প্রোগ্রামটি হয়ত শুনছে ^C
, যা সমস্যা হতে পারে; আমি কি থামাতে কিছু করতে পারি? যেমন, যখন আমি কেবল {SERVERCOMMAND}
এটির নিজের ( দৌড়ানোর উপায়ে) চালাচ্ছি, তখন আমি মারতে পারি ctrl+ cযা তাৎক্ষণিকভাবে এটি হত্যা করে না; এটা ছাপে Received ^C signal, shutting down
(এবং তারপর নিজেই নিহত)। এই যখন আমি কি ঘটছে হয় ^C
মধ্যে less
(একটি চূড়ান্ত Received ^C signal, shutting down
লগ লেখা হয়)।
পিপিএস
আমি অনেকগুলি জিনিস চেষ্টা করে দেখছি (কোনওটিই কাজ হয়নি);
পরিবর্তন করে স্ট্রিডটি স্ক্রিপ্ট থেকে সংযোগ বিচ্ছিন্ন করার চেষ্টা করছি
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 & to nohup echo '' | {SERVERCOMMAND} > currentOutput.log 2>&1 & or nohup cat /dev/null/ | {SERVERCOMMAND} > currentOutput.log 2>&1 &
stty intr ^G
বিঘ্নিত কমান্ড প্রতিস্থাপন করতে ব্যবহার করে , কিন্তু তারপরে ctrl+ যাইহোক যাইহোক gযা^C
করছিল ঠিক তাই করেছিল (সুতরাং এটির পরিবর্তে আমার টার্মিনাল এমুলেটরের সাথে এটি একটি সমস্যা হতে পারে;konsole
)স্থাপন
nohup
ও / অথবাless
বন্ধনীর মধ্যে লাইন (এটি একটি subshell করতে)xterm
পরিবর্তে স্ক্রিপ্ট চলমানkonsole
nohup
SIGHUP
সিটিআরএল + সি SIGINT
সংকেত প্রেরণ করলেও প্রক্রিয়াটি সংকেত পেতে বাধা দেয় । এজন্য nohup
আপনার প্রত্যাশিত প্রভাব নেই।
I think it is due to the handling within the database software, not on the shell
। কিভাবে একটি প্রোগ্রাম এটি করবে? তাহলে, আমি কীভাবে এটি বন্ধ করব?