আমি যখন শেলটি বন্ধ করি তখন কি কোনও `scp` স্থানান্তর বন্ধ হয়?


29

আমার scpট্রান্সফার হয়েছে (এক রিমোট সার্ভার থেকে অন্যটিতে), এটি বেশ বড়।

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

উত্তর:


34

বেশ কয়েকটি সমাধান রয়েছে।

পটভূমি এবং প্রক্রিয়া অস্বীকার করুন

  1. দূরবর্তী সার্ভারে ssh টার্মিনাল খুলুন।
  2. scpযথারীতি স্থানান্তর শুরু করুন ।
  3. স্ক্র্যাপ প্রক্রিয়াটির পটভূমি ( Ctrl+ Z, তারপরে কমান্ডটি bg))
  4. পটভূমি প্রক্রিয়া অস্বীকার ( disown)।
  5. সেশনটি সমাপ্ত করুন ( exit) এবং প্রক্রিয়াটি দূরবর্তী মেশিনে চলতে থাকবে।

এই পদ্ধতির একটি অসুবিধা হ'ল stdout এবং stderr এর ফাইল বিবরণকারীগুলিতে এখনও আপনার ssh সেশনের tty এর উল্লেখ থাকতে পারে। আপনি এ কারণে প্রস্থান করার চেষ্টা করার সময় টার্মিনালটি স্তব্ধ হয়ে যেতে পারে। ~.আপনার এসএসএল ক্লায়েন্টকে জোর করে বন্ধ করতে টাইপ করে আপনি এটিকে ঘিরে কাজ করতে পারেন (যে পালানোর ক্রমটি অবশ্যই একটি নতুন লাইন অনুসরণ করবে ... এছাড়াও দেখুন ~?)। আপনি যে প্রক্রিয়াটি পরিত্যাগ করছেন তা যদি স্টডআউট বা স্ট্ডারকে লিখতে থাকে তবে টিটি বাফারটি যদি বেশি ভরে যায় তবে প্রক্রিয়াটি অকালেই প্রস্থান করতে পারে।

একটি স্ক্রিন সেশন তৈরি করুন এবং এটি আলাদা করুন

জিএনইউ স্ক্রিনটি একটি রিমোট টার্মিনাল সেশন তৈরি করতে ব্যবহার করা যেতে পারে যা সেশন থেকে লগ আউট করার পরে আলাদা করে রাখা যেতে পারে এবং সার্ভারে চালিয়ে যাওয়া চালিয়ে যেতে পারে। তারপরে আপনি পরবর্তী তারিখে সার্ভারে আবার লগইন করতে পারেন এবং সেশনে পুনরায় সংযোগ করতে পারেন।

  1. Ssh- র মাধ্যমে রিমোট সার্ভারে লগ ইন করুন।
  2. একটি স্ক্রিন সেশন শুরু করুন screen -D -R <session_name>,।
  3. scpযথারীতি স্থানান্তর শুরু করুন ।
  4. মাধ্যমে স্ক্রীনের অধিবেশন বিচ্ছিন্ন Ctrl+ + Aতারপর d
  5. Ssh সেশনটি সমাপ্ত করুন ( exit)

অধিবেশনটিতে পুনরায় যোগাযোগ করতে:

  1. Ssh- র মাধ্যমে রিমোট সার্ভারে লগ ইন করুন।
  2. স্ক্রিন সেশনে পুনরায় যোগাযোগ করুন, screen -D -R <session_name>

হ্যাঙ্গআপস ছাড়াই কমান্ডটি চালান

উত্তরটি ব্যবহার করে দেখুন nohup

একটি টাস্ক শিডিয়ুলার ব্যবহার করুন

আপনি যদি স্বয়ংক্রিয়ভাবে কাজ করতে চান এমন পর্যায়ক্রমিক ধরণের কাজটি হয় তবে এটিই সেরা সমাধান।

ব্যবহার করুন crontab, atবা batchস্থানান্তর সময়সূচী।


হাই ড্যামিয়েন, উত্তর এবং বিন্যাসের দুর্দান্ত বিভিন্ন জন্য ধন্যবাদ thanks তবে আপনি -D -Rপতাকাগুলি কেন শুরু করবেন তা নির্দিষ্ট করে দিয়েছিলাম screen। আমি ম্যান পৃষ্ঠাটি পড়েছি এবং এটি আমাকে বুঝতে সহায়তা করে নি: -D -R Attach here and now. ...
হ্যালো_এইখানে_আরডি

@hello_there_andy ম্যানুয়ালটিতে উল্লেখ করা হয়েছে যে -ডিআর পরিষ্কারভাবে কী করে। মূলত, আপনার যদি ইতিমধ্যে কোনও স্ক্রিন অধিবেশন চলমান থাকে তবে এটি নতুন সেশন তৈরি করার পরিবর্তে এটিতে পুনরায় যোগাযোগ করবে (কোনও ব্যবহারকারী এসএসএইচ এর মাধ্যমে লগ ইন করলেও - এটি তাদের সরিয়ে দেবে, যা ব্যবহারকারীর কারণে ঝুলতে থাকলে কার্যকর খারাপ নেটওয়ার্ক সংযোগে))
ড্যামিয়েন Ó সিল্লাঘ

1
নোট করুন যে একটি সেশনের নাম উল্লেখ করা alচ্ছিক।
ড্যামিয়েন Ó সিল্লাঘা

ঠিক আছে আমি মনে করি আমি বুঝতে পেরেছি, তবে আমি অনুভব করেছি যে আমি ভেবেছিলাম (সম্ভবত ভুলভাবে) যা ঘটেছে screen -r <session>... তাই এটির -DRচেয়ে আলাদা কি -rএটি তাদের বের করে দিতে পারে? কেবল পুনরায় সংযুক্তি করুন এবং যদি অন্য কোনও ব্যবহারকারী এতে থাকে তবে ব্যর্থ হন।
হ্যালো_এখানে_আরডি

আমি নিশ্চিত হওয়ার জন্য কিছু পরীক্ষা করেছি। -ডি যা করে-ডি করে, তা ব্যতীত এসএসএইচ সংযোগটি বন্ধ করে দেবে (ব্যবহারকারীর লগ আউট) কেবল বিদ্যমান বিদ্যমান স্ক্রিন সেশনগুলি বিচ্ছিন্ন করার পাশাপাশি। -আর অধিবেশনটি পুনরায় পাঠাচ্ছে। -আর একটি বিদ্যমান অধিবেশনটিকে পুনরায় সংযুক্ত করে, তবে এটি উপস্থিত না থাকলে একটি নতুন অধিবেশন তৈরি করবে (-আর পুনরায় যোগাযোগ করার জন্য কোনও সেশন না থাকলে ব্যর্থ হবে)) সুতরাং, আমি আমার আগের বর্ণনায় কিছুটা ভুল ছিলাম।
ড্যামিয়েন Ó সিল্লাঘা

10

আপনি যেমন ব্যবহার করতে পারেন nohup(1), যেমন:

nohup scp alice@source:/the/answer/of/all bob@target.example.com:/var/tmp/42 &

এটি একটি আউটপুট তৈরি করবে nohup.out। তারপরে আপনি নিরাপদে লগআউট করতে পারেন।


&শেষে আমার জন্য উপকার করলেন! ধন্যবাদ!
উইঙ্কলারr

6

হ্যাঁ, এটি বন্ধ হয়ে যাবে। সংযোগ ছাড়াই টার্মিনাল সেশনটি বজায় রাখার সমাধান হ'ল screenপ্রোগ্রাম:

SCREEN(1)                                                            SCREEN(1)

NAME
       screen - screen manager with VT100/ANSI terminal emulation

SYNOPSIS
       screen [ -options ] [ cmd [ args ] ]
       screen -r [[pid.]tty[.host]]
       screen -r sessionowner/[[pid.]tty[.host]]

DESCRIPTION
       Screen is a full-screen window manager that multiplexes a physical ter‐
       minal between several processes (typically interactive  shells).   Each
       virtual terminal provides the functions of a DEC VT100 terminal and, in
       addition, several control functions from the ISO 6429  (ECMA  48,  ANSI
       X3.64)  and ISO 2022 standards (e.g. insert/delete line and support for
       multiple character sets).  There is a  scrollback  history  buffer  for
       each virtual terminal and a copy-and-paste mechanism that allows moving
       text regions between windows.

2

উপরে যেমন বলা হয়েছে, আপনি স্ক্রিন কমান্ডটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

  • স্ক্রিন তৈরি করুন

user@server:~$ screen -S bigscptransfer

  • আপনি এখন পর্দায় আছেন

ser@server:~$ scp bigfile.dat server2:.

  • CTRL+ ব্যবহার করে পর্দাটি আলাদা করুন ApushD

[detached from 5899.bigscptransfer]

  • আপনার যখন এটির প্রয়োজন হবে তখন সেশনটি পুনরায় শুরু করুন:

user@server:~$ screen -r bigscptransfer


-1

নোহপ স্কিপি শিন্টো @ উত্স: / হোম / ডেটা roose@target.example.com: / var / tmp / file

কমান্ডটি সাময়িকভাবে বন্ধ করুন

Ctrl + Z

কমান্ডটি ব্যাকগ্রাউন্ডে রেখে টাইপ করুন:

বিজি

আপনি প্রক্রিয়াটি পরীক্ষা করে দেখতে পারেন:

কাজ

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