মূলত, '0' কোন সংকেতটি উপস্থাপন করে, কারণ এখানে আমি সংকেত সংখ্যাগুলি 1 থেকে শুরু করে দেখছি।
মূলত, '0' কোন সংকেতটি উপস্থাপন করে, কারণ এখানে আমি সংকেত সংখ্যাগুলি 1 থেকে শুরু করে দেখছি।
উত্তর:
সংকেত পাঠানোর 0
একটি প্রদত্ত করার PID
প্রদত্ত যে কোনো প্রক্রিয়া যদি শুধু চেক PID
চলমান ও আপনার করা একটি সংকেত পাঠাতে অনুমতি আছে।
আরও তথ্যের জন্য নিম্নলিখিত manpages দেখুন:
হত্যা (1)$ man 1 kill
...
If sig is 0, then no signal is sent, but error checking is still performed.
...
হত্যা (2)
$ man 2 kill
...
If sig is 0, then no signal is sent, but error checking is still performed; this
can be used to check for the existence of a process ID or process group ID.
...
man 2 kill
পরিবর্তে ব্যবহার করুন।
man 1 kill
এবং man 2 kill
এটি আমার ফেডোরা 20 সিস্টেমে ছিল। যদিও এটি উভয়ই পৃষ্ঠাতে সমাহিত করা খুব কঠিন।
If sig is 0 (the null signal), error checking is performed but no signal is actually sent. The null signal can be used to check the validity of pid.
পিক্সস
man 2 kill
প্রথম সংশোধনের বাইরে রয়েছে :)
... এই বিশেষ সংকেতটিতে ডকুমেন্টেশনগুলি পাওয়া শক্ত হতে পারে। অন্যেরা যা বলেছে তা সত্ত্বেও, man 1 kill
দেবিয়ান-ভিত্তিক সিস্টেমগুলিতে এই সংকেতের একমাত্র উল্লেখটি হ'ল
বিশেষত দরকারী সংকেতগুলির মধ্যে HUP, INT, KILL, STOP, CONT, এবং 0 অন্তর্ভুক্ত রয়েছে।
বিশেষভাবে সহায়ক নয়, বিশেষত যদি আপনি ইতিমধ্যে সিগন্যালটি কী তা জানেন না। এটি এর আউটপুট দ্বারাও তালিকাভুক্ত নয় kill -l
, সুতরাং আপনি ইতিমধ্যে এটি সম্পর্কে অবগত না হলে আপনি এটি সম্পর্কে জানতে পারবেন না।
দেবিয়ান এবং উবুন্টু সিস্টেমে কিছু man 2 kill
অংশে আউটপুট বলে:
যদি সিগ 0 হয়, তবে কোনও সংকেত প্রেরণ করা হয় না, তবে ত্রুটি পরীক্ষা করা এখনও কার্যকর হয়; এটি কোনও প্রক্রিয়া আইডি বা প্রক্রিয়া গ্রুপ আইডির অস্তিত্বের জন্য যাচাই করতে ব্যবহার করা যেতে পারে।
kill -0
কোনও প্রক্রিয়া চলছে কিনা তা পরীক্ষা করতে আপনি ব্যবহার করতে পারেন । এই উদাহরণগুলি বিবেচনা করুন।
# Kill the process if it exists and accepts signals from
# the current user.
sleep 60 &
pid=$!
kill -0 $pid && kill $pid
# Check if a PID exists. When missing, this should result
# in output similar to:
# bash: kill: (6228) - No such process
# Exit status: 1
kill -0 $pid; echo "Exit status: $?"
kill -0
বর্তমান ব্যবহারকারীর প্রদত্ত প্রক্রিয়াটিকে সংকেত দেওয়ার অনুমতি আছে কিনা তা নির্ধারণ করতে আপনিও ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:
# See if you have permission to signal the process. If not,
# this should result in output similar to:
# bash: kill: (15764) - Operation not permitted
# Exit status: 1
sudo sleep 60 &
kill -0 $!; echo "Exit status: $?"
kill(2)
এখানে স্নিপেটেও নথিভুক্ত করা হয়েছে :The kill() function sends the signal specified by sig to pid, a process or a group of processes. Typically, Sig will be one of the signals specified in sigaction(2). A value of 0, however, will cause error checking to be performed (with no signal being sent). This can be used to check the validity of pid.
kill
ম্যান পৃষ্ঠায় সমাহিত করা হয়েছে : "যদি সিগ 0 হয়, তবে কোনও সংকেত প্রেরণ করা হয় না, তবু ত্রুটি পরীক্ষা করা হয়।"
এই কমান্ডটি পিআইডি-তে পিআইডি সহ প্রক্রিয়াটি বেঁচে আছে কিনা তা পরীক্ষা করে।
$pid
চলমান থাকতে পারে তবে আপনাকে এতে একটি সংকেত প্রেরণের অনুমতি নেই।
kill(1)
প্রতিটি জন্য একটি ভিন্ন ত্রুটি প্রিন্ট করবে। সুতরাং, আপনার কাছে সিগন্যাল প্রেরণের অনুমতি আছে কিনা তা নির্বিশেষে পিডটি জীবিত কিনা তা আপনি বলতে পারেন। তদুপরি, এর সাধারণ ব্যবহার kill -0
হ'ল পিডটি বেঁচে আছে কি না, এমনকি যদি এটি সর্বদা সঠিকভাবে ব্যবহার না করা হয় তা। আমি বলব এই উত্তরটি সঠিক (বানান বাদে)।
kill -0 $pid
হবে না। এটি ফিরে আসবে 1
যাতে kill
প্রক্রিয়াটি চলছে কিনা তার আউটপুটকে পার্সিং ব্যতীত আপনি বলতে পারবেন না , যদি আপনার কাছে এটিতে সংকেত প্রেরণের অনুমতি না থাকে। সম্পাদনা: হ্যাঁ আমি জানি যে প্রক্রিয়াটি বেঁচে আছে কিনা তা যাচাই করার জন্য এটি বেশিরভাগ সময় ব্যবহৃত হয়, তবে এটি ভুল যদি না আপনি গ্যারান্টি দিয়ে দিতে পারেন যে আপনার কাছে সিগন্যালটি প্রেরণের অনুমতি রয়েছে (যেমন: রুট হওয়া)
kill
ব্যাশ অন্তর্নির্মিত (প্রশ্নটি ট্যাগ করা হয় bash
) স্ট্যাডারে ত্রুটির ধরণের ফলাফলকে চিহ্নিত করে, এবং ইঙ্গিত দেয় এর রিটার্ন কোডে একটি ত্রুটি। এটি হল, "এই কমান্ডটি পিআইডি-তে পিআইডি সহ প্রক্রিয়াটি জীবিত কিনা তা পরীক্ষা করে [যদি] আউটপুটটিকে সঠিকভাবে ব্যাখ্যা করে তবে এটি সম্পূর্ণ সঠিক"। [আপনি যদি উত্তর না দিয়ে -1 দিয়েছিলেন তা না বলে আমি মন্তব্য করব না। আপনার মন্তব্য অন্যথায় বৈধ]।
পিড কিল -0। পিড হ'ল পিড সহ প্রক্রিয়াটি বিদ্যমান কিনা তা পরীক্ষা করা।
প্রক্রিয়াটির অস্তিত্ব পরীক্ষা করতে 'কিল -0 $ পিড' ব্যবহার করার সময় সতর্কতা অবলম্বন করুন কারণ
উদ্দেশ্যপ্রাপ্ত প্রক্রিয়াটি প্রস্থান হওয়ার পরে তার পিডটি অন্য নতুন নির্মিত প্রক্রিয়াতে বরাদ্দ করা যেতে পারে। (সুতরাং কেউ নির্দিষ্ট প্রক্রিয়াটি বেঁচে আছে কিনা তা নিশ্চিত হতে পারে না)
জ্যাম্বো প্রক্রিয়া ক্ষেত্রে, যার জন্য শিশু অপেক্ষা করতে পিতামাতার জন্য অপেক্ষা করছে। এখানে এটি পিড ধরে এবং ইতিবাচক ফলাফল দেয় যখন প্রক্রিয়াটি চলছে না।
Ill পিড দিয়ে চলছে এমন কোনও প্রক্রিয়া বেঁচে আছে কি না তা পরীক্ষা করতে ব্যবহৃত কিল -0। পিড ব্যবহার করুন। তবে এটি জটিল হতে পারে, প্রক্রিয়া আইডি যেমন আবার প্রেরণ করা যায়, একবার প্রক্রিয়া প্রস্থান এবং নতুন প্রক্রিয়া চালিত হয়। একটি নির্দিষ্ট প্রক্রিয়া চলছে কিনা তা জানতে কেউ কিল্লাল -0 ব্যবহার করতে পারেন।
EXIT
সিগন্যাল প্রেরণ করা বা 0
কোনও প্রক্রিয়াতে পাঠানো :stdout
সাফল্যের উপর কোনও আউটপুট প্রেরণ করবে না ।stderr
কিছু সঠিক না হলে ।আরও স্পষ্টভাবে, আপনার শেল স্ক্রিপ্টগুলির জন্য একটি দরকারী কাজটি হ'ল:
function isProcess ()
{
kill -s EXIT $1 2> /dev/null
}
এটি stdout
সাফল্যের কোনও পাঠ্য ফেরত দেয় না , stderr
ব্যর্থতার পরে একটি ত্রুটি বার্তা দেয় (তবে আমি সেই ত্রুটি বার্তাকে পুনঃনির্দেশিত করেছি /dev/null
)।
যদি আপনি অকার্যকর / জম্বি প্রক্রিয়া স্থিতি সম্পর্কে উদ্বিগ্ন হন , তবে আপনাকে অবশ্যই স্যুইচ ps
সহ ব্যবহার করতে --no-headers
হবে।
#!/bin/ksh
function trim ()
{
echo -n "$1" | tr -d [:space:]
}
function getProcessStatus ()
{
trim $(ps -p $1 -o stat --no-headers)
}
function isZombie ()
{
typeset processStatus=$(getProcessStatus $1)
[[ "$processStatus" == "Z" ]]
return $?
}