আমি জানতে চাই যে কখন একটি চলমান প্রক্রিয়া শেষ হবে। আমি কীভাবে এটি দেখতে পারি?


14

আমি কোনও কমান্ড জানতে চাই যা আমি প্রক্রিয়াটির শেষ সময় জানতে চালাতে পারি।

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

আপনার সাহায্যের জন্য ধন্যবাদ.


7
আকর্ষণীয় প্রশ্ন। যাইহোক, পরের বার আপনি যখন একটি কমান্ড চালান যা দীর্ঘ সময় নেয়, atতার ব্যবহারটি বিবেচনা করুন (ম্যানপেজটি দেখুন man at:)। এটি এটিকে একটি কাজ হিসাবে সারি করবে, এটি শেষ হয়ে গেলে আপনার সম্পর্কে জানানো হবে etc.
জার্মটভিডিজক

উত্তর:


11

এটি চালান:

while kill -0 <PID>; do sleep 1; done; echo "Process finished at $(date +"%F %T")."

অথবা আপনি একটি বাশ স্ক্রিপ্ট তৈরি করতে পারেন। wait-for-death.sh:

#!/bin/bash

if ! kill -0 $1; then
    echo "Process $1 doesn't exist."
    exit 1
fi

while kill -0 $1; do
    sleep 1
done

echo "Process $1 finished at $(date +"%F %T")."

তারপরে এটিকে কার্যকর করার অনুমতি দিন:

chmod +x wait-for-death.sh

এবং এটি প্রক্রিয়াটি পাস করে চালান 'পিআইডি:

./wait-for-death.sh <PID>

while kill -0 <pid>; do ...আরও বহনযোগ্য - এটি নন-লিনাক্স সিস্টেমগুলিতেও কাজ করবে। এবং ব্যাশ ব্যবহার করার কোনও কারণ নেই - আপনার কোড কোনও বাশিজম ব্যবহার করে না তাই /bin/shএখানে পুরোপুরি ঠিক আছে।
রিচার্ড হ্যানসেন

1
@ রিচার্ডহানসেন এই সাইটটি উবুন্টু সম্পর্কে, এটি স্ট্যাকওভারফ্লো নয়।
hytromo

@ রিচার্ডহানসেন এর জন্য ধন্যবাদ kill -0, আমি মনে করি এটি আরও মার্জিত সমাধান।
এরিক কারভালহো

@ হ্যাকারম্যানিয়া: আমি বুঝতে পেরেছি, এজন্য আমি এখনও এটি +1 দিয়েছি। আমি কোনও বিএসডি / সোলারিস / ইত্যাদি ক্ষেত্রে একই জিনিসটি করতে চাইলে স্ক্রিপ্টটিকে আরও পোর্টেবল করার কয়েকটি উপায় আমি কেবল নির্দেশ করছিলাম। পদ্ধতি. আমি বিশ্বাস করি যে উবুন্টু-নির্দিষ্ট কিছু করার কারণ না থাকলে পসিক্সে লেগে থাকা ভাল ধারণা । এই ক্ষেত্রে, পসিক্স-কনফর্মেন্ট স্ক্রিপ্ট না লেখার কোনও কারণ নেই ।
রিচার্ড হানসেন

2

আপনি যদি পিআইডি সংঘর্ষ এড়াতে চান তবে আপনি এটি ব্যবহার করতে পারেন at:

job_id=$(at now <<< 'sleep 10' 2>&1 | awk 'END {print $2}')
while at -l | grep -q "^${job_id}\s"
do
    sleep 1
done
echo "Process finished at $(date)"

0

কমান্ডটি timeআপনার প্রয়োজনের সাথে খাপ খায়:

time [options] command [arguments...]

উদাহরণ:

time /local/usr/bin/myProcess arg1 arg2

প্রক্রিয়া শেষ হয়ে গেলে প্রক্রিয়াটি শেষ timeকরতে সময় লাগার মতো কিছু পরিসংখ্যান দেখানো হবে (কয়েক সেকেন্ডে আমার মনে হয়)।

ম্যান পৃষ্ঠাটি পরীক্ষা করুন বা এই অনলাইন ম্যান পৃষ্ঠাতে একবার দেখুন


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