ক্রন্টব সিনট্যাক্স; একাধিক কমান্ড


14

আমি ক্রোনজব হিসাবে নিম্নলিখিত কমান্ডের শৃঙ্খলা পেতে চাই:

* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py

এটি কনসোলে কাজ করে, তবে ক্রোনজব থেকে কোনও আউটপুট পাই না।

আমি এই পরামর্শটি এর পরিবর্তে, অনুসরণ করেছিলাম

* * * * * env > /tmp/env.output

env আলাদা কিনা তা খুঁজে বের করতে। PATH পৃথক হওয়া ছাড়াও প্রাসঙ্গিক কিছু খুঁজে পেলাম না। তাই আমি সেট আপ

PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py

এবং এটি এখনও কার্যকর হয়নি। অবশেষে আমি এটি দিয়ে প্রতিস্থাপন

PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output

এবং এবার আমি env.outputফাইলটিও পাইনি । সুতরাং আমি আমার সিনট্যাক্সে কিছু ভুল আছে বলে মনে করি - তবে এটি অনলাইনে পাওয়া মাল্টি-কমান্ড পরামর্শের মতো দেখতে মনে হচ্ছে।

এখানে কি হচ্ছে? যদি এটি সুস্পষ্ট না হয় তবে আমি ত্রুটিটি সনাক্ত করার পরে কী করব?

PATH=/usr/local/anaconda2/envs/myenv3/bin:~/.conda:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

out.err:

/bin/sh: 6: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
/bin/sh: 15: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
/bin/sh: 17: /usr/local/anaconda2/envs/myenv3/bin/activate: [[: not found
Only bash and zsh are supported

উত্তর:


16

উবুন্টুতে, ডিফল্টরূপে, cronডিমন sh( dash) শেল ব্যবহার করে সমস্ত কাজ চালায় এবং এতে অন্তর্নির্মিত dashথাকে না source

আপনাকে পসিক্স উপায়ে ব্যবহার করতে হবে যেমন .:

* * * * * . activate myenv3 && cd ~/foo/bar && python sssb.py

পর্যায়ক্রমে, আপনি যুক্তি হিসাবে কাজটি চালাতে পারেন bash:

* * * * * "$(command -v bash)" -c 'source activate myenv3 && cd ~/foo/bar && python sssb.py'

এখন আমার কাছে আবার একটি /tmp/env.output ফাইল রয়েছে, তবে এখনও মূল ফাইল থেকে কোনও আউটপুট নেই।
ফুবার

1
@ ফুবার কি ফলাফল grep SHELL /tmp/env.output? এছাড়াও প্রথম কাজটি চালান * * * * * ( . activate myenv3 && cd ~/foo/bar && python sssb.py ) >/tmp/out.err 2>&1এবং /tmp/out.err
16

এটি বলছে শেল = / বিন / শ। আমি আউটপুট out.errআটকিয়ে দেব এবং আসল প্যাথ আমি প্রশ্নটিতে আটকালাম।
ফুবার

1
আপনার এনক্যাপসুলেশনের জন্য +1 ব্যবহার করে $(command -v bash) -c ' ... '- পুরো টিগাবু ডাব্লু / ও (অদৃশ্য নয়) অগোছালো বিশদে .ুকে পড়ার সমাধান করে।
সিবিহে

1
কমান্ড -v অংশটি "$(command -v bash)" -c '...'অর্থহীন। শুধু করুনbash -c '...'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.