রিমোট একাধিক মেশিন রিবুট করুন


11

আমার দূরবর্তী অবস্থান থেকে বেশ কয়েকটি মেশিন পুনরায় বুট করা দরকার। সাধারণত আমি কেবল ইস্যু করি

for host in <hostlist>;do ssh ${host} 'sudo shutdown -r now';done

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

ssh -f 'sudo shutdown -r +5 &;disown'

আমি একটি ত্রুটি বার্তা পেয়েছি:

বাশ: -সি: লাইন 0: অপ্রত্যাশিত টোকেন ;' bash: -c: line 0:সুডো শাটডাউনের কাছে সিনট্যাক্স ত্রুটি -আর +5 & অস্বীকার '

কোন পরামর্শ?


1
আমার যুক্ত করা উচিত যে আমি "&" এর সাথে ব্যাকগ্রাউন্ডে শাটডাউন কমান্ডটি প্রেরণের চেষ্টা করছি। যদি শেলটি "&" কে কমান্ড বিভাজক হিসাবে ব্যাখ্যা করে থাকে তবে আমি কীভাবে এটি পটভূমিতে প্রেরণ করব তা সম্পর্কে স্ট্যাম্পড হয়েছি যাতে "অস্বীকৃত" কমান্ড কাজ করে।
হোরেস

&চরিত্র পটভূমিতে বাম দিকে কমান্ড পাঠাতে পারে। এটি এর থেকে আলাদা হয় ;
ক্যাস্পারড

উত্তর:


31

ত্রুটি বার্তার দ্বারা বর্ণিত হিসাবে, আপনার কমান্ডে একটি সিনট্যাক্স ত্রুটি রয়েছে। এটি সামান্য অবাক করা সত্যের কারণে যা &শেল কমান্ডের অংশ নয়, বরং কমান্ডের মধ্যে পৃথককারী (যেমন ;হয়)। যদিও উভয়ই কমান্ড বিভাজকগুলির &বাম হাতের কমান্ডটিতে একটি অতিরিক্ত প্রভাব রয়েছে। এটি অবশ্যই আমাকে মাঝে মাঝে বিভ্রান্ত করে এবং আমি প্রায়শই একই ভুল করি। একবার আপনি এটি জানেন, তবে এটি ঠিক করা সহজ।

ফিক্সটি লিখতে &;নয় বরং কেবল আপনার অভিপ্রায় অনুসারে দুটি বিভাজকের মধ্যে একটি লিখুন। (এবং বেশিরভাগ ক্ষেত্রে যেখানে কেউ লিখেছিলেন &;উদ্দেশ্যটি কেবল লেখার জন্য &)।

এই কাজ করা উচিত:

ssh server 'sudo shutdown -r +5 & disown'

7
ইউএনআইএক্সের 25 বছর বকশির পরে আমাকে এমন কিছু শেখানোর জন্য আপনি আজকের পুরষ্কারটি জিতেন। এছাড়াও +1!
ম্যাডহ্যাটার

যদি সে sudo shutdown -r +5 &ব্যাকগ্রাউন্ডে দৌড়াতে এবং তারপরে দৌড়াতে চায় disown? বাশ কীভাবে এমন পরিস্থিতি সামাল দেবে? আমি এটি কমান্ডের জন্য নিখুঁত বাক্য গঠন হিসাবে প্রত্যাশা করব , এমনকি আছে &;। যদি ;কমান্ড বিভাজক হয় তবে আপনার হাতে দুটি কমান্ড রয়েছে। রাইট?
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল আমি আপনার প্রশ্নটি পাই না। ব্যবহারটি &পটভূমিতে প্রথম কমান্ডটি শুরু করবে এবং প্রথম কমান্ডটি শুরু হওয়ার পরে দ্বিতীয় কমান্ডটি অগ্রভাগে চালিত হবে।
ক্যাস্পারড

আমি বোঝাতে চাইছি এটি sudo shutdown -r +5 &; disownখারাপ সিনট্যাক্সের মতো মনে হচ্ছে না। আমি বলতে চাইছি, আমার উদ্দেশ্যটি প্রথম অংশটি পটভূমিতে এবং তারপরে ২ য় অংশ চালানো হতে পারে।
ইসমাইল মিগুয়েল

@ ইসমাইলমিগুয়েল কমান্ড পার্সারটি সম্ভবত খালি স্ট্রিংকে একটি বৈধ কমান্ড হিসাবে বিবেচনা করতে বাড়ানো যেতে পারে যা সর্বদা সফল হয়। যে ক্ষেত্রে sudo shutdown -r +5 &; disownতিন বৈধ দ্বারা পৃথক কমান্ড হিসেবে বিবেচনা করা হবে &এবং ;। তবে এর অর্থ হ'ল পূর্ববর্তী কমান্ডের বিদ্যমান অবস্থাটি ব্যবহার করতে গেলে অতিরিক্ত বিভাজকটি ব্যবহার না করার বিষয়ে সতর্ক থাকতে হবে। মানে কী এক উদাহরণস্বরূপ যেহেতু পাশাপাশি tokenizing দিতে নজরে আছে &&এবং & &ভিন্নভাবে tokenized পায়।
ক্যাস্পার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.