প্রোগ্রামটি তফসিলি কার্য হিসাবে সঠিকভাবে চলমান না


12

পরিস্থিতি

আমার একটি ব্যাচের স্ক্রিপ্ট রয়েছে যা কিছু ফাইল প্রস্তুত করে, একটি প্রোগ্রাম কার্যকর করে ( .exe) এবং তারপরে বলা ফাইলগুলি মুছে দেয়।

এই টাস্কটি প্রতি ঘন্টা চালানো উচিত, তাই আমি নির্ধারিত টাস্কগুলি ব্যবহার করে এটি কনফিগার করার চেষ্টা করছি। সমস্যাটি হ'ল পূর্বে উল্লিখিত প্রোগ্রামটি কার্য থেকে আহ্বান করার সময় সঠিকভাবে সঞ্চালিত হয় না ( .batস্ক্রিপ্টের মাধ্যমে নয়, .exeসরাসরি কল করার সময় ) তবে লগগুলিতে আমি কোনও সতর্কতা বা ত্রুটি বার্তা পাই না।

সেটআপ

কার্যটি উইন্ডোজ পরিষেবা অ্যাকাউন্ট হিসাবে চালনার জন্য কনফিগার করা হয়েছে যাতে সমস্ত সুযোগসুবিধাগুলি সঠিকভাবে সেট করা থাকে। আরডিপির মাধ্যমে লগইন করতে এই অ্যাকাউন্টটি ব্যবহার করার সময়, আমি কোনও সমস্যা ছাড়াই .batএবং .exeসরাসরি সম্পাদন করতে পারি , তবে তবুও টাস্কটি কিছুই করছে না বলে মনে হয়। এটি সহজেই লক্ষ্য করা যায় কারণ প্রোগ্রামটি সর্বদা একটি ফাইলকে পরিবর্তন করে এবং টাইমস্ট্যাম্পে পরিবর্তিত টাস্কের মাধ্যমে পরিবর্তন হয় না।

নির্ধারিত টাস্ক লগগুলিতে আমি কোনও প্রক্রিয়া শুরু করা, প্রস্থান করা ইত্যাদির জন্য তথ্য বার্তা পাই get "ফলাফল কোড", তবে, 111এটি ভাগ্য ছাড়াই গুগলের কাছে চেষ্টা করা হয়েছে, আমি পেয়েছি এমন একমাত্র সমিতি "ফাইলের নাম অনেক দীর্ঘ ", যা কেবল সম্পূর্ণ অপ্রাসঙ্গিক AFAIK)) অ্যাপ্লিকেশন লগগুলিতে, আমি একেবারে কিছুই পাই না।

আমার সন্দেহ হচ্ছে সমস্যাটি

প্রোগ্রামটি একটি পুরানো একত্ববাদ যা কিছু ধরণের স্প্ল্যাশ স্ক্রিন তৈরি করে (এটি আসলে একটি সাধারণ উইন্ডো), যদিও জিইউআইয়ের প্রয়োজন হয় না কারণ এটির কোনও ইন্টারঅ্যাকশন প্রয়োজন হয় না এবং অপারেশনগুলির পরে নিজেকে বন্ধ করে দেয়। উইন্ডোটি প্রায় 2 সেকেন্ডের জন্য উপস্থিত হয়।

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


জিইউআই সম্পর্কে সম্পাদনা করুন

আমি একটি খুব ছোট সি # এক্সিকিউটেবল তৈরি করেছি যা মূল উইন্ডো ছাড়াই প্রোগ্রামটি চালু করে (ব্যবহার করে ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden)। এমনকি এইভাবে, নির্ধারিত টাস্কটি এখনও প্রোগ্রামটি সঠিকভাবে চালু করতে সফল হয় না, তবে রিটার্ন কোডটি এখন 0


হালনাগাদ

যখন আমি "ব্যবহারকারীর লগ ইন আছে কিনা তা চালানোর জন্য" এবং run with highest privilegesঅপশনটি চেক করা না হয়ে যখন এই কাজটি কনফিগার করে তখন ত্রুটির মান হয় 2147943859


সমস্যা সমাধানের জন্য আমি কী করতে পারি?

ওএস = উইন্ডোজ সার্ভার 2008 আর 2 এসপি 1

যদি আরও তথ্যের প্রয়োজন হয়, দয়া করে মন্তব্যগুলিতে আমাকে জানান।


আপনার স্ক্রিপ্ট এবং "প্রোগ্রাম" বিকল্পগুলি বা পরামিতিগুলির মতো কোনও ইনপুট নেয়? আপনি কি ব্যাচের পরিবর্তে পাওয়ারশেল ব্যবহারের চেষ্টা করেছেন? .exeকোনও স্ক্রিপ্টের মধ্যে থেকে প্যারামিটারগুলি দিয়ে একটি "প্রোগ্রাম" শুরু করার সময়, ইনপুটটি সঠিকভাবে যুক্তি হিসাবে সরবরাহ করতে হবে।
slybloty

1
আপনি সময়সূচী একটি ভিন্ন প্রোগ্রাম দিয়ে চেষ্টা করেছেন? কেবলমাত্র একটি প্রোগ্রামকে আলাদা আলাদা করে প্রতিস্থাপন করুন এবং দেখুন আপনি কী ফলাফল পাচ্ছেন।
slybloty

2
@ আউট-নাল আমি মনে করি না যে টাস্ক শিডিয়ুলার কখন প্রোগ্রামটি শেষ হয়ে গেছে তা জানার জন্য উইন্ডোটি ব্যবহার করে, এটি উইন্ডো দিয়ে যা কিছু করে তা প্রক্রিয়াটির জন্য অপেক্ষা করা উচিত। তবে প্রোগ্রামটি যদি তার স্প্ল্যাশ স্ক্রিন তৈরি করার জন্য নির্দিষ্ট কিছু সন্ধান করার চেষ্টা করে (আসুন টাস্ক বারটি বলি) এবং এটি খুঁজে পেতে ব্যর্থ হয় (কারণ এটি একটি পৃথক ডেস্কটপ / উইন্ডো স্টেশনে চলে) তবে এটি তখন থেমে যেতে পারে ...
আলে

1
ঠিক আছে. আপনি কি এটি স্থানীয় সিস্টেম অ্যাকাউন্টের অধীনে চালানোর চেষ্টা করেছেন? এছাড়াও, আপনি সিস্টেটার্নালস থেকে প্রসেস মনিটরের সাথে প্রক্রিয়া প্রবর্তন ইভেন্টটি পর্যবেক্ষণের চেষ্টা করেছেন?
লাকি লুক

1
@ ব্র্যাডবউচার্ড যদিও আপনার উত্তরটি এই নির্দিষ্ট ক্ষেত্রে ওপিএস প্রশ্নের সমাধান নাও করতে পারে , তবে এটি একটি বৈধ উত্তর এবং এসএফের ভবিষ্যতের দর্শকদের জন্য উপকারী হতে পারে, এবং তাই আমি আপনাকে এটি মুছে ফেলার জন্য উত্সাহিত করব না।
আমি বলছি মনিকা পুনরায়

উত্তর:


6

আমি বিশ্বাস করি যে টাস্কটি চালনার জন্য অ্যাকাউন্টের অনুমতি ব্যবহার করা হয়, বা টাস্কটি চালনার চেষ্টা করার সময় অ্যাকাউন্টের প্রসঙ্গটিই আপনার সমস্যার সাথে জড়িত।

কনসোল সেশন প্রয়োজনীয়তার জন্য পরীক্ষা

আপনার .EXE অবশ্যই Consoleকম্পিউটারে সেশনে চালানো উচিত (ওরফে সেশন 0)। এটি পরীক্ষা করার জন্য:

  1. যখন ব্যবহারকারী লগইন থাকে তখনই চালনার জন্য টাস্কটি কনফিগার করুন এবং ভবিষ্যতে 2 মিনিটের একটি কার্য শুরুর সময় নির্দিষ্ট করুন
  2. টাস্কটি চালাতে ব্যবহৃত একই ব্যবহারকারীর অ্যাকাউন্টের সাহায্যে মেশিনে লগইন করুন (প্রাকৃতিকভাবে কনসোল সেশনে লগইন করুন, শারীরিকভাবে কনসোলে থাকাকালীন বা কনসোলটিতে অ্যাক্সেস দেয় এমন রিমোট অ্যাক্সেস প্রোগ্রাম ব্যবহার করে নিশ্চিত করুন যে আপনি ব্যবহার করছেন একটি কমান্ড প্রম্পট রান থেকে কনসোল সেশন, কলামটি QWINSTAপর্যবেক্ষণ SESSIONNAMEকরুন এবং >সূচকটির পাশে রয়েছে তা নিশ্চিত করুন console, অন্য কথায় এটি প্রদর্শিত হবে >console)
  3. টাস্কটি চালানোর জন্য অপেক্ষা করুন

যদি টাস্কটি সঠিকভাবে চলে, প্যারামিটারটি SCHTASKS.EXEব্যবহার করে টাস্কটি নির্ধারণ করার চেষ্টা করুন /IT। এটি ব্যর্থ হওয়ায় আপনার পরিষেবা ব্যবহারকারী অ্যাকাউন্ট হিসাবে স্বয়ংক্রিয়ভাবে লগ ইন করতে এবং একটি স্টার্টআপ প্রোগ্রাম হিসাবে টাস্কটি চালানোর জন্য আপনার কম্পিউটারের কনফিগার করা ছাড়া আর কোনও উপায় থাকতে পারে না।

অনুমতি পরীক্ষা করুন

অতিরিক্ত হিসাবে, আমি ইতিমধ্যে পরামর্শ হিসাবে, কাজটি চালানোর জন্য ব্যবহৃত অ্যাকাউন্টটি সঠিকভাবে অনুমোদিত কিনা তা নিশ্চিত করার জন্য নিম্নলিখিতটি পরীক্ষা করুন:

  1. এক ব্যাচের কাজের ব্যবহারকারী হিসাবে লগন অ্যাকাউন্টটি মঞ্জুরি দিন (স্থানীয় গ্রুপ নীতিতে পাওয়া গেছে Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignments)
  2. নিশ্চিত করুন যে টাস্কটি সর্বোচ্চ সুবিধাগুলি সহ রান করার জন্য কনফিগার করা হয়েছে
  3. নিশ্চিত করুন যে ব্যবহারকারীর সমস্ত ফোল্ডার এবং ফাইলের সাথে এটির সাথে যোগাযোগ করা উচিত তার পূর্ণ এনটিএফএস অনুমতি রয়েছে। কোন অনুমান করা না; পরিবর্তে যেমন ফাইল অবস্থানে নেভিগেট করে এবং ব্যবহার করে নিশ্চিত Effective Permissionsফাইল / ফোল্ডার এর ট্যাব বৈশিষ্ট্যাবলীSecurity > Advanced

পরীক্ষা / চেষ্টা করার জন্য অতিরিক্ত জিনিস

  • কাজটি কি নেটওয়ার্ক সংস্থানগুলিতে অ্যাক্সেসের প্রয়োজন? আপনি যখন ব্যবহারকারী অ্যাকাউন্টে লগইন করেন ম্যাপযুক্ত ড্রাইভের মতো জিনিসগুলি উপস্থিত থাকতে পারে তবে সার্ভারের কনফিগারেশনের উপর নির্ভর করে টাস্ক শিডিয়ুলার থেকে মৃত্যুদন্ড কার্যকর করার সময় ব্যবহারকারীর অ্যাকাউন্টের প্রসঙ্গে উপস্থিত নাও হতে পারে।
  • আপনার ব্যাচ ফাইলে কিছু লগিং যুক্ত করুন। প্রতিটি লাইন এটি সম্পাদন করার পরে, এটি কোনও লগ ফাইলে কিছু আউটপুট লিখুন যাতে আপনি জানেন যে এটি কোথায় আটকে যাচ্ছে। উদাহরণ স্বরূপ:

    @echo off
    echo Line 1 >> "C:\MyLog.txt"
    "C:\My Folder\myOldProgram.exe"
    echo Line 2 >> "C:\MyLog.txt"
    DEL somefile.dat
    echo Line 3 >> "C:\MyLog.txt"
    
  • উদাহরণস্বরূপ, আপনার .EXE সহ চালানোর চেষ্টা করুনSTARTSTART "myTitle" "C:\full\path\to\my.EXE"


2

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


সমর্থিত কনফিগার ফাইল সহ ভিজ্যুয়াল স্টুডিওতে বিকাশিত একটি কাস্টম কনসোল অ্যাপ্লিকেশন চালানোর জন্য এটিই সমাধান ছিল।
বিলফ্রেডটম

1

সম্ভবত এটি আপনাকে সাহায্য করে?

/programming/6939548/a-workaround-for-the-fact-that-a-scheduled-task-in-windows-requires-a-user-to-be

আমাদের অনুরূপ সমস্যা ছিল এবং আপনার একমাত্র সমাধান হ'ল আমরা অটলজিন সহ সার্ভারে একটি বিশেষ অ্যাকাউন্ট তৈরি করেছি। সুতরাং যদি ইতিমধ্যে কাজটি ব্যবহারকারীদের মধ্যে চলে যায় তবে আমাদের .exe ভালভাবে কাজ করেছে ...

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


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

2
আপনি কি "সর্বোচ্চ অধিকার সহ রান" বিকল্পটি চেক করেছেন? আমি মনে করি আপনি যখন এই বিকল্পটি যাচাই করেছেন তখন অধিকারগুলির একটি উত্সাহটি ঘটবে (ইউএসি) এবং আপনি লগ ইন করার পরেও উইন্ডোটি দেখতে পাবেন না (উইন্ডো ব্যতীত পৃথক অধিবেশনে ডাকা হবে এবং ব্যর্থ হবে)। এছাড়াও "উইন্ডোজ সার্ভার 2003, উইন্ডোজ এক্সপি বা উইন্ডোজ 2000" "এর জন্য কনফিগার করা" বিকল্পটি বেছে নেওয়ার চেষ্টা করুন।
ফ্রুপফ্রুপ

এটি কোনও তাত্পর্যপূর্ণ বলে মনে হচ্ছে, যখন আমি এখন "ব্যবহারকারী লগ ইন থাকুক বা না থাকি" সেট করেছিলাম ততক্ষণে আমি ত্রুটি কোড পেয়েছি 2147943859 I আমি কেবল "কনফিগার করার জন্য" সেট করতে পারি Windows Vista/Windows Server 2008অথবা হয় Windows 7/Windows Server 2008 R2। দেখে মনে হচ্ছে কোন পার্থক্য নেই।
মারিওডিএস

ঠিক আছে. একটি শেষ পরীক্ষা: "সহজ টাস্ক তৈরি করুন" এর পরিবর্তে "নতুন টাস্ক তৈরি করুন" দিয়ে একটি নতুন টাস্ক তৈরি করুন (আসলে কোন টেক্সটটি দেখানো হয়েছে তা আমি জানি না - আমার সার্ভারগুলি জার্মান - তবে আমি আশা করি আপনি কী বলতে চাইছেন তা আমি জানি) এবং তারপরে আমি মনে করি আপনি "উইন্ডোজ সার্ভার 2003, ..." নির্বাচন করতে পারেন। এবং তারপরে
প্লিজ

1

আমাদের গ্রাহকদের সার্ভার চালানো সংস্থার ছেলেরা বলেছে যে কোনও জিইআইআই প্রোগ্রাম কোনওভাবেই নির্ধারিত কাজগুলির মাধ্যমে চলবে না।

তারা একটি মনিটরিং সিস্টেম ব্যবহার করে যার মধ্যে টাস্ক শিডিয়ুলিং বৈশিষ্ট্যও রয়েছে। তারা এটির মাধ্যমে এটি স্থাপন করেছে এবং এটি কাজ করে বলে মনে হচ্ছে।

দুঃখিত যে আমি এখানে আরও পরামর্শ মূল্যায়নের সুযোগ পাইনি, তবে যাইহোক সাহায্য করার চেষ্টা করার জন্য ধন্যবাদ। আমি আশা করি এটি ভবিষ্যতে অন্যদের সহায়তা করতে পারে, যা আমি মনে করি এটি অবশ্যই হবে।


1

আমি একটি উইন্ডোজ 2008 আর 2 সার্ভারে টাস্ক শিডিয়ুলার ব্যবহার করে এবং পুরানো ভিবি 6 প্রোগ্রাম শুরু করার চেষ্টা করছিলাম। অ্যাপ্লিকেশনটি এক্সের কাছ থেকে ব্যাচ ফাইলের মাধ্যমে বা একটি শর্টকাটে ক্লিক করে চলবে, তবে টাস্ক শিডিয়ুলার থেকে চালিত হবে না। আমি দেখতে পেলাম যে অ্যাপ্লিকেশনটির জন্য কনফিগারেশন ফাইলগুলি, যা সি: \ প্রোগ্রাম ফাইল (x86) ডিরেক্টরিতে অ্যাপ্লিকেশন ফোল্ডারে সি: \ প্রোগ্রামডেটাতে অনুলিপি করা হয়েছিল। সময়সূচী কাজ করে। এটি প্রদর্শিত হয় যে cmd.exe টাস্ক শিডিয়ুলার দ্বারা ব্যবহৃত অন্য কোনও অবস্থান থেকে কনফিগারেশন প্রয়োগ করে। আপনার অ্যাপ্লিকেশনটিতে কনফিগারেশন ফাইল রয়েছে, আপনি সেগুলি সি: \ প্রোগ্রামডেটা \ অ্যাপ্লিকেশন ফোল্ডারে নিয়ে যাওয়ার চেষ্টা করতে পারেন।


0

আপনি কি আপনার স্ক্রিপ্ট বা প্রোগ্রামে কোনও ম্যাপযুক্ত নেটওয়ার্ক ড্রাইভ উল্লেখ করছেন ? আমার নির্ধারিত টাস্কটি চলবে না এবং আমি কেন তা বুঝতে পারি না a ইউএনসি পাথগুলিতে পাথ (গুলি) পরিবর্তন করা আমার পক্ষে এটি সমাধান করেছে।

পরিবর্তন T:\Apps\MyProgram.exeকরুন\\MyServer\MyShare\Apps\MyProgram.exe


না, প্রোগ্রামটি লোকাল C:ড্রাইভে রয়েছে।
মারিওডিএস

0

যখন আমি "ব্যবহারকারীর লগ ইন করা আছে কিনা তা চালানোর জন্য" এবং যখন সর্বাধিক সুযোগ-সুবিধাগুলি সহ বিকল্পটি চেক করা হয় না তা বলার জন্য যখন আমি টাস্কটি কনফিগার করি তখন ত্রুটির মান 2147943859 হয়।

2147943859 হেক্সে রূপান্তরিত হয়েছে 800705b3 যা গুগলে একটি দ্রুত ভ্রমণের অর্থ আমাকে "কম্পিউটারে ইনস্টলেশন প্রোগ্রাম শুরু করতে পারেনি this এই অপারেশনটির একটি ইন্টারেক্টিভ উইন্ডো স্টেশন দরকার।"

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

পিএসইেক্সেক: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

অতএব, psexec.exe -i (এবং -h যদি এটির উন্নত প্রয়োজন হয়) দিয়ে সমস্ত কিছু সংশোধন করার জন্য আপনার ক্রিয়াটি পরিবর্তন করুন এবং এটি কাজ করা উচিত।

আমি উইন্ডোজ সার্ভারে 2008 আর 2 এসপি 1 এর সাথে আমার 'অ্যাকশন' দিয়ে নিম্নলিখিতটি চেষ্টা করেছি:

c:\windows\system32\cmd.exe

এবং তারপরে প্যারামিটারগুলি:

/c psexec.exe -h -i notepad.exe

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


0

হয়তো এই প্রশ্নের উত্তর এই থ্রেডটি পড়তে অন্য কাউকে সহায়তা করবে?

/programming/32589381/

সংক্ষিপ্তসার: উইন্ডোজ 2012 নির্ধারিত টাস্কগুলি যে অ্যাকাউন্টটি চালানোর জন্য নির্ধারিত হয়েছে তার অ্যাকাউন্ট সহ সঠিক পরিবেশের ভেরিয়েবলগুলি দেখতে পাবে নাPATH

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

একবার আপনি (অবশেষে!) এটি জানাজানি হয়ে গেলে, এটির জন্য পরীক্ষা করা (স্ট্যাকওভারফ্লো উত্তর অনুসারে) সহজেই সহজ হয়ে যায়, এটি ঘটছে দেখুন এবং এটিকে ঘিরে কাজ করুন ....

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