./executable: বাইনারি ফাইল সম্পন্ন করতে না পারা


12

আমি একটি স্ক্রিপ্ট যে ভাল কাজ করে যখন আমি সার্ভারের নিজেকে চালানো থেকে SSH কিন্তু সমস্যা রয়েছে যখন আছে হাডসন , একটি ক্রমাগত ইন্টিগ্রেশন সার্ভার, এটা চলবে।

আমি একটি এমবেডেড লিনাক্স সিস্টেম (লক্ষ্য) উপর পরীক্ষা স্বয়ংক্রিয় করছি। লক্ষ্যটি সিরিয়ালটির মাধ্যমে সার্ভার এ (আরএইচইএল 5) এর সাথে সংযুক্ত এবং মিনিকোমের মাধ্যমে পরিচালিত। সার্ভার বি (এফসি 12) প্রকৃত লক্ষ্যবস্তুতে চালিত পরীক্ষাগুলি তৈরি করে এবং সার্ভার এ। সার্ভার সি (আরএইচ) হোস্ট হডসনের সাথে সার্ভার বি সহ গোলাম হিসাবে উপস্থিত হতে পারে।

প্রকৃত টার্গেটে প্রয়োজনীয় সবকিছু করার জন্য আমি একটি রানস্ক্রিপ্ট (http://linux.die.net/man/1/runscript) লিখেছি; এটি ইমেজ বুট, সার্ভার বি থেকে একটি ডিরেক্টরি মাউন্ট এবং পরীক্ষা সঞ্চালন করে। সার্ভার বি ওপর ব্যাশ স্ক্রিপ্ট কিছু সহচর কর্ম সহ runscript স্ক্রিপ্ট মিনিকম ডাকে। আমি সার্ভারের বি এ একটি ব্যাশ স্ক্রিপ্ট আছে, যা ব্যবহার

ssh -t -t ServerA bashScript.sh

সেই পরীক্ষার লক্ষ্য চালানো জন্য। আমি সার্ভারের সি উপর, আমি ঐ পরীক্ষার সার্ভার বি ssh'ing এবং স্ক্রিপ্ট যে SSH runscript সঙ্গে সার্ভারটি একটি এমন যা, executes মিনিকম এর নির্বাহ দ্বারা চালানো পেতে পারেন নই। রক্ষে। পর্যালোচনা:

সার্ভারটি একটি এমন: হাডসন সার্ভার বি SSH তার ক্রীতদাস প্রক্রিয়া ব্যবহার

সার্ভার বি: kickOffTests.shলাইন আছেssh -t -t ServerA runTests.sh

সার্ভারটি একটি এমন: runTests.shএকটি Perl স্ক্রিপ্ট পূজা আহ্বানminicom -S my.script ttyE1

টার্গেট, বুট করার পরে: সার্ভার বি থেকে একটি ডিরেক্টরি মাউন্ট করে, যেখানে পরীক্ষা হয় এবং সেই ডিরেক্টরিতে প্রবেশ করে। এটা তোলে এখনও অন্য ব্যাশ স্ক্রিপ্ট, যা পরীক্ষা, যা সি এক্সেকিউটেবল সংকলিত রান ডাকে।

এখন, যখন আমি এই স্ক্রিপ্ট কোন নিজেকে চালানো, তারা কি তারা উচিত না। যাইহোক, যখন হাডসন একই জিনিস, ওভার মিনিকম অধিবেশন এটি "এখনও অন্য ব্যাশ স্ক্রিপ্ট" যে সি এক্সিকিউটেবল ডাকে, একটি লাইন সম্পর্কে অভিযোগ না করার চেষ্টা করে ./executable, সঙ্গে./executable: cannot execute binary file

আমি এখনও লিনাক্স সম্পর্কে জানতে অনেক আছে, কিন্তু আমি অনুমান এই সমস্যা হাডসন একটি কনসোল সাথে সংযোগ না ফলে হয়। আমি জানি না হডসন তার দাসকে নিয়ন্ত্রণ করার জন্য কী করে। আমি লাইনে ব্যবহার করার চেষ্টা export TERM=consoleমাত্র kickOffTests.sh চালানোর আগে কনফিগারেশনে কিন্তু সমস্যা রয়ে গেছে।

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

উত্তর:


13

বার্তা cannot execute binary fileটার্মিনাল সঙ্গে কিছুই করার আছে (আমি ভাবছি কি যে চিন্তা করতে তোমাদের নেতৃত্ব - এবং আমি একটি প্রশ্ন এ ধরনের অনুমানের উপার্জন এড়ানো সুপারিশ, তারা লাল herrings একটি জগাখিচুড়ি আপনার প্রকৃত সমস্যা মজান ঝোঁক)। আসলে, এটি প্রকাশের বাশের উপায় ENOEXEC(আরও সাধারণভাবে প্রকাশ করা exec format error

প্রথমে নিশ্চিত হয়ে নিন যে আপনি দুর্ঘটনাক্রমে স্ক্রিপ্ট হিসাবে এই নির্বাহযোগ্যকে চালানোর চেষ্টা করেন নি। যদি আপনি লিখে থাকেন তবে এটি বাশকে কলিং স্ক্রিপ্টের (একইভাবে পৃথক প্রক্রিয়ার বিপরীতে) একই পরিবেশে . ./executableসম্পাদন করতে বলে ./executable। ফাইলটি স্ক্রিপ্ট না হলে এটি করা যায় না।

অন্যথায়, এই বার্তার অর্থ ./executableকার্নেল স্বীকৃত এমন বিন্যাসে নয়। তবে কি ঘটছে সে সম্পর্কে আমার কাছে কোনও নির্দিষ্ট অনুমান নেই। (এটা যে হতে পারে, কিন্তু এটা আরো সম্ভব) আপনি অন্যভাবে এটা আবাহন করার মাধ্যমে যে একই মেশিনে স্ক্রিপ্টটি রান করতে পারেন, এটি শুধু একটি দূষিত ফাইল বা ভুল স্থাপত্য জন্য একটি ফাইল হতে পারে না। আমি লক্ষ্য করি যে লক্ষ্য বুটগুলি (সম্ভবত একটি রেসের শর্ত) এর মধ্যে কোনও পার্থক্য থাকতে পারে।

সহায়তা করতে পারে এমন অতিরিক্ত তথ্যের একটি তালিকা এখানে রয়েছে:

  • আউটপুট file …/executableসার্ভার বি তে
  • যেমন আউটপুট লক্ষ্য সম্পর্কে কিছু তথ্য, uname -aযদি এটা UNIX মত।
  • পরীক্ষা করে দেখুন যে লক্ষ্য একই ফাইল বিষয়বস্তু প্রতিটি সময় দেখছেন: চালানো cksum ./executableবা md5sum ./executableবা যাই হোক না কেন পদ্ধতি লক্ষ্য ঠিক আগে এখনো আরেকটি কার্যকর-ব্যাশ-স্ক্রিপ্ট পূজা আছে ./executable। পরীক্ষা করে দেখুন যে ফলাফল আপনার সফল ম্যানুয়াল আবাহন মধ্যে এবং সার্ভার বি উপর, হাডসন আবাহন একই
  • যোগ set -xএখনো আরেকটি কার্যকর-ব্যাশ-স্ক্রিপ্ট (শুধু নিচের উপরের #!/bin/bashলাইন)। এই সবকিছু স্ক্রিপ্ট আছে একটি ট্রেস উত্পাদন করা হবে। ট্রেস তুলনা করুন এবং কোন পার্থক্য বা ছিট রিপোর্ট।
  • আপনি যখন স্ক্রিপ্টগুলি ম্যানুয়ালি চালাবেন এবং হডসন জড়িত থাকবেন তখন লক্ষ্য কীভাবে বুট হচ্ছে তা বর্ণনা করুন। এটা হতে পারে যে লক্ষ্য ভিন্নভাবে বুট এবং কিছু লোড করার যোগ্য মডিউল যে বিন্যাস জন্য সমর্থন উপলব্ধ করা হয় ./executableহাডসন আমন্ত্রণ লোড না হয়ে যায় (অথবা এখনও কোনও লোড হওয়া হয় না)। আপনি ব্যবহার করতে চাইতে পারেন set -xলক্ষ্য থেকে অন্য স্ক্রিপ্ট-এ আপনি সেখানে সাহায্য করবেন এবং পরিদর্শন বুট লগ।

যদি স্ক্রিপ্ট রয়েছে "। ./Executable" তারপর আমি এই সমস্যার কোন ব্যাপার কিভাবে স্ক্রিপ্ট বরকত হয় সম্মুখীন না? আমি যখন "./kickOffTests.sh" প্রার্থনা করি তখন টার্গেটে "./executable" চালিত হওয়ার আগে স্ক্রিপ্টগুলির বেশ কয়েকটি স্তর নিচে থাকে। তুমি ডান যে আমি প্রশ্নে অনুমানের করা উচিত নয়, কিন্তু যেহেতু শুধু আলাদা কিভাবে পিতা বা মাতা স্ক্রিপ্ট প্রার্থনা করা হয়, যেখানে একটি উপায় একটি খোলা SSH টার্মিনালে হাতে এবং অন্যান্য হাডসন দ্বারা স্বয়ংক্রিয়ভাবে হয়, এটা মনে হচ্ছে যে পার্থক্য উত্তর মিথ্যা।
jasper77

@ জ্যাস্পার 7777: আমি বুঝতে পেরেছি যে ত্রুটি বার্তায় আমি প্রথমে কী ভাবছিলাম তা বোঝায় না (যদিও আপনার সমস্যাটি টার্মিনালের সাথে সম্পর্কিত তবে সংযোগটি খুব অপ্রত্যক্ষ)। আমার সংশোধিত উত্তর দেখুন, এবং যেমন আপনি যা করতে পারেন প্রস্তাব করা অতিরিক্ত তথ্য যতটা প্রদান করার চেষ্টা করুন।
গিলেজ 'SO- স্টপ হচ্ছে মন্দ'

আমি অন্যদের যে স্ক্রিপ্ট ছিল সুবিধার জন্য মুখোমুখি লাল মানা না করছেন আমি ঠিক কি চিন্তা। গিলস এটি পেরেক দিয়েছিল; এক্সেকিউটেবল একটি ভিন্ন লক্ষ্য জন্য নির্মিত হয়েছে। একটি স্ক্রিপ্টের "মেক-সি" লাইনে আমি একটি টার্গেটের নামটি রেখে দিয়েছিলাম, তাই আমার ইচ্ছা মতো পরিবর্তে ডিফল্ট টার্গেট তৈরি করা হয়েছিল। একবার আমি এটি স্থির করে নিলাম, হাডসন মিনিকোম সেসনটি সফলভাবে চালাতে সক্ষম হবেন। যেহেতু আমি একজন কনসোল আবেদন SSH থেকে চলমান সংক্রান্ত সমস্যায় পরছে হয়েছে, এবং প্রায় 'রপ্তানি শব্দটি = কনসোল' এবং "SSH -t -t" পথ ধরে শিখেছি, আমি বিশ্বাস ছিল আমার সমস্যার ছিল। ধন্যবাদ গিলস!
jasper77

0

আপনি যদি আপনার স্ক্রিপ্টের শীর্ষে শেবাং লাইনটি মিস করছেন তবে এটি ঘটতে পারে। স্ক্রিপ্টটি শুরু হয়েছে তা নিশ্চিত করুন:

#!/bin/bash

এটি কেবলমাত্র যখন আমি সহ স্ক্রিপ্টের দৌড়ে আমার জন্য আপ দেখিয়েছেন sudo -u <user>

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