এসএসএইচে একটি নোহপ কমান্ড চালান, তারপরে সংযোগ বিচ্ছিন্ন করুন


46

আমি start.shকোনও রিমোট সার্ভারে একটি স্ক্রিপ্ট কার্যকর করতে চাই যা এটি চালায়:

nohup node server.js &

নির্লজ্জভাবে, আমি এসএসএইচকে এইভাবে ডাকি:

ssh myserver <<EOF
./start.sh &
EOF

এটি স্ক্রিপ্ট শুরু করে তবে সেশনটি সংযুক্ত রেখে দেয়। আমি একটি স্ক্রিপ্টে অন্যান্য কমান্ডের সাথে এই পদক্ষেপটি অনুসরণ করতে চাই, সুতরাং এটি কোনও ভাল নয়।

আমি কীভাবে দূরবর্তী মেশিনে এসএসএইচ করতে পারি, nohupপটভূমিতে একটি কমান্ড চালু করতে পারি , তারপরে সংযোগ বিচ্ছিন্ন করতে পারি? আমি মনে করি আমি এসএসএইচ প্রক্রিয়াটি নিজেই ব্যাকগ্রাউন্ডে রেখে দিতে পারি, তবে এটি সঠিক বলে মনে হচ্ছে না।

উত্তর:


40

আপনি ইতিমধ্যে এখানে সঠিক নথিটি খুঁজে পেয়েছেন।

দ্রষ্টব্য : আপনি একটি & শেষে রেখে ssh (ক্লায়েন্ট) ব্যাকগ্রাউন্ডে রাখতে পারেন, তবে আপনি আউটপুটটি দেখতে পাবেন না। আপনি যদি সত্যিই এটি করতে চান তবে আপনাকে যদি রিমোট হোস্টের কাছ থেকে প্রতিক্রিয়া পরীক্ষা করতে হয় তবে স্টাডাউট / স্ট্ডারকে কোনও ফাইলে পুনর্নির্দেশ করুন।

মূলত আপনি এটি যে কোনও উপায়ে করতে পারেন:

সরাসরি কমান্ডটি চালান {, s run

ssh user@host "nohup command1 > /dev/null 2>&1 &; nohup command2; command3"

অথবা

ssh user@host "$(nohup command1 > /dev/null 2>&1 &) && nohup command2 >> /path/to/log 2>&1 &"

দ্রষ্টব্য : &&দ্বিতীয়টি কার্যকর করার পূর্বে প্রথম কমান্ডের 0 ফিরে আসতে হবে

এখানে নথি ব্যবহার করুন

ssh user@host << EOF
nohup command1 > /dev/null 2>&1 &
nohup command2 >> /path/to/command2.log 2>&1 &
......
EOF

উপরের 3 টি বিকল্পগুলি আপনার পক্ষে কাজ করা উচিত।

এছাড়াও, উত্তরটি এখানে একবার দেখুন: https://askubuntu.com/a/348921/70270


ধন্যবাদ - সুতরাং আমি যে বিটটি অনুপস্থিত ছিল তা সত্যিই ছিল > /dev/null
স্টিভ বেনেট

সত্যিই নয়, > /dev/null 2>&1ব্ল্যাকহোলের লোকে পুনর্নির্দেশের মাধ্যমে কোনও স্টডআউট / স্টার্ডার আউটপুট বাতিল করা হবে
টেরি ওয়াং

5
নোট করুন যে আমি লগ ফাইলগুলিতে লেখার জন্য কেবল> পরিবর্তে >> ব্যবহার করার পরামর্শ দেব। অন্যথায়, আপনি কেবল খুব শেষ রান থেকে ত্রুটিগুলি পাবেন।
অ্যালেক্সিস উইলক

এটি কি সঠিক যে আমি যদি কেবল nohup command2 >> /path/to/command2.log 2>&1 &একটি টার্মিনালের মতো একটি কমান্ড শুরু করি এবং টার্মিনালটি বন্ধ করি যে প্রক্রিয়াটি হারিয়ে গেছে?
লুক

1
দ্বিতীয় উদাহরণ @TerryWang সাথে কাজ করবে না এম্পারসেন্ড ডবল এম্পারসেন্ড দ্বারা অনুসরণ, দেখুন unix.stackexchange.com/q/67006/86716
tsionyx

7

কেন শুধু টিএমক্স বা স্ক্রিন নয় এবং এটি দিয়ে করা হবে? উদাহরণ স্বরূপ:

$ tmux new -s SessionNameHere
$ nohup /path/to/your/script.sh

এটি ব্যবহারিক যদি এটি এমন কিছু হয় যা ধারাবাহিকভাবে লুপ হয়ে যায় বা শেষ করতে কিছুটা সময় নেয়। আপনি অধিবেশন থেকে সংযোগ বিচ্ছিন্ন করতে পারেন এবং এটি সক্রিয় থাকবে।


2
আমি যা চাইছি তা আসলেই ফিট করে না, যা আমার ল্যাপটপে চালানো যেতে পারে এমন একক আদেশ, যা সংযোগ করবে, একটি আদেশ জাল করবে, তারপরে সংযোগ বিচ্ছিন্ন করবে।
স্টিভ

3
ssh node "nohup sleep 10 &"

আপনার ssh সেশনটি সংযুক্ত রেখে ডিমন মোডে চলছে না। আপনি nohup ব্যবহার করা সত্ত্বেও Ssh অধিবেশন 10 সেকেন্ডে ফিরে আসবে।

কারণটি হ'ল দূরবর্তী স্টাডাউট এবং স্ট্ডার এখনও আপনার সেশনের সাথে সংযুক্ত। এটি ssh অধিবেশনকে বাঁচিয়ে রাখে, নোহুপ সাহায্য করবে না।

এই:

ssh node "nohup sleep 10 1>/dev/null 2>/dev/null &"

অবিলম্বে ফিরে। এটি nohup দিয়ে দূরবর্তী প্রক্রিয়া শুরু করে এবং তত্ক্ষণাত্ ssh অধিবেশন থেকে প্রস্থান করে।


এটা ঠিক আমাদের সমস্যা ছিল। আমাদের কাছে কেবল 1> ফাইল.লগ ছিল। এক মেশিনে থাকা এসএসএস আটকে গিয়েছিল। 'নোড' মেশিনে প্রক্রিয়া চলছে। ক্লোজিং & এর ঠিক আগে যখন আমরা একটি 2> & 1 যুক্ত করেছি, তখন এসএসএস সংযোগ বিচ্ছিন্ন হয়ে যায়।
লি মায়াদোর

2

খাটো ফর্ম:

ssh host "(command 1; command 2; ...) &>/dev/null &"

এটি উপস্থিত হয়, বাশ নিজেই টার্মিনাল থেকে বিচ্ছিন্নতা সম্পাদন করে, তাই কোনও নোপআপের প্রয়োজন নেই। আমি উবুন্টু 14.04 x86_64, বাশ 4.3.11 চালাচ্ছি।


1
এটি প্রশ্নের উত্তর দেয় না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন - আপনি সর্বদা আপনার নিজের পোস্টে মন্তব্য করতে পারেন, এবং আপনার যথেষ্ট সুনামের পরে আপনি কোনও পোস্টে মন্তব্য করতে সক্ষম হবেন । - পর্যালোচনা থেকে
ডেভিড ফয়েস্টার

এটি কাজ করে না বলে মনে হচ্ছে। nohup; শুধু অনুপস্থিত যুক্তি সম্পর্কে অভিযোগ আউটপুট করে।
স্টিভ বেনেট

@ ডেভিডফোরস্টার, কোনও ধারণা নেই কেন, যদি command 1; command 2; ...স্ক্রিপ্টের প্রতিনিধিত্ব করে ওপি চালাতে চায়। ওপি এই উত্তরের বিশেষ ssh myserver ./start.sh &>/dev/null &
কেসটিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.