অস্বীকার কমান্ড যাচাই করুন


10

^z; bg; disownআমাকে একটি এসএসএস সেশন বন্ধ করার অনুমতি দেওয়ার জন্য আমি ক্রমটি জারি করেছি যাতে আমি একটি অতি-গুরুত্বপূর্ণ দীর্ঘকালীন প্রক্রিয়া চালাচ্ছি। এই প্রক্রিয়াটি স্ট্যাডারকে স্থিতি আউটপুট লেখায় এবং এটি বিচ্ছিন্ন হয়ে যাওয়ার পরেও তা চালিয়ে গেছে (lsof দ্বারা যাচাই করা হয়েছে, স্টারডার এফডি r / ডাব্লু জন্য উন্মুক্ত)।

প্রক্রিয়াটি সত্যই অস্বীকার করা হয়েছে (শেলটি পুনরুদ্ধার করা হলে SIGHUP পুনরুদ্ধার করবে না) তা নির্ধারণ করার কোনও উপায় আছে কি?


1
আমি অবাক হয়েছি যদি এটি ইউনিক্স.স্ট্যাকেক্সেঞ্জ
ডট

2
শুধু জানতে আগ্রহী নয় কেন: $ প্রক্রিয়া 1 >> / রুট / 2 >> / রুট / err.out & std.out
Avery, পেইন

উত্তর:


12

বাশ-এ, disownনিজের দ্বারা জারি করা আদেশটি সক্রিয় জব টেবিল থেকে ব্যাকগ্রাউন্ড (মাধ্যমে bgবা &) প্রক্রিয়াগুলি সরিয়ে ফেলবে এবং লগআউটতে সাইনআপ না পাওয়ার জন্য চিহ্নিত করবে।

আপনি অস্বীকার করতে এক বা একাধিক কাজও পাস করতে পারেন, পছন্দ করুন disown 1 3disown -hআপনি টেবিলে কাজ রাখতে চান তাহলে পতাকা দরকারী, কিন্তু এখনও লগআউট করলে SIGHUP না।

jobsকমান্ড জারি করে আপনি কাজের টেবিলটি দেখতে পারেন । একটি সফল পটভূমি পরে, এটি প্রদর্শিত হবে [1]+ command &। একটি কাজ অস্বীকার করার পরে, এটি আর চাকরীর টেবিলে প্রদর্শিত হবে না এবং লগআউটে আর মারা যাবে না। আপনি এখনও মাধ্যমে প্রক্রিয়া দেখতে পারেন ps ux, topএবং অন্যান্য প্রক্রিয়া-দেখার ইউটিলিটি।

কোনও কাজ প্রত্যাখ্যান হওয়ার পরে, আপনি প্রাকৃতিকভাবে এটি সমাপ্ত হওয়ার জন্য অপেক্ষা করতে পারেন বা killএটি বন্ধ করার জন্য পিআইডি-র মাধ্যমে একটি সংকেত প্রেরণ করতে পারেন।

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

উদাহরণ:

# we start a command in the background
$ cat /dev/urandom > test &
[1] 18533

# we see our command is still running
$ jobs
[1]+  Running                 cat /dev/urandom > test &

# we disown the backgrounded job
$ disown 1

# notice it is no longer in the job table
$ jobs

আমি সাধারণত শুধুমাত্র ব্যবহার disownযদি আমি একটি মত একটি সম্ভাব্য দীর্ঘক্ষন ধরে চলা কমান্ডটি প্রয়োগ rsyncবা cpএবং পরে সিদ্ধান্ত নেন আমি এটা সসীম ছাড়া লগ আউট করা দরকার। আপনি যদি জানেন যে আপনি কোনও কমান্ড চালাচ্ছেন এবং লগ আউট করতে চলেছেন তবে আপনি আউটপুটটি পাইপ করে বা teeকোনও ফাইলের সাথে যুক্ত করে nohup, এটিকে চালিয়ে বা এনে চালিয়ে নিতে পারেন screen(যা আপনাকে কমান্ডের মালিকানা নিতে / পরে শেষ করতে দেয়) )।

উদাহরণ:

# capture stdout and stderr to separate logs
cat /dev/urandom >stdout.log 2>stderr.log

# capture stdout and stderr to the same log, and display to stdout as well
cat /dev/urandom 2>&1 | tee output.log

# run a command under nohup (doesn't require a disown or job control support)
nohup cat /dev/urandom </dev/null

1
+1 তথ্যমূলক এবং উদাহরণ সহ। নিস!
অ্যান্ডি স্মিথ

খুব তথ্যমূলক মন্তব্য; আপনি কি বলছেন যে কোনও প্রক্রিয়াটির বিচ্ছিন্নতা যাচাই করা সম্ভব নয় (চাকরীর টেবিলে এটি আর বিদ্যমান নেই তা উল্লেখ করে)?
মাইকওয়াটারগুলি

1
আপনি যখন detachএকটি পটভূমি কাজ চালানোর সময় , এটি বিচ্ছিন্ন হতে চলেছে :) সেখানে সত্যিই কোন মধ্যম জায়গা নেই যেখানে এটি ব্যাকগ্রাউন্ড প্রক্রিয়াতে চালানো কিছুই করবে না। পরীক্ষণ jobsমাত্র যাচাই আপনি একটি থামানো প্রক্রিয়া বা কিছু বিচ্ছিন্ন করার চেষ্টা করা হয়নি।
lunixbochs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.