লিনাক্সে এসএসএইচ ক্লায়েন্ট বন্ধ করার পরে কীভাবে পটভূমি প্রক্রিয়াটি থামানো থেকে রোধ করা যায়


291

আমি এসএসএইচ (পুট্টি) এর মাধ্যমে একটি লিনাক্স মেশিনে কাজ করছি। রাতের বেলা আমাকে একটি প্রক্রিয়া চলতে হবে, তাই আমি ভেবেছিলাম যে আমি ব্যাকগ্রাউন্ডে (কমান্ডের শেষে একটি এম্পারস্যান্ড সহ) প্রসেসটি শুরু করে এবং একটি ফাইলে স্টাডাউটকে পুনর্নির্দেশ দিয়ে এটি করতে পারি।

আমার অবাক করার বিষয়, এটি কার্যকর হয় না। পুট্টি উইন্ডোটি বন্ধ করার সাথে সাথে প্রক্রিয়াটি বন্ধ হয়ে যায়।

কীভাবে আমি তা হতে বাধা দিতে পারি ??

উত্তর:


301

" নোহুপ " প্রোগ্রামটি দেখুন।


4
কীভাবে পরে এটি বন্ধ করবেন?
ডেরেক ডাহার

9
লগ ইন করুন এবং "হত্যা <পিড>" করুন। "পিডোফ" ব্যবহার করুন যদি আপনি পিডটি না জানেন।
জেস্পের ই

32
আপনি nohup command > /dev/null 2>&1 &কোনও nohup.out
স্টডআউট

আমার যদি কিছু ইনপুট সরবরাহ করা দরকার? উদাহরণস্বরূপ, আমার একটি দীর্ঘ-চলমান স্ক্রিপ্ট রয়েছে যা আমার পটভূমিতে চালানো দরকার তবে এটি প্রথমে আমার এফটিপি পাসওয়ার্ড চেয়েছে। nohupএই ক্ষেত্রে সাহায্য করে না। Ctrl+Z/ এর সাথে ঝাঁকুনির কোনও উপায় আছে কি bg?
সের্গেই

1
যেহেতু আমি অলস এবং অক্ষরের রহস্যপূর্ণ ক্রম memorizing এ খারাপ নই, আমি লিখেছি এই কি @KCD বলেন ভিত্তিক,, এবং এটি একটি অনেক ব্যবহার করা হয়েছে।
অযথা

167

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


7
এটি আমি ব্যবহার করেছি এমন সফটওয়্যারের অন্যতম বৃহত টুকরো। সিরিয়াসলি। আমার কাছে এটি BSD বাক্সে চলছে যা আমি এখানে থেকে শুরু করে এবং আমার স্ক্রিনে কেবল আবার সংযুক্ত করতে পারি এবং আমার টার্মিনালগুলি যেখানে আমি সব ধরণের জিনিস করছি সেখানে রাখতে পারি।
অ্যাডাম জ্যাসকিউইচ

1
আমি এই এক প্রমাণ করতে পারেন। স্ক্রিন একটি দুর্দান্ত অ্যাপ্লিকেশন। পুনরায় সংযুক্ত করার ক্ষমতা আশ্চর্যজনক এবং সম্ভাব্য হারিয়ে যাওয়া অনেক কাজ বাঁচায়।
উইলসায়হাট

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

17
আপনার পটভূমি অ্যাপ্লিকেশন পুনরায় সংযোগ প্রয়োজন কিনা তা নির্ভর করে s আপনি যদি তা করেন তবে হ্যাঁ, পর্দাটিই কেবল ওড়ার একমাত্র উপায়। যদি এটি আগুনে-ভুলে যায় তবে এর চেয়ে ভাল না হলে নোহুপ ঠিক তত সুন্দরভাবে ফিট করে।
ডেভ শেরোহমান

1
স্ক্রিনের জন্য +1। অথবা, বিকল্প হিসাবে, tmux (আমি এটি পর্দার চেয়ে আরও বেশি পছন্দ করি) বা এমনকি বাইবুও, যা স্ক্রিন বা টিএমউক্সের জন্য একটি দুর্দান্ত অগ্রভাগ। আপনি যে কোনও সময় শেলটি ব্যবহার করতে এবং পরে ফিরে আসতে কেবল স্ক্রিনটি টাইপ করতে পারেন বা "কমান্ড" এর মতো আপনার কমান্ডটি স্ক্রিন দিয়ে চালাতে পারেন: প্রক্রিয়া "কমান্ড" উপস্থিত থাকাকালীন স্ক্রিন সেশনটি উপস্থিত থাকবে এবং যদি এটি কিছু থাকে খুব দীর্ঘ, আপনি ফিরে যেতে পারেন এবং যে কোনও সময় এর স্ট্যান্ডার্ড আউটপুটটি দেখতে পারেন।
জের্লোস

81

সেশনটি বন্ধ হয়ে গেলে প্রক্রিয়াটি সিগহুপ সিগন্যালটি গ্রহণ করে যা সম্ভবত এটি ধরা পড়ে না। nohupপ্রক্রিয়া disown -hআরম্ভ করার পরে আপনি কমান্ডটি ব্যবহার করতে পারেন বা প্রক্রিয়া শুরু করার পরে ব্যাশ অন্তর্নির্মিত কমান্ডটি এটি হতে বাধা দিতে:

> help disown
disown: disown [-h] [-ar] [jobspec ...]
     By default, removes each JOBSPEC argument from the table of active jobs.
    If the -h option is given, the job is not removed from the table, but is
    marked so that SIGHUP is not sent to the job if the shell receives a
    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all
    jobs from the job table; the -r option means to remove only running jobs.

4
এখানে সুবিধা হ'ল যে প্রক্রিয়াগুলি ইতিমধ্যে শুরু হয়ে গিয়েছে তা অস্বীকার করে works
খ্রিস্টান কে।

1
'জবস্পেক' এর অর্থ কি পিড?
স্টিয়ার্ট

1
কোনও উদ্বেগ নেই, এখানে এই উত্তরটি খুঁজে পেয়েছেন stackoverflow.com/questions/625409/…
স্টিয়ার্ট

42

daemonize? nohup? স্ক্রীনে? (tmux ftw, স্ক্রিন জাঙ্ক ;-)

প্রথম থেকে প্রতিটি অন্যান্য অ্যাপ্লিকেশন যা করেছে কেবল তা করুন - ডাবল কাঁটাচামচ।

# ((exec sleep 30)&)
# grep PPid /proc/`pgrep sleep`/status
PPid:   1
# jobs
# disown
bash: disown: current: no such job

ব্যাং! সম্পন্ন :-) আমি এই ধরণের অসংখ্য বার সমস্ত ধরণের অ্যাপ এবং বহু পুরানো মেশিনে ব্যবহার করেছি। আপনি পুনঃনির্দেশগুলির সাথে একত্রিত করতে পারেন এবং আপনার এবং প্রক্রিয়াটির মধ্যে কোনও ব্যক্তিগত চ্যানেল খোলার জন্য কী নয়।

Coproc.sh হিসাবে তৈরি করুন:

#!/bin/bash

IFS=

run_in_coproc () {
    echo "coproc[$1] -> main"
    read -r; echo $REPLY
}

# dynamic-coprocess-generator. nice.
_coproc () {
    local i o e n=${1//[^A-Za-z0-9_]}; shift
    exec {i}<> <(:) {o}<> >(:) {e}<> >(:)
. /dev/stdin <<COPROC "${@}"
    (("\$@")&) <&$i >&$o 2>&$e
    $n=( $o $i $e )
COPROC
}

# pi-rads-of-awesome?
for x in {0..5}; do
    _coproc COPROC$x run_in_coproc $x
    declare -p COPROC$x
done

for x in COPROC{0..5}; do
. /dev/stdin <<RUN
    read -r -u \${$x[0]}; echo \$REPLY
    echo "$x <- main" >&\${$x[1]}
    read -r -u \${$x[0]}; echo \$REPLY
RUN
done

এবং তারপর

# ./coproc.sh 
declare -a COPROC0='([0]="21" [1]="16" [2]="23")'
declare -a COPROC1='([0]="24" [1]="19" [2]="26")'
declare -a COPROC2='([0]="27" [1]="22" [2]="29")'
declare -a COPROC3='([0]="30" [1]="25" [2]="32")'
declare -a COPROC4='([0]="33" [1]="28" [2]="35")'
declare -a COPROC5='([0]="36" [1]="31" [2]="38")'
coproc[0] -> main
COPROC0 <- main
coproc[1] -> main
COPROC1 <- main
coproc[2] -> main
COPROC2 <- main
coproc[3] -> main
COPROC3 <- main
coproc[4] -> main
COPROC4 <- main
coproc[5] -> main
COPROC5 <- main

এবং সেখানে আপনি যান, যাই হোক না কেন স্পন। <(:) প্রক্রিয়া প্রতিস্থাপনের মাধ্যমে একটি অনামী পাইপ খোলে, যা মারা যায়, তবে পাইপটি আটকে থাকে কারণ আপনার কাছে এটির একটি হ্যান্ডেল রয়েছে have আমি এর sleep 1পরিবর্তে সাধারণত কিছু করি :কারণ এটি সামান্য বর্ণবাদী হয়, এবং আমি একটি "ফাইল ব্যস্ত" ত্রুটি পেয়েছিলাম - সত্যিকারের কমান্ডটি চালিত হলে কখনও ঘটে না (যেমন,command true )

"বংশগত সোর্সিং":

. /dev/stdin <<EOF
[...]
EOF

এটি আমি ব্যস্তবক্স / ইত্যাদি (initramfs) সহ আমি চেষ্টা করেছি এমন প্রতিটি শেলের উপর কাজ করে। আমি এর আগে কখনও এটি করতে দেখিনি, উত্থিতকালে আমি স্বাধীনভাবে এটি আবিষ্কার করেছি, কে জানত উত্সটি অর্গগুলি গ্রহণ করতে পারে? তবে এটি প্রায়শই অনেক বেশি পরিচালনাযোগ্য রূপ হিসাবে কাজ করে, যদি এমন কোনও জিনিস থাকে।


2
কেন ডাউন ভোট ... তাই প্রশ্ন যদি পুরান হয়; 11 টি উত্তর আছে যেগুলি স্তন্যপান করা আছে এটি বিবেচনা করে স্পষ্টতই প্রাসঙ্গিক। এই সমাধানগুলি, সান সিস্টেমড, বিহীন অ্যাপ্লিকেশন নয়, গত 30 বছর ধরে ডেমোনাইজ করার আইডিয়োম্যাটিক এবং স্বীকৃত উপায়। নোহুপ এট আল।
অ্যান্থনিরিসিঞ্জার

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

1
@ tbc0 ... চেষ্টা করুনssh myhost "((exec sleep 500)&) >/dev/null"
অ্যান্থনিরিসিঞ্জার

1
@ অ্যান্থনিরিঞ্জার ঠিক আছে, কাজ করে। আমি মনে করি এটি পরিষ্কার: ssh myhost 'sleep 500 >&- 2>&- <&- &' TMTOWTDI;)
tbc0

1
এটা অসাধারণ. ব্যস্তবক্সে কাজ করে এমন একমাত্র সমাধান। এটি আরো upvotes দাবী
Hamy

34
nohup blah &

আপনার প্রক্রিয়া নামটি ব্লাহের পরিবর্তে দিন!


2
আপনি পুনঃনির্দেশ স্ট্যান্ডার্ড এবং স্ট্যান্ডার্ড ত্রুটি যুক্ত করতে চাইতে পারেন।
ডেভিড নেহমে

9
nohup stdout এবং stderr কে nohup.out (অথবা সংস্করণ অনুসারে nohup.out এবং nohup.err) এ পুনঃনির্দেশ করে, সুতরাং যদি আপনি একাধিক কমান্ড পরিচালনা না করেন তবে এটি প্রয়োজনীয় নয়।
চস ওয়েন্স

17

ব্যক্তিগতভাবে, আমি 'ব্যাচ' কমান্ডটি পছন্দ করি।

$ batch
> mycommand -x arg1 -y arg2 -z arg3
> ^D

এটি পটভূমিতে এটি স্টাফ করে এবং তারপরে ফলাফলগুলি আপনাকে মেল করে। এটা ক্রোন একটি অংশ।


11

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

স্টিভেন্সের "অ্যাডভান্সড নেটওয়ার্ক প্রোগ্রাম, ভোল 1, তৃতীয় এডন" বা রচকাইন্ডের "অ্যাডভান্সড ইউনিক্স প্রোগ্রামিং" এর মতো বইগুলিতে ডিমনাইজিং প্রক্রিয়া সম্পর্কিত তথ্য আপনি খুঁজে পেতে পারেন।

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

Usage: daemonize [-abchptxV][-d dir][-e err][-i in][-o out][-s sigs][-k fds][-m umask] -- command [args...]
  -V          print version and exit
  -a          output files in append mode (O_APPEND)
  -b          both output and error go to output file
  -c          create output files (O_CREAT)
  -d dir      change to given directory
  -e file     error file (standard error - /dev/null)
  -h          print help and exit
  -i file     input file (standard input - /dev/null)
  -k fd-list  keep file descriptors listed open
  -m umask    set umask (octal)
  -o file     output file (standard output - /dev/null)
  -s sig-list ignore signal numbers
  -t          truncate output files (O_TRUNC)
  -p          print daemon PID on original stdout
  -x          output files must be new (O_EXCL)

GNU getopt () ফাংশন ব্যবহার না করে এমন সিস্টেমে ডাবল-ড্যাশ optionচ্ছিক; এটি লিনাক্স ইত্যাদিতে প্রয়োজনীয় (বা আপনাকে পরিবেশে POSIXLY_CORRECT নির্দিষ্ট করতে হবে) যেহেতু ডাবল ড্যাশ সর্বত্র কাজ করে, তাই এটি ব্যবহার করা ভাল।

আপনি যদি এখনও উত্স চান তবে আমার সাথে যোগাযোগ করতে পারেন (জিমেইল ডট কম এ ফার্স্টনেম ডট লাস্টনেম) daemonize

যাইহোক, কোড এখন আছে (পরিশেষে) আমার মধ্যে GitHub থেকে প্রাপ্তিসাধ্য SOQ (স্ট্যাক ওভারফ্লো প্রশ্নাবলি) ফাইল হিসেবে সংগ্রহস্থলের daemonize-1.10.tgzমধ্যে প্যাকেজ উপ-নির্দেশিকা।


13
আপনি গিথুব বা বিটবাকেটে উত্সটি রাখেন না কেন?
রব

5
গিথুব থেকে উত্সের অনুপস্থিতি কেন ডাউন ডাউনকে ওয়ারেন্ট দেয়?
জোনাথন লেফলার

7
@ জোনাথনলফলার আইএমএইচও এমন একটি প্রোগ্রামের শীতল বিকল্পগুলি তালিকাভুক্ত করছে যা পাঠকের সময় নষ্ট করার মতো কোনও রূপে (এমনকি বাণিজ্যিকভাবেও নয়) সীমানায় প্রকাশিত হয় না।
হতাশাডানিয়েল

7

একটি ডেবিয়ান-ভিত্তিক সিস্টেমে (রিমোট মেশিনে) ইনস্টল করুন:

sudo apt-get ইনস্টল tmux

ব্যবহার:

tmux

আপনি চান আদেশগুলি চালান

সেশনটির নতুন নামকরণ করতে:

Ctrl + B তখন $

নাম ঠিক কর

সেশন থেকে প্রস্থান করতে:

Ctrl + B এর পরে ডি

(এটি tmux সেশনটি ছেড়ে দেয়)। তারপরে, আপনি এসএসএইচ থেকে লগ আউট করতে পারেন।

আপনার যখন আবার ফিরে আসার প্রয়োজন হয় / আবার এটি পরীক্ষা করে দেখুন, এসএসএইচ শুরু করুন এবং প্রবেশ করুন

tmux সংযুক্তি সেশন_নাম

এটি আপনাকে আপনার টিএমউক্স সেশনে ফিরিয়ে নিয়ে যাবে।


এই
পথেই

6

বেশিরভাগ প্রক্রিয়ার জন্য আপনি এই পুরাতন লিনাক্স কমান্ড-লাইন কৌশলটি ব্যবহার করে সিউডো-ডিমনাইজ করতে পারেন:

# ((mycommand &)&)

উদাহরণ স্বরূপ:

# ((sleep 30 &)&)
# exit

তারপরে একটি নতুন টার্মিনাল উইন্ডোটি শুরু করুন এবং:

# ps aux | grep sleep

sleep 30এখনও চলছে যে দেখায় ।

আপনি যা করেছেন তা সন্তানের সন্তানের হিসাবে প্রক্রিয়া শুরু করা হয় এবং আপনি যখন প্রস্থান করেন, তখন nohup কমান্ডটি সাধারণত প্রক্রিয়াটি প্রস্থান করার জন্য উত্সাহিত করবে, এটি অনাথ প্রক্রিয়া হিসাবে ছেড়ে চলেছে, এখনও চলছে grand ।

আমি এই "এটি সেট এবং তারপরে ভুলে যান" অভিগমন, কোন মোকাবেলা করার কোন প্রয়োজন পছন্দ nohup, screen, tmux I / O ফেরৎ, বা যে কাপড় কোন।


5

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

যদি এই প্রক্রিয়াটি নিয়মিত চালানোর প্রয়োজন হয় এবং আপনার সার্ভারে পর্যাপ্ত অ্যাক্সেস রয়েছে, তবে কাজটি চালানোর জন্য ক্রোন ব্যবহার করা আরও ভাল বিকল্প হবে। আপনি ব্যাকগ্রাউন্ডে আপনার প্রক্রিয়া শুরু করতে init.d (সুপার ডেমন) ব্যবহার করতে পারেন এবং এটি শেষ হওয়ার সাথে সাথে এটি শেষ হতে পারে।


5

nohupযদি আপনি কোনও ফাইলটিতে আপনার বিবরণ লগ করতে চান তবে খুব ভাল। তবে এটি যখন পটভূমিতে যায় আপনি আপনার স্ক্রিপ্টগুলি জিজ্ঞাসা করলে আপনি এটি একটি পাসওয়ার্ড দিতে অক্ষম। আমি আপনাকে চেষ্টা করতে হবে মনে হয় screen। এটি ইউটিলিটি আপনি আপনার লিনাক্স বিতরণে ইয়েম ব্যবহার করে ইনস্টল করতে পারেন উদাহরণস্বরূপ CentOS yum install screenএ আপনার শেল প্রকারে পুটি বা অন্য কোনও সফ্টওয়্যার মাধ্যমে আপনার সার্ভারটি অ্যাক্সেস করুন screen। এটি পটি স্ক্রিন [0] খুলবে। তোমার কাজ করো. আপনি একই পুট্টি সেশনে আরও স্ক্রিন [1], স্ক্রিন [2] ইত্যাদি তৈরি করতে পারেন।

প্রাথমিক কমান্ডগুলি আপনার জানা দরকার:

পর্দা শুরু করতে

পর্দা


করার reate পরবর্তী পর্দায়

Ctrl + A + C


আপনার তৈরি করা এন- এক্স স্ক্রিনে স্থানান্তর করতে

Ctrl + A + N


করার etach

Ctrl + A + D


কাজের সময় আপনার পুটি বন্ধ করুন। এবং পরের বার আপনি পুট্টি টাইপ মাধ্যমে লগইন যখন

পর্দা -r

আপনার স্ক্রিনে পুনরায় সংযোগ স্থাপন করতে এবং আপনি দেখতে পাচ্ছেন যে আপনার প্রক্রিয়াটি এখনও স্ক্রিনে চলছে। এবং স্ক্রিনটি প্রস্থান করতে টাইপ # এক্সিট করুন।

আরও তথ্যের জন্য দেখুন man screen


অভিমানী যে yumহয় ডান টুল, যখন আপনি ডিস্ট্রো জানি না, ভাল হয় না। আপনার কী পরিষ্কার করা উচিত যে কোন ডিস্ট্রোস screenদিয়ে ইনস্টল করা যায় yum
টাইমিক ২

5

আপনি যখন লগআউট করবেন তখন যুক্তির জন্য পিতামাতার প্রক্রিয়াটি মারা গেলে নোহুপ ক্লায়েন্ট প্রক্রিয়াটিকে হত্যা না করার অনুমতি দেয়। আরও ভাল এখনও ব্যবহার করুন:

nohup /bin/sh -c "echo \$\$ > $pidfile; exec $FOO_BIN $FOO_CONFIG  " > /dev/null

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




2

আমি স্ক্রিন প্রোগ্রামেও যাব (আমি জানি যে অন্য 1 টির উত্তর ছিল স্ক্রিন তবে এটি একটি সমাপ্তি)

কেবলমাত্র এটিই নয় যে &, ctrl + z বিজি অস্বীকার, নোহুপ, ইত্যাদি আপনাকে একটি বাজে চমক দিতে পারে যে আপনি যখন লগঅফ চাকরীটি এখনও মেরে ফেলা হবে (তবে আমি কেন জানি না, তবে এটি আমার সাথে ঘটেছিল, এবং এটি বিরক্ত করে না) এটির কারণেই আমি স্ক্রিনটি ব্যবহার করতে শুরু করেছি, তবে আমি অনুমান করি যে অ্যান্টনিরিসিংগার দ্রবণটি ডাবল ফর্কিংটি সমাধান করবে), এছাড়াও কেবল ব্যাক-গ্রাউন্ডিংয়ের চেয়েও পর্দার একটি বড় সুবিধা রয়েছে:

screen will background your process without losing interactive control to it

এবং বিটিডব্লিউ, এটি এমন একটি প্রশ্ন যা আমি কখনই প্রথম স্থানে জিজ্ঞাসা করব না :) ... আমি কোনও ইউনিক্সে কিছু করার শুরু থেকে আমার পর্দা ব্যবহার করি ... আমি (প্রায়) পর্দা শুরু না করে কোনও ইউনিক্স / লিনাক্স শেলের কাজ করি না প্রথম ... এবং আমার এখনই থামানো উচিত, বা ভাল স্ক্রিনটি কী এবং আপনার জন্য কী করতে পারে তার একটি অন্তহীন উপস্থাপনা শুরু করব ... এটি নিজেই দেখুন, এটি মূল্যবান;)


পিএস অ্যান্টনিরিসিংগার, আপনি ভাল, আমি আপনাকে দিচ্ছি কিন্তু ... 30 বছর? আমি বাজি দিচ্ছি যে এটি একটি সমাধান যখন &, বিজি, নোহুপ বা স্ক্রিনটি এখনও ছিল না, এবং কোনও অপরাধ আমি আপনার জ্ঞানের প্রশংসা করি না তবে এটি ব্যবহার করা এটি খুব জটিল :) :)
থ্রোসোয়ার

2
(একপাশে দেখুন: টিমাক্স দেখুন ) যদিও এটি আমার ব্যাপকভাবে পূর্বাভাস দেয় [1987], &( অ্যাসিনক্রোনাস এক্সিকিউশন ) ১৯ 1971১ সালে ইউনিক্সের প্রথম সংস্করণের জন্য থম্পসন শেল দ্বারা প্রবর্তিত হয়েছিল ... সুতরাং এটি আক্ষরিক "সর্বদা" ছিল ; আমি খুব রক্ষণশীল ছিল - এটি আসলে 41 বছর কেটে গেছে।
অ্যান্থনিরিঞ্জার

2

এর রয়েছে ডেমন ওপেন সোর্স libslack প্যাকেজের কমান্ড।

daemon বেশ কনফিগারযোগ্য এবং স্বয়ংক্রিয় পুনঃসূচনা, লগিং বা পিডফিল হ্যান্ডলিংয়ের মতো সমস্ত ক্লান্তিকর ডেমন স্টাফ সম্পর্কে যত্নশীল।


2

আপনার কমান্ডে এই স্ট্রিং যুক্ত করুন:> & - 2> & - <& - &। > & - এর অর্থ ক্লোজড স্টডআউট। 2> & - এর অর্থ ক্লোজ স্টেডার। <& - এর অর্থ ক্লোজ স্টিডিন। & মানে পটভূমিতে চালানো। এটি প্রোগ্রামের মাধ্যমে ssh এর মাধ্যমেও একটি কাজ শুরু করতে কাজ করে:

$ ssh myhost 'sleep 30 >&- 2>&- <&- &'
# ssh returns right away, and your sleep job is running remotely
$


1

গৃহীত উত্তরগুলি nohup ব্যবহার করার পরামর্শ দেয় । আমি বরং pm2 ব্যবহার করার পরামর্শ দিচ্ছি । ব্যবহার pm2 উপর nohup অ্যাপ্লিকেশনের জন্য লগ ফাইল এবং আরো অনেক অন্যান্য বৈশিষ্ট্য বজায় রাখা অনেক সুবিধা, অ্যাপ্লিকেশন জীবিত রাখার মত রয়েছে। আরও বিশদের জন্য এটি পরীক্ষা করে দেখুন

Pm2 ইনস্টল করতে আপনার এনপিএম ডাউনলোড করতে হবে । ডেবিয়ান ভিত্তিক সিস্টেমের জন্য

sudo apt-get install npm

এবং রেডহাটের জন্য

sudo yum install npm

অথবা আপনি এই নির্দেশাবলী অনুসরণ করতে পারেন । এনপিএম ইনস্টল করার পরে এটি পিএম 2 ইনস্টল করতে ব্যবহার করুন

npm install pm2@latest -g

এটি হয়ে গেলে আপনি নিজের আবেদনটি শুরু করতে পারেন

$ pm2 start app.js              # Start, Daemonize and auto-restart application (Node)
$ pm2 start app.py              # Start, Daemonize and auto-restart application (Python)

প্রক্রিয়া পর্যবেক্ষণের জন্য নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

$ pm2 list                      # List all processes started with PM2
$ pm2 monit                     # Display memory and cpu usage of each app
$ pm2 show [app-name]           # Show all informations about application

অ্যাপের নাম বা প্রক্রিয়া আইডি ব্যবহার করে প্রক্রিয়াগুলি পরিচালনা করুন বা সমস্ত প্রক্রিয়া একসাথে পরিচালনা করুন:

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart  <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>

লগ ফাইল পাওয়া যাবে

$HOME/.pm2/logs #contain all applications logs

বাইনারি এক্সিকিউটেবল ফাইলগুলিও পিএম 2 ব্যবহার করে চালানো যেতে পারে। আপনাকে জেসন ফাইলে পরিবর্তন করতে হবে। পরিবর্তন করুন "exec_interpreter" : "node", এর "exec_interpreter" : "none".(দেখুন বৈশিষ্ট্যাবলী অধ্যায় )।

#include <stdio.h>
#include <unistd.h>  //No standard C library
int main(void)
{
    printf("Hello World\n");
    sleep (100);
    printf("Hello World\n");

    return 0;
}

উপরের কোড সংকলন

gcc -o hello hello.c  

এবং ব্যাকগ্রাউন্ডে এটি এনপি 2 দিয়ে চালান

pm2 start ./hello

এটি কি বাইনারি এক্সিকিউটেবল চালাতে ব্যবহৃত হতে পারে?
getFree

@স্বাধীন; হ্যাঁ. আপনি পারেন।
6:58

দয়া করে একটি উদাহরণ যুক্ত করুন। এই মুহুর্তের উত্তরটি এখন দেখতে ঠিক এটি স্ক্রিপ্ট ফাইলগুলির জন্যই ভাল।
ফ্রি

@স্বাধীন; উদাহরণ যুক্ত। আপনার যদি কোন সমস্যা হয় তবে আমাকে জানান।
haccks

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