যদি একই কাজটি ইতিমধ্যে চলমান থাকে তবে আমি কোনও নির্ধারিত কাজটি চালানো থেকে কীভাবে আটকাতে পারি?


11

কোনও ফোল্ডারে কোনও নতুন ফাইল রয়েছে কিনা তা পরীক্ষা করার জন্য আমি পিএইচপি স্ক্রিপ্ট লিখেছি এবং যদি কোনও নতুন ফাইল উপস্থিত থাকে তবে সেগুলি সার্ভারে আপলোড করুন। এই ফাইলগুলি বেশ বড় হতে পারে। আমি এই স্ক্রিপ্টটি ঘন ঘন চালাতে চাই - আসুন প্রতিটি 5 মিনিট সময় নির্ধারিত টাস্ক হিসাবে যাতে ফাইলগুলি যত তাড়াতাড়ি সম্ভব সার্ভারে স্থানান্তরিত হয়। যাইহোক, স্ক্রিপ্টটি ইতিমধ্যে কোনও ফাইল আপলোড করার চেষ্টা করা হলে, আমি এটি আবার চালানো চাই না, কারণ আমি ভয় করি যে দ্বিতীয় উদাহরণটি সার্ভারে ইতিমধ্যে আপলোড করা ফাইলটি ওভাররাইট করবে।

স্ক্রিপ্টটি নির্ধারিত টাস্ক হিসাবে কীভাবে চালাতে পারি যদি না স্ক্রিপ্টটি ইতিমধ্যে চালু না থাকে?

উত্তর:


21

ধরে নিই যে আপনি এক্সপি "তফসিলি কার্যগুলি" সিস্টেমে কেবল "পুনরাবৃত্তি" করতে টাস্কটি সেট করছেন, আপনার পক্ষ থেকে আর কোনও পদক্ষেপের প্রয়োজন নেই। তফসিলি কার্যগুলি যদি কোনও কাজ ইতিমধ্যে চালু থাকে তবে "পুনরাবৃত্তি" করবে না।

আপনি যদি সেই ডিফল্টটিকে ওভাররাইড করতে চান, "নতুন টাস্কটি শুরুর আগে টাস্ক শিডিয়ুলারকে শেষ ঘটনাটি মেরে ফেলতে" যদি টাস্কটি এখনও চলমান থাকে তবে এই মুহুর্তে এটি বন্ধ করুন "বক্সটি চেক করতে পারেন (যদিও এটি মনে হয় আপনি সম্ভবত ডোন করেন না এটা চাই না)।


2

আমি যেভাবে এটি করেছি তা হ'ল ব্যাচ ফাইল থেকে কাজটি চালানো যা মধ্যরাতের কিছুদিন পরেই একবার শুরু হয় এবং পরবর্তী মধ্যরাত পর্যন্ত চলে runs এর সুবিধাটি হ'ল এটি যেহেতু এটি একটি একক স্ক্রিপ্ট আপনি দ্বিতীয় উদাহরণটি চালাতে পারবেন না। আমি মনে করি কোনও অসুবিধা হতে পারে যে আপনি স্ক্রিপ্টটি ঠিক কতবার চালায় ঠিক তা অনুমান করতে পারেন কারণ এটি প্রতিটি রানের পরে একটি নির্দিষ্ট সময় অপেক্ষা করবে। যাইহোক আপনি যদি আগ্রহী হন তবে আমার স্ক্রিপ্টটি এমন দেখাচ্ছে:

rem *** Get the day number. When the day number changes that signals
rem *** the script to exit.

for /f "tokens=1" %%i in ('date /t') do set THEDATE=%%i
set THEDAY=%THEDATE:~0,2%

rem *** Open the log file

echo Starting Whatever >%LOGFILE%
date /t >>%LOGFILE%
echo . >>%LOGFILE%

rem *** Start the monitoring loop

:start

rem *** Run your script

rem Run the script here

rem *** Pause for 300 seconds

sleep 300

rem *** Check the day number. If it is still the same loop back to the
rem *** start of the monitoring loop.

for /f "tokens=1" %%i in ('date /t') do set THEDATE=%%i
if %THEDATE:~0,2% == %THEDAY% goto start

জেআর


1

উইন্ডো টাস্ক শিডিয়ুলারে কাজটি আবার শুরু হয়ে গেলে ইতিমধ্যে টাস্কটি চলতে থাকলে কী করতে হবে তার জন্য একটি চেকবক্স (বা বিকল্পগুলি) রয়েছে। আপনি এটি সমান্তরালভাবে শুরু বা চালনা না করে সেট করতে পারেন


1
এক্সপি টাস্ক শিডিয়ুলারে সেই সেটিংটি কোথায়? আমি এক্সপি শিডিয়ুলারকে একই কাজটি সমান্তরালভাবে একাধিকবার সম্পাদন করার কোনও উপায় খুঁজে পাচ্ছি না।
ইভান অ্যান্ডারসন

ভিস্তা। আমি আমার উত্তরটি প্রবেশ করার পরে উইন্ডোজ-এক্সপি ট্যাগটি লক্ষ্য করেছি।
কেভিন কুফল

0

সাধারন উপায় হ'ল কিছু কাজ শুরু করার সাথে সাথে কিছু গ্লোবাল জিনিস (প্রায়শই একটি নির্দিষ্ট খালি ফাইল) পরীক্ষা করা। যদি এটি বিদ্যমান থাকে তবে টাস্কটি ইতিমধ্যে চলছে। যদি তা না হয় তবে গ্লোবাল জিনিস নির্ধারণ করুন, আপনার জিনিসগুলি করুন, টাস্কটি শেষ হয়ে গেলে বিশ্বব্যাপী জিনিসটি আনসেট করুন।

যদি বিশ্বব্যাপী জিনিসটি সেট না করে কাজটি ব্যর্থ হয় তবে এতে সমস্যা রয়েছে। আপনি কম্পিউটার স্টার্টআপ রুটিনে সর্বদা এটি আনসেট করতে চাইতে পারেন যেহেতু আপনি যদি আবার শুরু করেন তবে টাস্কটি চলতে পারে না। কাজ শেষ হয়ে গেলে স্বয়ংক্রিয়ভাবে চলে যায় এমন একটি গ্লোবাল জিনিস আবিষ্কার করা ভাল।

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