SSH සැසිය විසන්ධි කිරීමෙන් පසුව ක්‍රියාවලි දිගටම කරගෙන යන්න


216

මට සමහර විට ගෙදර යාමට පෙර ආරම්භ කිරීමට අවශ්‍ය දිගු ක්‍රියාදාමයන් ඇත, එබැවින් ක්‍රියාවලිය ආරම්භ කිරීම සඳහා මම සේවාදායකයට SSH සැසියක් සාදමි, නමුත් පසුව මට අවශ්‍ය වන්නේ මගේ ලැප්ටොප් පරිගණකය වසා දමා ගෙදර යාමට සහ පසුව රාත්‍රී ආහාරයෙන් පසු මට අවශ්‍යය රැකියාවෙන් ඉවත් වීමට පෙර මා ආරම්භ කළ ක්‍රියාවලිය පරීක්ෂා කරන්න. SSH සමඟ මා එය කරන්නේ කෙසේද? මගේ අවබෝධය නම්, ඔබ ඔබේ SSH සම්බන්ධතාවය බිඳ දැමුවහොත් ඔබ සේවාදායකයේ පිවිසුම් සැසියද බිඳ දමනු ඇති අතර එම නිසා දිගුකාලීන ක්‍රියාවලිය විනාශ වේ.

Answers:


217

nohupඔබගේ ක්‍රියාවලිය එල්ලීමේ සං signal ාව නොසලකා හැරීමට භාවිතා කරන්න :

$ nohup long-running-process &
$ exit

24
මේ එයයි. තිරය ​​හෝ ටීඑම්එක්ස් ස්ථාපනය කිරීම අවශ්‍ය නොවේ. මෙය ඇත්ත වශයෙන්ම එය කිරීමට හොඳ පැරණි ක්‍රමයයි. 'තිරය' හෝ 'tmux' යන දෙකම විස්මිත යෙදුම් වන අතර ඒවා අවශ්‍ය විටෙක භාවිතා කළ යුතුය, නමුත් ඔබට පිටවිය හැකි පසුබිමක ක්‍රියාවලියක් ක්‍රියාත්මක කිරීම තරම් සරල, ඉහත සඳහා යන්න.
රීච්

3
නොහප් ප්‍රතික්ෂේප කිරීමක් වගේද?
cjac

31
ඔවුන්ට සමාන අරමුණු ඇත, නමුත් ඒවා බොහෝ ආකාරවලින් වෙනස් වේ. nohupSIGHUP වලට බාධා පමුණුවන අතර එය ධාවනය කළ කවචය ඉවත්ව SIGUP එහි දැනට ක්‍රියාත්මක වන සියලුම දරුවන්ට යවන විට long-running-processමිය නොයනු ඇත. disownහුදෙක් බාෂ්ගේ ළමා ලැයිස්තුවෙන් නිශ්චිත රැකියාව ඉවත් කරයි, එබැවින් එය කිසිසේත් SIGHUP යැවීමට උත්සාහ නොකරනු ඇත. nohupයනු කවචයෙන් වෙන් වූ වැඩසටහනකි, එබැවින් එය සියලු ෂෙල් වෙඩි සමඟ ක්‍රියා කරයි, නමුත් disownබාෂ් බිල්ඩින් වේ. nohupක්‍රියාත්මක කිරීම සඳහා වන විධානය පිළිගන්නා අතර, disownවැඩ ආරම්භ කිරීමෙන් පසුව පමණක් ඔබ එය පසුබිම් කර ඇති බැවින් ඔබට නැවත කවචයට පිවිසිය හැකිය.
වොරන් යං

3
නොහූප් සහ ප්‍රතික්ෂේප කිරීම පිළිබඳ නුහුරු අය සඳහා පුදුමාකාර ඉක්මන් සමාලෝචනයක් - මෙන්ම පර්යන්ත සැසි සමඟ ගනුදෙනු කිරීමට පහසු ක්‍රම කිහිපයක් serverwatch.com/tutorials/article.php/3935306/…
Dan

7
tail -f nohup.outඔබ ආපසු පැමිණි විට සිදුවන්නේ කුමක්ද යන්න පරීක්ෂා කිරීමට.
රිකාඩෝ ස්ටුවන්

143

ඔබට GNU තිරය භාවිතා කිරීමට අවශ්‍යයි. එය නියමයි!

ssh me@myserver.com
screen               #start a screen session
run-a-long-process

CTRL+ a, dඔබගේ තිර සැසියෙන් ඉවත් වීමට

exit                 #disconnect from the server, while run-a-long-process continues

ඔබ නැවත ඔබේ ලැප්ටොප් පරිගණකයට පැමිණෙන විට:

ssh me@myserver.com
screen -r            #resume the screen session

ඔබේ දිගුකාලීන ක්‍රියාවලියේ ප්‍රගතිය පරීක්ෂා කරන්න!

screenඉතා පුළුල් මෙවලමක් වන අතර, මා විස්තර කළ දෙයට වඩා බොහෝ දේ කළ හැකිය. තිර සැසියක සිටියදී, ctrl + a ,? පොදු විධාන කිහිපයක් ඉගෙන ගැනීමට. බොහෝ විට වඩාත් පොදු වන්නේ:

  • CTRL+ a, cනව කවුළුවක් සෑදීමට
  • CTRL+ a, nඔබගේ තිර සැසියේ ඊළඟ කවුළුව වෙත මාරුවීමට
  • CTRL+ a, pඔබගේ තිර සැසියේ පෙර කවුළුව වෙත මාරු වීමට
  • ඔබ විවිධ පද්ධති සමූහයකින් ලොග් වුවහොත්, ඔබ වෙනත් පරිගණකයක ක්‍රියාකාරී තිර සැසියකට අහම්බෙන් සම්බන්ධ වී ඇති. එම හේතුව නිසා, screen -d -rමගේ තිර සැසියට වෙනත් කවචයක් ඇමිණී ඇත්නම්, එය මගේ වර්තමාන පද්ධතියේ නැවත ආරම්භ කිරීමට පෙර එය වෙන් කරනු ඇති බව සහතික කිරීම සඳහා මම සෑම විටම නැවත ආරම්භ කරමි .

8
tmux යනු තිරයේ නවීන ප්‍රතිසමයක්.
zvolkov

නවීන, නමුත් tmux (Ctrl + b) හි පෙරනිමි යතුරු උපසර්ගය ඔබ යතුරු / ඊමැක්ස් යතුරු භාවිතා කිරීමට පුරුදු වී සිටී නම් උපකාරී වේ.
සජිත්

2
කිසියම් හේතුවක් නිසා ඔබට හවුල් පර්යන්තයක් අවශ්‍ය නම් තිරය ලස්සනයි. තිරයක් සාදා screen -S nameඔබේ අනෙක් මිතුරා සමඟ සම්බන්ධ වීමට ඉඩ දෙන්න screen -x name.
පැට්‍රික්

1
tmuxwith tmuxinatorයනු විසිතුරු සැකසුම් සඳහා විශිෂ්ට සංයෝජනයක් වන අතර මම screenඉක්මන් හා සරල විසඳුමක් ලෙස කැමැත්තෙමි .
earthmeLon

මෙම පිළිතුර හොඳම එකයි .. මම එයට කැමතියි. විශිෂ්ට පර්යේෂණ
ජැෆර් විල්සන්

42

ඔබ කල්තියා සැලසුම් කර නොමැති නම් screenපහත සඳහන් දේ කරන්න:

  1. ඔබගේ ක්‍රියාවලිය පසුබිමේ ක්‍රියාත්මක වන්නේ නම්: ගොටෝ # 3, වෙනත්: Ctrl-Zපෙරබිම් ක්‍රියාවලිය අත්හිටුවීමට. මෙය අත්හිටවූ ක්‍රියාවලියේ # කාර්යය වාර්තා කරයි, උදාහරණයක් ලෙස:

    [1]+  Stopped                 processName
    
  2. processNameපසුබිම වෙත යවන්න bg %1(රැකියාව # අනුගමනය කරන ඕනෑම දෙයක් භාවිතා කරමින් %). මෙය processNameපසුබිමේ නැවත ආරම්භ වේ.

  3. වෙනුවෙන් කැප processName සමග disown %1හෝ disown PID. -hඔබගේ වර්තමාන කවචය අවසන් වන තුරු ඔබට හිමිකාරිත්වය පවත්වා ගැනීමට අවශ්‍ය නම් ධජය භාවිතා කරන්න .


5
මේ සඳහා ස්තූතියි! මට රැකියාවක් ක්‍රියාත්මක වූ අතර &එය ආරම්භ කිරීමට මා භාවිතා නොකළ නිසා මට එය දිගටම කරගෙන යා නොහැකි යැයි සිතුවෙමි . මෙය විශිෂ්ට ලෙස ක්‍රියාත්මක වන බව පෙනේ!
මැට්

4
මෙය පුදුම සහගතයි! මේ වගේ ක්‍රියාකාරී ක්‍රියාවලි පාලනය කිරීමට ලිනක්ස් ඔබට ඉඩ දෙන බව මම දැන නොසිටියෙමි. එස්එස්එච් දිගු සේවාදායක ක්‍රියාවලියක් අතරතුර මගේ සේවාදායකයට ඇතුළු වන අතරතුර මගේ බැටරිය මිය යනු ඇතැයි මම බිය වූ අතර මෙය මට පිළිතුර විය!
ප්ලූටෝ

15

ඔබට භාවිතා කිරීමට අවශ්‍ය වන්නේ තිරය හෝ ඊටත් වඩා හොඳ පරිශීලක-හිතකාමී එතුම තිරය වටා බයෝබු ලෙස හැඳින්වීමයි.

එකම ssh සැසිය තුළ බහු අථත්‍ය පර්යන්ත සැසි ධාවනය කිරීමට තිරය ඔබට ඉඩ දෙයි. ඒ නිබන්ධනය සහ උදව් පිටු ලබා ගත හැකිය.

byobu යනු ctrl-a වෙතින් යතුරු සංයෝජනය වෙනුවට සරල ක්‍රියාකාරී යතුරක් සමඟ නව තිර පහසුවෙන් විවෘත කිරීමට ඉඩ සලසන එතීමකි . එය නම් කළ හැකි සියලුම විවෘත අථත්‍ය පර්යන්ත සමඟ තත්ව රේඛාවක් පෙන්වයි.

තවත් කදිම ලක්‍ෂණයක් නම් ඔබගේ ssh සම්බන්ධතාවය විසන්ධි වී ඇති අතරතුර ඔබගේ සියලු තිරය රැඳී සිටිය හැකි වීමයි. ඔබ යළිත් ssh හරහා සම්බන්ධ වී බයිබු අමතන්න, සියල්ල පෙර මෙන් ය.

අවසානයේදී බයෝබු හි තිරපිටපත් කිහිපයක්.


මම මගේ සේවාදායකයේ ක්‍රියාවලිය කුමක්දැයි නොදැන බයෝබු ටර්මිනලය තුළ දියත් කළෙමි (මම ටර්මිනලය සෙවූ අතර බයෝබු මත ක්ලික් කළෙමි. පතුලේ වර්ණවත් තත්ව තීරුවක් ඇති නිසා මම එය දිගටම භාවිතා කළෙමි. අද මට එස්එස්එච් හරහා දුරස්ථව එම පර්යන්ත සැසියට පිවිසීමට අවශ්‍ය බව මට පෙනී ගියේය. මට කළ යුතුව තිබුණේ "බයිබු" ටයිප් කිරීම පමණක් වන අතර එයින් පෙන්නුම් කළේ එම පර්යන්ත සැසිය එකවරම බවයි. ඇත්තෙන්ම සතුටුයි මම බයිබු හරහා පැකිලුණා!
nick

9

එය සඳහන් කිරීම වටී

ssh -t lala screen -rxU mooසත්කාරක ලාලා හි moo සැසියට අමුණා ඇත

ssh -t lala screen -S mooසත්කාරක ලාලා හි moo සැසිය නිර්මාණය කරයි

හා

ssh -t lala screen -S moo quuxමෙම නිර්මාණය කරනු ඇත මූ ධාරකය මත සැසිය lala හා වැඩසටහන ක්රියාත්මක quux , අවසන් දින සැසිය අත්හැරීම,.


4

පරණ ප්‍රශ්නය, අමුතු තවමත් කිසිවෙකු tmux වෙත උපදෙස් දී නැත , එය n කොන්සෝල සඳහා එතීමක් ලෙස ක්‍රියා කරන අතර අවශ්‍ය වන තෙක් ඒවා විවෘතව තබයි. Tmux සතුව ඇති කාර්යයන් ගණනාවක් හැරුණු විට මෙය වැඩි පාලනයක් සඳහා ඉඩ ලබා දේ. එය කළමනාකරණය කිරීම පහසුය, ඔබ tmux ක්‍රියාත්මක කරයි, එය ඔබව එහි කවචයට ගෙන එනු ඇත, ඔබේ දිගු කාර්යය ආරම්භ කරන්න, ඉන්පසු ctrl + b ඔබන්න d (detach) ඔබන්න ( ctrl+btmux හි "හරි ගූගල්" වන අතර dඑය වසා දැමීමේ විධානය වේ කවචයෙන් පිටවීමකින් තොරව). ඔබ ඇත්ත වශයෙන්ම වසා දැමුවහොත් මෙය සැබවින්ම ක්‍රියාත්මක වේ. රාත්‍රී ආහාරයෙන් පසු, ඔබ නැවත සම්බන්ධ වන විට, tmux attachඔබ පිටත්ව ගිය ආකාරයටම ඔබේ තිරය බැලීමට tmux නැවත විවෘත කළ හැකිය . මම ආදරය කරන දෙයක් වන්නේ කවුළුව බෙදීමයි: ctrl+bඉන්පසු ඔබන්න ". එක් කවුළුවක සිට තවත් කවුළුවකට වෙනස් කිරීමට, ctrl+bපසුව ඉහළ / පහළ ඊතලය ඔබන්න.


4

ඔබට මෙහි හොඳ මාර්ගෝපදේශයක් සොයාගත හැකිය: ඔබ විසන්ධි කරන විට ඔබේ SSH සැසිය දිගටම පවත්වා ගන්න

sudo apt-get install screen

විධාන රේඛාවේ තිරය ටයිප් කිරීමෙන් ඔබට දැන් නව තිර සැසියක් ආරම්භ කළ හැකිය. තිරය ​​පිළිබඳ යම් තොරතුරු ඔබට පෙන්වනු ඇත. Enter යතුර ඔබන්න, එවිට ඔබ සාමාන්‍ය විමසුමකට පැමිණෙනු ඇත.

විසන්ධි කිරීමට (නමුත් ධාවනය වන සැසිය තබන්න) හිට් Ctrl+ Aපසුව Ctrl+ Dවහාම අඛණ්ඩව. [වෙන්වූ] පණිවිඩය ඔබට පෙනෙනු ඇත

දැනටමත් ක්‍රියාත්මක සැසියකට නැවත සම්බන්ධ වීමට

screen -r

පවතින සැසියකට නැවත සම්බන්ධ වීමට හෝ කිසිවක් නොමැති නම් නව එකක් සාදන්න

screen -D -r

ධාවනය වන තිර සැසියක් තුළ නව කවුළුවක් නිර්මාණය කිරීම සඳහා පහර Ctrl+ Aඉන්පසු Cවහාම අනුපිළිවෙලින්. ඔබට නව විමසුමක් පෙනෙනු ඇත.

එක් තිර කවුළුවක සිට තවත් පහරකට මාරුවීමටCtrl + Aඉන්පසු Ctrl+ Aවහාම අනුපිළිවෙලින්.

විවෘත තිර කවුළු ලැයිස්තු ගත කිරීම සඳහාCtrl + පහර + Aඉන්පසු Wවහාම අනුපිළිවෙලින්


<kbd>Ctrl</kbd>යතුරුපුවරු යතුරු ලෙස නම් පෙන්වීමට ඔබට භාවිතා කළ හැකිය .

2

මම NX NoMachine භාවිතා කරමි, එය මට පමණක් වන බැවින් එය මට පමණි. අත්යවශ්යයෙන්ම, එය සේවාදායකයේ X සැසියක් ක්රියාත්මක කරන අතර එය ඔබට නැවත නැවත සම්බන්ධ කළ හැකිය. ඔබ සම්බන්ධ නොවූ විට X සැසිය දිගටම ක්‍රියාත්මක වේ. ඕනෑම තැනක සිට සම්බන්ධතා ඇති කළ හැකිය. ඔබට පාවෙන කවුළු හෝ සම්පූර්ණ ඩෙස්ක්ටොප් එකක් සහිත තනි කවුළුවක් අතර තෝරා ගත හැකිය (උදා: සම්පූර්ණ ග්නෝම් ඩෙස්ක්ටොප් එකක්). සේවාදායකයා (ඔබ ඔබේ ලැප්ටොප් පරිගණකයේ ධාවනය කරන) ලිනක්ස්, මැකෝස්, සොලාරිස් හෝ මයික්‍රොසොෆ්ට් වින්ඩෝස් මත ධාවනය කළ හැකිය. අවසාන අවස්ථාවේදී ඔබ පාවෙන කවුළු තෝරා ගන්නේ නම් ඒවා වින්ඩෝස් කාර්ය තීරුවේ තනි තනිව දිස් වේ.

මම මගේ වින්ඩෝස් එක්ස්පී ලැප්ටොප් පරිගණකය (මා සතුව ඇති සමහර වින්ඩෝස් විශේෂිත දෘඩාංග සඳහා අවශ්‍යයි) මගේ ලිනක්ස් සේවාදායකයන් දෙක සඳහා ඉදිරිපස කෙළවරක් ලෙස එන්එක්ස් නෝමචයින් භාවිතා කරමි. මගේ වින්ඩෝස් ලැප්ටොප් එකට අමුණා ඇති මුද්‍රණ යන්ත්‍රයට ලිනක්ස් වෙතින් මුද්‍රණය කළ හැකිය.


1

Tmux යනු ඔබේ දිගුකාලීන ක්‍රියාදාමයන් පසුබිම තුළ ක්‍රියාත්මක කිරීමට ඇති හොඳ විකල්පයකි.

ගූගල් වලාකුළු වේදිකාවේ VM නිදර්ශන / සේවාදායකය මත (OS: උබුන්ටු 16.0 සමඟ) දිගුකාලීන ක්‍රියාදාමයන් දිගටම කරගෙන යාමට මට සිදුවේ. මට SSH පර්යන්තය ආරම්භ කළ යුතු තැන සහ පර්යන්තයෙන්, ක්‍රියාවලිය ක්‍රියාත්මක කිරීම සඳහා පර්යන්තය සම්බන්ධ කර තබා ගත යුතුය. දැන් මේ දක්වා, සියල්ල හොඳයි. නමුත් මගේ SSH පර්යන්තය සමඟ සම්බන්ධතාවය අවසන් වී ඇත්දැයි බලා සිටින්න. එවිට දිගුකාලීන ක්‍රියාදාමයන් වහාම නතර වන අතර එබැවින් ssh පර්යන්තය නැවත ආරම්භ වූ පසු හෝ නව ssh පර්යන්තයකින් නැවත වරක් ඒවා නැවත ක්‍රියාත්මක කළ යුතුය.

tmuxපර්යන්තය වසා දැමීමෙන් පසුව පවා අපට ක්‍රියාත්මක කිරීමට අවශ්‍ය ක්‍රියාවලීන් අවසන් නොකිරීමට හොඳ විසඳුමක් බව මට පෙනී ගියේය.

සැසිය tmuxආරම්භ කිරීම සඳහා පර්යන්ත බහුකාර්යය ( ) tmux:

  1. Ssh පර්යන්තය ආරම්භ කරන්න
  2. වර්ගය tmux. එය එකම පර්යන්තයේ කවුළුවක් විවෘත කරනු ඇත.
  3. Tmux සැසිය තුළ දිගුකාලීන ක්‍රියාදාමයන් ආරම්භ කිරීමට විධානය ක්‍රියාත්මක කරන්න.

දැන් SSH පර්යන්තය වසා දමා / අවසන් වුව ද හදිසියේම tmux සැසිය මඟින් නිදසුන් / සේවාදායකයේ ආරම්භක හුදකලා ක්‍රියාදාමයන් දිගටම කරගෙන යනු ඇත.

සම්බන්ධතාවය අහෝසි වී ඇත්නම්, පසුබිමෙහි tmux සැසිය තුළ ක්‍රියාත්මක වන ක්‍රියාවලි බැලීමට එය නැවත සම්බන්ධ කරන්නේ කෙසේද:

  1. නව ssh පර්යන්තය නැවත සම්බන්ධ කිරීම හෝ විවෘත කිරීම. මෙම ක්‍රියාවලිය බැලීමට (පසුබිමේ ක්‍රියාත්මක වන) වර්ගය: tmux attachවිධානය.

Tmux සැසිය අවසන් කිරීමට අවශ්‍යයි:

  1. ක්‍රියාවලිය නවත්වන්න. ඉන්පසු exittmux-terminal-window ටයිප් කරන්න .

(සටහන: අපි tmux detachවිධානය භාවිතා කරන්නේ නම් : එය tmux සැසි අවසන් / නතර නොකර tmux සැසි කවුළුවෙන් / පර්යන්තයෙන් පිටව යනු ඇත)

වැඩි විස්තර සඳහා කරුණාකර පහත ලිපිය බලන්න:

  1. https://www.tecmint.com/keep-remote-ssh-session-running-after-disconnection/
  2. https://limitlessdatascience.wordpress.com/2019/08/22/tmux-to-keep-jupyter-notebook-running-in-the-background/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.