আমি কীভাবে ইতিমধ্যে একটি চলমান প্রক্রিয়াটিতে একটি অতিরিক্ত 'শাটডাউন' কমান্ড যুক্ত করতে পারি?


11

নিয়মিতভাবে আমি && shutdown -h nowদীর্ঘমেয়াদী প্রক্রিয়াতে যুক্ত করতে ভুলে যাই । প্রথম কমান্ডটি শুরু হওয়ার পরে কোনও shutdown -h nowকমান্ড যুক্ত করার কোনও উপায় আছে কি ? এটি চলমান প্রক্রিয়াটিতে বাধা দেওয়ার উদ্দেশ্যে নয় intended পিআইডি দেখা কি সম্ভব?


আমি আশা করি আপনি বুঝতে পেরেছেন যে &&পূর্ববর্তী কমান্ডটি সফল হলে কেবল যা ঘটবে তা চলবে। আপনি যদি এটি চালাতে চান তবে এর ;পরিবর্তে কমান্ডটি ব্যর্থ হয়।
জোক

উত্তর:


13

আউটপুট মাধ্যমে সমস্ত প্রক্রিয়া এবং গ্রেপ তালিকাভুক্ত করতে বার বার পিএস চালানোর দরকার নেই। প্রক্রিয়াটি সিটিআরএল-জেডের সাথে প্রেরণ করুন, তারপরে চালান

bg %1 ; wait %1 ; shutdown -h now

আপনার যদি অন্যান্য ব্যাকগ্রাউন্ড জব চালু থাকে তবে সিটিআরএল-জেড করার সময় [1] এর পরিবর্তে আপনাকে একটি আলাদা জবস্পেক দেওয়া হবে। যদি তা হয় তবে পরিবর্তে এটি ব্যবহার করুন।


3

আপনি এর মতো কিছু করতে পারেন যা প্রতি 5 সেকেন্ডে প্রক্রিয়াটি চলছে কিনা তা পরীক্ষা করে যথাযথ ব্যবস্থা গ্রহণ করবে:

while true; do
  if ps -ef | grep -q '[l]ong-running-process'; then
    sleep 5
  else
    sudo poweroff
  fi
done

grepঅভিব্যক্তিতে বর্গাকার বন্ধনীগুলি নোট করুন । grepপ্রক্রিয়াটি psতালিকায় শেষ না হলে এটি মিলছে না তা নিশ্চিত করা । বর্গাকার বন্ধনী সহ যে কোনও একক অক্ষরকে ঘিরে যথেষ্ট।


+1 যেহেতু এটি কাজ করে। যেভাবে আমি এটি করতে পারতাম না।
জোক

@ জোক: অন্য কোনও উপায় থাকলে আমি আগ্রহী হব।
স্কট সিভেরেন্স

একটি উত্তর পোস্ট। যদি আপনি চান এটি পরীক্ষা করে দেখুন।
জোক

কোনও প্রক্রিয়া না মেরে অস্তিত্বের জন্য আপনি কিল -0 (পিড) ব্যবহার করতে পারেন।
ফ্লফি

3

আমি সব সময় এটা করি।

  1. প্রক্রিয়া শুরু করুন।
  2. বুঝতে পারি যে আমি আমার &&আদেশটি করতে ভুলে গেছি ।
  3. হিট Ctrl+ + Zপ্রক্রিয়া স্থগিত এবং শেল ফিরে যাওয়ার।
  4. চালান fg && shutdown -h now:
    1. অগ্রভাগ এবং আপনি সাসপেন্ড করা প্রক্রিয়াটি আবার শুরু করুন।
    2. তারপরে, এটি শেষ হওয়ার পরে, আপনি যা চালাতে চেয়েছিলেন তা তা চালিয়ে দেবে।

বিকল্পভাবে, আপনি এই মত অন্যান্য উত্তর হিসাবে পরামর্শ হিসাবে পোল করতে পারেন:

while ps -p $PID ; do sleep 5 ; done ; shutdown -h now

যে এখনই বন্ধ হবে।
psusi

এই মুহূর্তে fg সম্পূর্ণ হয়, তাই ...
PSusi

@ পিপুসি না তা হবেনা
উইকি

@ ওয়ালকিংউইকি, ওহ আজব, আপনি ঠিক বলেছেন আমি শপথ করছি আমি এটি 2012 সালে পরীক্ষা করেছি এবং এটি এখনই শেষ হয়েছে।
psusi

1

আপনি যদি পিডটি জানেন তবে আপনি এটি চালাতে পারেন:

while ps -p $PID; sleep 5; done; shutdown -h now

পিএস থেকে প্রতিধ্বনি ছাড়া চালানোর জন্য এটি করুন:

while ps -p $PID >/dev/null; sleep 5; done; shutdown -h now

এবং শেষ পর্যন্ত কোনও আউটপুট ছাড়াই ব্যাকগ্রাউন্ডে এটি চালানো:

(while ps -p $PID >/dev/null; sleep 5; done; shutdown -h now ) &

স্কটের সমাধানটি একটি ভাল তবে এটি grepইতিমধ্যে পিডটি জানলে এটি বারবার প্রয়োজনটিকে সরিয়ে দেয় । এবং এটি টাইপ করা অনেক দ্রুত:


0

উভয় প্রক্রিয়া চালানোর জন্য একটি শেল স্ক্রিপ্ট তৈরি করুন:

MyShellScript.txt:

#!/bin/sh
MyProcessIdLikeToStart -o options && shutdown -h now

ডিরেক্টরিটি যেখানে আপনি প্রদত্ত প্রক্রিয়া শুরু করবেন সেখানে সংরক্ষণ করার পরে, একটি করুন:

chmod +x MyShellScript.txt

তারপরে আপনি কমান্ডটি চালাতে চাইলে কেবল টাইপ করুন ./MyShellScript.txtএবং এটি আপনার জন্য উভয়ই করবে।

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