বন্ধ, কিন্তু ঠিক না।
স্বাধীনভাবে যে কোনও টার্মিনালের
ssh root@remoteserver '/root/backup.sh </dev/null >/var/log/root-backup.log 2>&1 &'
Ssh সকেটের সাথে সংযুক্ত সমস্ত ফাইল বর্ণনাকারী আপনার বন্ধ করতে হবে, কারণ কিছু দূরবর্তী প্রক্রিয়াটিতে সকেট খোলা থাকলে ssh সেশনটি বন্ধ হবে না। আপনি যদি স্ক্রিপ্টের আউটপুটটিতে আগ্রহী না হন (সম্ভবতঃ কারণ স্ক্রিপ্ট নিজেই কোনও লগ ফাইলে লেখার যত্ন নেয়) /dev/null
তবে এটিকে পুনর্নির্দেশ করুন (তবে নোট করুন যে এটি স্ক্রিপ্টটি আরম্ভ করতে না পারার মতো ত্রুটিগুলি আড়াল করবে)।
ব্যবহার nohup
কোন দরকারী প্রভাব এখানে আছে। nohup
প্রোগ্রামটির ব্যবস্থা করে যে এটি যদি প্রোগ্রামটির নিয়ন্ত্রণকারী টার্মিনালটি অদৃশ্য হয়ে যায় তবে এইচইউপি সিগন্যালটি না পাওয়ার জন্য এটি চালিত হয়, তবে এখানে প্রথম স্থানে কোনও টার্মিনাল নেই, তাই কোনও কিছুই নীলের বাইরে প্রসেসের জন্য সিএইচএইচপি প্রেরণ করতে যাচ্ছে না। এছাড়াও, nohup
কোনও ফাইলে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি (তবে স্ট্যান্ডার্ড ইনপুট নয়) পুনর্নির্দেশ করা হয় তবে কেবলমাত্র তারা যদি টার্মিনালের সাথে সংযুক্ত থাকে, যা আবার হয় না।
টার্মিনাল থেকে আলাদা করা হচ্ছে
aaron@localpc$ ssh root@remoteserver
root@remoteserver# nohup /root/backup.sh </dev/null &
nohup: appending output to `nohup.out'
[1] 12345
root@remoteserver# exit
aaron@localpc$
nohup
স্ক্রিনটিকে নিয়ন্ত্রণকারী টার্মিনাল থেকে আলাদা করতে ব্যবহার করুন যাতে টার্মিনাল অদৃশ্য হয়ে গেলে এটি কোনও SIGHUP গ্রহণ না করে । nohup
স্ক্রিপ্টের স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি কোনও ফাইলকে ডায়াল করে যা nohup.out
যদি তারা টার্মিনালের সাথে সংযুক্ত থাকে; আপনাকে নিজেরাই স্ট্যান্ডার্ড ইনপুটটির যত্ন নিতে হবে।
রিমোট টার্মিনাল রাখা
আপনি যদি কমান্ডটি একটি দূরবর্তী টার্মিনালে চলমান রাখতে চান তবে এটি এসএসএইচ সেশনের সাথে সংযুক্ত না থাকে, এটি স্ক্রিন বা টিমাক্সের মতো টার্মিনাল মাল্টিপ্লেজারে চালান ।
ssh root@remoteserver 'screen -S backup -d -m /root/backup.sh'
আপনি পরে সেই টার্মিনালে পুনরায় সংযোগ করতে পারেন যেখানে screen -S backup -rd
সেই মেশিনে রুট হিসাবে অনুরোধ করে স্ক্রিপ্টটি চলছে ।
একটি রিমোট কমান্ড স্বয়ংক্রিয় করা হচ্ছে
কিছুটা ভাল সুরক্ষার জন্য, সরাসরি দূরবর্তী রুট লগইনগুলি খুব বেশি খোলা না। একটি বিশেষ উদ্দেশ্যে কী তৈরি করুন এবং এটিকে একটি বাধ্যতামূলক কমান্ড দিন /root/.ssh/authorized_keys
। সর্বজনীন কী ফাইলের সামগ্রীগুলি AAAA…== wibble@example.com
; কমা-বিচ্ছিন্ন বিকল্পগুলির তালিকা যুক্ত করুন command="…"
যা উল্লেখ করে যে কীটি কেবলমাত্র এই নির্দিষ্ট কমান্ডটি কার্যকর করতে ব্যবহৃত হতে পারে। বিকল্পগুলি এবং কীগুলি এক লাইনে রাখার বিষয়ে নিশ্চিত হন।
command="/root/backup.sh </dev/null >/dev/null 2>/dev/null &",no-port-forwarding,no-agent-forwarding,no-x11-forwarding,no-pty,no-user-rc AAAA…== wibble@example.com