&
(සහ නැවත හරවා යැවීමකින් තොරව ) අන්තර්ක්රියාකාරී කවචයකින් (පර්යන්තයකට සම්බන්ධ කර) වැඩසටහනක් ආරම්භ කළහොත් කුමක් සිදුවේදැයි අපි මුලින්ම බලමු . එබැවින් ඔබ ටයිප් කළ බව උපකල්පනය කරමු foo
:
- ක්රියාවලිය ක්රියාත්මක
foo
වේ.
- මෙම ක්රියාවලියට ෂෙල් එකෙන් stdin, stdout සහ stderr උරුම වේ. එබැවින් එය එකම පර්යන්තයට සම්බන්ධ වේ.
- කවචයට a ලැබෙන්නේ නම්
SIGHUP
, එය ද SIGHUP
ක්රියාවලියට a යවයි (එය සාමාන්යයෙන් ක්රියාවලිය අවසන් වීමට හේතු වේ).
- එසේ නොමැතිනම් ක්රියාවලිය අවසන් වන තුරු කවචය බලා සිටියි (අවහිර කර ඇත).
දැන්, අපි ක්රියාවලිය පසුබිමට දැමුවහොත් කුමක් සිදුවේදැයි බලමු, එනම් ටයිප් කරන්න foo &
:
- ක්රියාවලිය ක්රියාත්මක
foo
වේ.
- මෙම ක්රියාවලියට කවචයෙන් stdout / stderr උරුම වේ (එබැවින් එය තවමත් පර්යන්තයට ලියයි).
- ප්රතිපත්තිමය වශයෙන් ද ක්රියාවලිය stdin උරුම කර ගනී, නමුත් එය stdin වෙතින් කියවීමට උත්සාහ කළ විගසම එය නතර වේ.
- එය ෂෙල් කළමනාකරණය කරන පසුබිම් රැකියා ලැයිස්තුවට ඇතුළත් කර ඇත, එයින් අදහස් කරන්නේ විශේෂයෙන්:
- එය සමඟ ලැයිස්තුගත කර ඇති
jobs
අතර භාවිතයෙන් ප්රවේශ විය හැකිය %n
( n
රැකියා අංකය කොහේද ).
- එය භාවිතයෙන් පෙරබිම් රැකියාවක් බවට පත් කළ හැකි
fg
අතර, එය දිගටම භාවිතා කරන්නේ ඔබ එය භාවිතා නොකරනු ඇත &
(සහ සම්මත ආදානයෙන් කියවීමට උත්සාහ කිරීම නිසා එය නැවැත්වූයේ නම්, දැන් එය පර්යන්තයෙන් කියවීමට ඉදිරියට යා හැකිය).
- කවචයට a ලැබුනේ නම්
SIGHUP
, එය SIGHUP
ක්රියාවලියට a යවයි . කවචය මත පදනම්ව සහ සමහර විට කවචය සඳහා සකසා ඇති විකල්ප මත පදනම්ව, කවචය අවසන් කිරීමේදී එය SIGHUP
ක්රියාවලියට යවනු ඇත .
දැන් disown
ෂෙල් එකේ රැකියා ලැයිස්තුවෙන් කාර්යය ඉවත් කරයි, එබැවින් ඉහත සඳහන් සියලුම උප ස්ථාන තවදුරටත් අදාළ නොවේ ( SIGHUP
ෂෙල් එක මඟින් යවන ක්රියාවලිය ද ඇතුළුව ). කෙසේ වෙතත් එය තවමත් පර්යන්තයට සම්බන්ධ වී ඇති බව සලකන්න , එබැවින් ටර්මිනලය විනාශ වුවහොත් (එය සිදුවිය හැක්කේ එය නිර්මාණය කරන ලද xterm
හෝ වැනි ssh
, සහ පාලක වැඩසටහන අවසන් වුවහොත්, xterm වසා දැමීමෙන් හෝ SSH සම්බන්ධතාවය අවසන් කිරීමෙන් ) , සම්මත ආදානයෙන් කියවීමට හෝ සම්මත ප්රතිදානයට ලිවීමට උත්සාහ කළ විගසම වැඩසටහන අසාර්ථක වනු ඇත.
කුමක්ද nohup
කරන්නේ, අනිත් අතට, ඵලදායී ලෙස පර්යන්තය ක්රියාවලිය වෙන් වන්නේ:
- එය (මෙම වැඩසටහන ඇත සම්මත ආදාන වැසුනු නොවේ එය පෙරට තුල ක්රියාත්මක කර ඇත පවා නම්, ඕනෑම ආදාන කියවිය හැකි වනු. එය නතර නොවේ, නමුත් දෝෂයක් කේතය ලබා හෝ ඇත
EOF
).
- එය සම්මත ප්රතිදානය සහ සම්මත දෝෂය ගොනුව වෙත හරවා යවයි
nohup.out
, එබැවින් පර්යන්තය අසමත් වුවහොත් සම්මත ප්රතිදානය වෙත ලිවීමට වැඩසටහන අසමත් නොවනු ඇත, එබැවින් ක්රියාවලිය ලියන ඕනෑම දෙයක් නැති නොවේ.
- එමඟින් ක්රියාවලිය ලැබීමෙන් වළක්වයි
SIGHUP
(මේ අනුව නම).
බව සටහන nohup
නැහැ නැහැ ෂෙල් ගේ රැකියා පාලනය සිට එම ක්රියාවලිය, ඉවත් කිරීම හා ද පසුබිමේ තබා නැත (නමුත් එකක් පෙරට ආ සිට nohup
රැකියා අඩු හෝ වැඩි නිෂ්ඵල, ඔබ සාමාන්යයෙන් එය පසුබිම බවට භාවිතා දමා කියලා &
). නිදසුනක් ලෙස, මෙන් නොව disown
, නොහප් කාර්යය අවසන් වූ විට කවචය තවමත් ඔබට කියනු ඇත (ෂෙල් එක පෙර අවසන් නොකළේ නම්, ඇත්ත වශයෙන්ම).
එබැවින් සාරාංශ කිරීමට:
&
කාර්යය පසුබිමට දමයි, එනම් ආදානය කියවීමට උත්සාහ කිරීම අවහිර කරයි, සහ කවචය සම්පූර්ණ වන තෙක් බලා නොසිටිනු ඇත.
disown
ෂෙල් එකේ රැකියා පාලනයෙන් ක්රියාවලිය ඉවත් කරයි, නමුත් එය තවමත් එය පර්යන්තයට සම්බන්ධ කර තබයි. ප්රති results ලවලින් එකක් නම් කවචය එය නොයවන බවය SIGHUP
. නිසැකවම, එය යෙදිය හැක්කේ පසුබිම් රැකියා සඳහා පමණි, මන්ද පෙරබිම් රැකියාවක් ක්රියාත්මක වන විට ඔබට එයට ඇතුළු විය නොහැක.
nohup
එහි ප්රතිදානය යළි-යොමුකරයි, ටර්මිනලය සිට එම ක්රියාවලිය විසන්ධි nohup.out
සිට එය හා පලිස් SIGHUP
. එක් බලපෑමක් (නම් කිරීම) ක්රියාවලියට යවන ලද කිසිවක් නොලැබීමයි SIGHUP
. එය රැකියා පාලනයෙන් සම්පූර්ණයෙන්ම ස්වාධීන වන අතර ප්රතිපත්තිමය වශයෙන් පෙරබිම් රැකියා සඳහා ද භාවිතා කළ හැකිය (එය එතරම් ප්රයෝජනවත් නොවේ).
foo &!
ආරම්භයේ සිටම එය ප්රතික්ෂේප කිරීමට සමාන විය යුතු දේ ද තිබේ .