ম্যাক ওএসএক্সে টাইমআউট কমান্ডের বিকল্প আছে কি? প্রাথমিক প্রয়োজনীয়তা হ'ল আমি একটি নির্দিষ্ট সময়ের জন্য একটি কমান্ড চালাতে সক্ষম হয়েছি।
যেমন:
timeout 10 ping google.com
এই প্রোগ্রামটি লিনাক্সে 10 সেকেন্ডের জন্য পিং চালায়।
উত্তর:
তুমি ব্যবহার করতে পার
brew install coreutils
এবং তারপরে যখনই আপনার সময়সীমা দরকার, ব্যবহার করুন
gtimeout
..পরিবর্তে. হোমব্রুউ ক্যাভেটস বিভাগ থেকে এখানে একটি স্নিপেট কেন তা ব্যাখ্যা করতে:
গুহা
সমস্ত কমান্ডগুলি 'g' উপসর্গের সাথে ইনস্টল করা হয়েছে।
আপনার যদি এই কমান্ডগুলি তাদের সাধারণ নামের সাথে সত্যই ব্যবহার করার প্রয়োজন হয় তবে আপনি আপনার বাশার্ক থেকে আপনার রাস্তায় একটি "gnubin" ডিরেক্টরি যুক্ত করতে পারেন:
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
অতিরিক্ত হিসাবে, আপনি যদি আপনার বাশার্ক থেকে আপনার মনপথে "gnuman" ডিরেক্টরিটি যুক্ত করেন তবে আপনি তাদের সাধারণ পৃষ্ঠাগুলি অ্যাক্সেস করতে পারেন:
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
ln -s /usr/local/bin/gtimeout /usr/local/bin/timeout
কেবলমাত্র একটি কমান্ড সক্ষম করতে (ওরফে সমাধান ইন্টারেক্টিভ সিএলআই ব্যবহারের জন্য কাজ করে, তবে বাশ স্ক্রিপ্ট থেকে কল করার সময় নয়)।
brew install coreutils
এবং timeout
কমান্ডটি উপসর্গ ছাড়াই উপলব্ধ ছিল।
আর একটি সহজ পদ্ধতির যা বেশ প্রায় ক্রস প্ল্যাটফর্মের সাথে কাজ করে (কারণ এটি পার্ল ব্যবহার করে যা প্রায় সর্বত্র রয়েছে) এটি হ'ল
function timeout() { perl -e 'alarm shift; exec @ARGV' "$@"; }
এখান থেকে স্ন্যাগড হয়েছে: https://gist.github.com/jaytaylor/6527607
এটি কোনও ফাংশনে রাখার পরিবর্তে, আপনি কেবলমাত্র একটি স্ক্রিপ্টে নিম্নলিখিত লাইনটি রাখতে পারেন এবং এটি খুব কার্যকর হবে:
perl -e 'alarm shift; exec @ARGV' "$@";
বা সহায়তা / উদাহরণস্বরূপ তৈরি করা একটি সংস্করণ:
#!/usr/bin/env bash
function show_help()
{
IT=$(cat <<EOF
Runs a command, and times out if it doesnt complete in time
Example usage:
# Will fail after 1 second, and shows non zero exit code result
$ timeout 1 "sleep 2" 2> /dev/null ; echo \$?
142
# Will succeed, and return exit code of 0.
$ timeout 1 sleep 0.5; echo \$?
0
$ timeout 1 bash -c 'echo "hi" && sleep 2 && echo "bye"' 2> /dev/null; echo \$?
hi
142
$ timeout 3 bash -c 'echo "hi" && sleep 2 && echo "bye"' 2> /dev/null; echo \$?
hi
bye
0
EOF
)
echo "$IT"
exit
}
if [ "$1" == "help" ]
then
show_help
fi
if [ -z "$1" ]
then
show_help
fi
#
# Mac OS-X does not come with the delightfully useful `timeout` program. Thankfully a rough BASH equivalent can be achieved with only 2 perl statements.
#
# Originally found on SO: http://stackoverflow.com/questions/601543/command-line-command-to-auto-kill-a-command-after-a-certain-amount-of-time
#
perl -e 'alarm shift; exec @ARGV' "$@";
perl -e 'alarm shift; exec "ping google.com"
?
Alarm clock
বার্তা উত্পন্ন করে যখন টাইমারটির মেয়াদ শেষ হয় এবং এটি মুছে ফেলা অদৃশ্য হয়ে যায় ।
function timeout() { perl -e 'use Time::HiRes "ualarm"; ualarm shift; exec @ARGV' "$@"; }
(নোট করুন যে এটি পার্লডের প্রয়োজন> = 5.8 perldoc.perl.org/funitions/alarm.html অনুযায়ী )
উবুন্টু / ডেবিয়ান থেকে টাইমআউট প্যাকেজটি ম্যাকের উপর সংকলন করা যায় এবং এটি কাজ করে। প্যাকেজটি http://packages.ubuntu.com/lucid/timeout এ উপলব্ধ
brew install coreutils
- তারপরে নামটি gtimeout
ব্যবহার করতে আপনার PATH ব্যবহার করুন বা সেট করুন timeout
।
আপনি করতে পারেন ping -t 10 google.com >nul
the> নুল আউটপুট থেকে মুক্তি পায়। সুতরাং 123.45.67.8 ব্লেথ ব্ল্যাব থেকে B৪ টি বাইটিস দেখানোর পরিবর্তে এটি সময় শেষ না হওয়া অবধি কেবল একটি ফাঁকা নিউলাইন প্রদর্শন করবে। -t পতাকা যে কোনও সংখ্যায় পরিবর্তিত হতে পারে।