সিনোলজির সময়সূচী .sh java কমান্ড পাওয়া যায় নি


9

আমার কাছে বাশ স্ক্রিপ্ট রয়েছে কেবল জার ফাইল চালানোই কাজ।

sms.sh

java -jar /volume1/homes/jar/smssender.jar

আমার সিনোলজি এনএএস ব্যবহার করে আমি একটি কার্য সেট আপ করেছি।

মূল দ্বারা চালিত টাস্ক সেটআপ

বাশ স্ক্রিপ্ট চালানোর জন্য কমান্ড যুক্ত করা হচ্ছে। লগ আউটপুট যুক্ত করা হচ্ছে।

এখানে চিত্র বর্ণনা লিখুন

আমার নতুন টাস্ক কার্যকর করা হচ্ছে।

এখানে চিত্র বর্ণনা লিখুন

নিম্নলিখিত ত্রুটিটি দেখতে লগটি চেক করা হচ্ছে:

/volume1/homes/jar/sms.sh: লাইন 1: জাভা: কমান্ড পাওয়া যায় নি

জাভা সংস্করণ / ইনস্টলেশন পরীক্ষা করা হচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

ম্যানুয়ালি sh স্ক্রিপ্টের সম্পাদনা পরীক্ষা করা হচ্ছে (কাজ করছে):

এখানে চিত্র বর্ণনা লিখুন

এই একই অদ্ভুত মামলা কেউ? কোন কাজের ক্ষেত্র / ধারণা?

আমি চেষ্টা করেছিলাম

  • আমার এনএএস রিবুট করা হচ্ছে
  • জাভা 8 প্যাকেজ আনইনস্টল করুন / ইনস্টল করুন

কিন্তু কেউ কাজ করেনি।


4
আপনার সমস্যাটি দেওয়া হয়েছে, সম্ভবত সম্ভবত এনভির সাথে সমস্যা রয়েছে (জাভাহোমোম, পাঠ) কাজটি সম্পাদন করার সময় সঠিকভাবে সেট করা হয়নি। হয় আপনি জাভা এক্সিকিউটেবল জন্য নিখুঁত পাথ ব্যবহার করা উচিত, হয় হয় আপনার জন্য একটি ফাইল উত্স।
নোডাটাফাউন্ড

@ নোডাটাফাউন্ড নিখুঁত পথ বলতে কী বোঝ? না /volume1/(...)/file.jar পথ? সাহায্য এবং সময়
দেওয়ার

3
প্রথমে জাভা কার্যকর করতে পারেন find তারপরে, এটি ব্যবহার করে প্রার্থনা করুন /whatever/path/to/java/is/java /volume1/homes/jar( এটি সিনোলজির সাথে নির্দিষ্ট নয়)
নোডাটাফাউন্ড

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

(এছাড়াও: এটি কি সত্যিই টপিকের?)
ব্যাডজেন

উত্তর:


5

যখন সিনোলজি টাস্ক শিডিয়ুলার স্ক্রিপ্টটি কার্যকর sms.shকরে PATH সেটিংটি স্ক্রিপ্ট থেকে নেওয়া হয় /etc/crontab। যার মধ্যে জাভা পাথ নেই।

ডিফল্ট লগইন শেল পরিবেশনা সংজ্ঞা দেওয়া হয় /etc/profile। শেষে জাভা পাথ যুক্ত করার জন্য একটি বিভাগ রয়েছে।

PATH=$PATH:/var/packages/Java8/target/j2sdk-image/bin # Synology Java runtime enviroment
PATH=$PATH:/var/packages/Java8/target/j2sdk-image/jre/bin # Synology Java runtime enviroment
JAVA_HOME=/var/packages/Java8/target/j2sdk-image/jre # Synology Java runtime enviroment
CLASSPATH=.:/var/packages/Java8/target/j2sdk-image/jre/lib # Synology Java runtime enviroment
LANG=en_US.utf8 # Synology Java runtime enviroment
export CLASSPATH PATH JAVA_HOME LANG # Synology Java runtime enviroment

ইতিমধ্যে ইতিমধ্যে প্রদত্ত মন্তব্যে একটি প্রোফাইল স্ক্রিপ্ট সোর্সিং যা ইন্টারেক্টিভ শেলের জন্য বোঝানো হয়েছে তা প্রস্তাবিত নয়। আপনি ক্লিপস্পথ পাঠ জাভাহোম ল্যাং সেট করতে /etc/profileআপনার sms.shস্ক্রিপ্টের স্ক্রিপ্টের আচরণের নকল করতে পারেন।

আপনার স্ক্রিপ্টের পথে হার্ডকোডিং সম্পর্কে উত্থিত পয়েন্টগুলি এবং ফলস্বরূপ হ্রাসযোগ্য বহনযোগ্যতার ক্ষেত্রে এই নির্দিষ্ট ক্ষেত্রে প্রেমিকের প্রাধান্য থাকতে পারে।


আপনার উত্তরটি আমাকে অনেক সাহায্য করেছে এবং সঠিক কিন্তু আমি আমার ফোনে মিস করেছি এবং 100 পয়েন্ট ব্যবহারকারীকে নীচে দিয়েছি। আমি সত্যিই দুঃখিত
পিগুই

@ পিগুই লাইভ ;-)
সাব

-1

আমি Synologyএত চঞ্চলের সাথে পরিচিত নই ...

কমান্ড লাইনে চালিত হওয়ার সময় শেল স্ক্রিপ্টটি কাজ করে কারণ নির্দিষ্ট লগইন সেশনটি ইতিমধ্যে পরিবেশের ভেরিয়েবলগুলির একটি সেট লোড করেছে (উদাহরণস্বরূপ, .profile/.bashrcহোম ডিরেক্টরিতে স্ক্রিপ্টে লগ-ইন করার পরে ) উত্সাহিত করা হয় এবং বিভিন্ন জাভা-নির্দিষ্ট পরিবেশের ভেরিয়েবলগুলি লোড করা হয় - PATH, JAVA_HOME, CLASSPATH, ইত্যাদি) যা javaস্ক্রিপ্টটি ইস্যু ছাড়াই চলতে দেয় ।

ব্যর্থ Synologyকাজের ত্রুটিটি ইঙ্গিত করে যে জাভা-নির্দিষ্ট পরিবেশের ভেরিয়েবলগুলি লোড করা হয়নি এবং তাই কাজ / স্ক্রিপ্টটি সনাক্ত করতে অক্ষম java

ধরে Synologyনেওয়া একটি কনফিগারেশন সেটিংস / পতাকা নেই যা কোনও লগইনের প্রোফাইল পূর্ব-লোড করতে বাধ্যতামূলক, 'সহজ' সমাধানটি হ'ল স্ক্রিপ্টটি সম্পাদনা করা ( sms.sh) এবং কোনও ক্রিয়াকলাপ সম্পাদনের আগে যথাযথ উত্স ফাইলটি উত্স (যেমন, কলিং java) করা উচিত। একটি সহজ উদাহরণ:

$cat sms.sh
#!/usr/bin/bash

. ~root/.bashrc      # load the root account profile before continuing ...

java ...

দ্রষ্টব্য :

  • rootস্ক্রিপ্টটি চালানোর জন্য লগইনটির নামের সাথে প্রতিস্থাপন করুন (উদাহরণ Synologyচিত্রগুলিতে এটি প্রদর্শিত হয় আপনি rootব্যবহারকারীকে বেছে নিয়েছেন তাই আমার উদাহরণের উল্লেখগুলি ~root)
  • ~root/.bashrcস্ক্রিপ্টটি সন্ধান করার জন্য প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি প্রাক-লোড করার জন্য ব্যবহারকারীর প্রোফাইলে যাওয়ার পথটি প্রতিস্থাপন করুনjava

ইন্টারেক্টিভ ব্যবহারের জন্য লিখিত কনফিগারেশন ফাইলগুলিকে নিরবচ্ছিন্ন প্রসঙ্গে ব্যবহার করতে উত্সাহিত করবেন না - এটি এমন পরিস্থিতিতে পরিচালিত করে যেখানে লোকেরা মনে করছে যে তারা যে পরিবর্তনগুলি করছে তা নিরীহ হতে পারে (কারণ .bashrcকীভাবে ডেমোনগুলি পরিচালনা করে না, পরিবর্তিত হয় না)? উত্পাদন বিরতি।
চার্লস ডাফি

1
সত্যিকারের অবস্থানটি সন্ধান করা এবং স্ক্রিপ্টের মধ্যে একটি উপযুক্ত প্যাথ আপডেট হার্ডডকেড, বা কোনও উত্সর্গ-উদ্দেশ্য কনফিগারেশনে স্ক্রিপ্ট উত্সগুলিতে ফাইল করা আরও ভাল। যে পরিস্থিতিতে কাজ যেখানে এই না - চ / E, যখন /etc/profile.dবদলে ~/.bashrcপ্রাসঙ্গিক।
চার্লস ডাফি

হার্ডকোডিং খুব কমই বহনযোগ্য, বিশেষত মিশ্র ওএস / সংস্করণ পরিবেশে; ইন্টারেক্টিভ কনফিগারেশন / রিসোর্স ফাইল বনাম বিশেষত অন্তর্নির্মিত রিসোর্স / কনফিগারেশন ফাইল ব্যবহার করার জন্য ... এটি বিকাশকারীদের / পরিবেশ রক্ষণাবেক্ষণের উপর ভিত্তি করে ব্যক্তিগত পছন্দ সম্পর্কিত বিষয়; গত 20 বছর ধরে আমার কোনও / শূন্য সমস্যা নেই ... উত্পাদন পরিবেশে ... পুরো স্ক্রিপ্টিং এনভিও জুড়ে একটি সাধারণ রিসোর্স / কনফিগারেশন ফাইল ব্যবহার করে, ইয়ামভি
মার্ক্প-ফুসো

1
ব্যবহারকারীর ইন্টারেক্টিভ ফাইলগুলিতে ডট করাও বহনযোগ্য নয় (বিশেষত কোন ফাইলটি দ্বারা কোন সামগ্রীটি পুনরায় ভারসাম্য বঞ্চিত করা হয় তা বোঝানো হয় - কিছু কিছু theতিহ্যবাহী উপায়ে করে এবং .profileকিছু ব্যবহার করে .bash_profile, কিছু ব্যবহার করে /etc/profile.d, কিছু পিএএম থেকে পরিবেশের ভেরিয়েবল ইত্যাদি স্থাপন করে) । এক উপায় বা অন্য কোনওভাবে আপনি কিছু বহনযোগ্য নয়। অন্তত hardcoding PATH=$PATH:/whatever/specific/locationহয় থেকে সংশোধনের সেটিংস, এবং তার আচরণ পাঠকদের (যিনি কিনা এটা পরে পরিবর্তন করব চিন্তা করতে হবে না) থেকে সুস্পষ্ট।
চার্লস ডাফি 19
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.