ক্রোন দিয়ে স্ক্রিপ্ট চালানোর সময় "কমান্ড পাওয়া যায় নি"


29

আমি আমার স্ক্রিপ্টটি ক্রন্টবায় চালাতে চাই, তবে আমার কিছু সমস্যা আছে ...

আমার স্ক্রিপ্টে আমি এই আদেশটি চালাচ্ছি:

db2 connect to myDB2

আমি এটি db2inst1 ব্যবহারকারী হিসাবে চালানোর সময় এটি ঠিকঠাক কাজ করে তবে db2inst1 crontab এ এই স্ক্রিপ্টটি চালানোর সময় আমি এইটি পাই:

db2: কমান্ড পাওয়া যায় নি।

আমি কীভাবে এটি সমাধান করতে পারি?

উত্তর:


43

কোনও কমান্ডের নিখুঁত পাথ টাইপ না করা, শেলগুলি $PATHপরিবেশের পরিবর্তনশীল প্রবর্তন করে , প্রতিটি ডিরেক্টরি একটি দ্বারা পৃথক করা হয় :এবং বাম থেকে ডানে অনুসন্ধান করা হয়। cronএই $PATHপরিবর্তনশীল সহ প্রায়শই পুরো পরিবেশ সাফ করে । সুতরাং, স্ক্রিপ্ট শেলের আচরণের তুলনায় আপনার ক্রোনটিতে আলাদাভাবে আচরণ করতে পারে।

পরম পাথ ব্যবহার করুন

প্রোগ্রামটির পুরো পথ পেতে ব্যবহারকারী which db2হিসাবে চালান । যদি আউটপুট হয় তবে আপনার ক্রোন কমান্ডটি দেখতে পাবেন:db2inst1db2/usr/bin/db2

/usr/bin/db2 connect to myDB2

PATH ভেরিয়েবল সেট করুন

ভেরিয়েবলটি পেতে ব্যবহারকারী echo "$PATH"হিসাবে চালান এবং আপনার ক্রোন স্ক্রিপ্টে এই পরিবর্তনশীলটি উপলব্ধ কিনা তা নিশ্চিত করুন। উদাহরণস্বরূপ, যদি আউটপুটটি হয় তবে আপনি আপনার শেল স্ক্রিপ্টের শীর্ষে পরবর্তী লাইনটি রাখবেন:db2inst1$PATH/usr/local/bin:/usr/bin:/bin

export PATH="/usr/local/bin:/usr/bin:/bin"

8

Https://askubuntu.com/a/23438/227839 তে উত্তর হিসাবে , PATHআপনার শেল স্ক্রিপ্টে সেট করা উচিত :

#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"

# rest of script follows

বা ক্রন্টব ফাইলটিতে, যা সমস্ত ক্রোন কাজের ক্ষেত্রে প্রযোজ্য:

PATH="/usr/local/bin:/usr/bin:/bin"
0 1 * * * db2 connect to myDB2

ধন্যবাদ, এটি সহায়ক ছিল!
ইয়ামাসিরো রিওন

3

আপনি কি সংজ্ঞায়িত করতে হবে DB2 এবং myDB2 হয়, না হলে 'পরম অবস্থান ব্যবহার ফাইল ' বা ' আবেদন ' যা চালাতে চান।

উদাহরণ:

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