পুনঃনির্দেশ ব্যবহার করা শেল কমান্ডকে কীভাবে পুরোপুরি কাঁটাতে হবে


13

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

উদাহরণস্বরূপ যদি আমার কাছে এটি থাকে:

command_which_takes_time input > output

আমি কীভাবে "নোহুপ" এবং কাঁটাচামচ করতে পারি?

নিম্নলিখিতগুলি আমি যা চাই তা করছে বলে মনে হচ্ছে না:

nohup command_which_takes_time input > output &

আমি সিনট্যাক্সটি কী খুঁজছি এবং আমি কী বুঝতে পারি না?

উত্তর:


13

এর সাথে সাবসেল তৈরি করার চেষ্টা করুন (...):

( command_which_takes_time input > output ) &

উদাহরণ:

~$ ( (sleep 10; date) > /tmp/q ) &
[1] 19521
~$ cat /tmp/q # ENTER
~$ cat /tmp/q # ENTER
(...) #AFTER 10 seconds
~$ cat /tmp/q #ENTER
Wed Jan 11 01:35:55 CET 2012
[1]+  Done                    ( ( sleep 10; date ) > /tmp/q )

18

আপনার চেষ্টা করা উচিত setsid(1)। আপনি যেমন ব্যবহার করতে চান এটি ব্যবহার করুন nohup:

setsid command_which_takes_time input > output

এটি ( setsid(2)ম্যানপেজ অনুসারে), একটি fork(2), _exit(2)পিতামাতার প্রক্রিয়াটির একটি করে, তারপরে শিশু প্রক্রিয়া setsid(2)একটি নতুন প্রক্রিয়া গ্রুপ (সেশন) তৈরি করার জন্য কল করে।

লগ আউট করে আপনি এটি হত্যা করতে পারবেন না এবং এটি বাশ কাজ নিয়ন্ত্রণ শেবাংয়ের অংশ নয়। সমস্ত অভিপ্রায় এবং উদ্দেশ্যে, এটি একটি উপযুক্ত ডিমন।


4

নেই disownব্যাশ builtin কমান্ড প্রয়োগ করুন:

[1] 9180
root@ntb1:~# jobs
[1]+  Running                 sleep 120 &
root@ntb1:~# disown
root@ntb1:~# jobs
... no jobs, disowned
root@ntb1:~# ps aux | grep sleep | grep -v grep
root      9180  0.0  0.0   4224   284 pts/0    S    17:55   0:00 sleep 120
... but the sleep still runing
root@ntb1:~#

অস্বীকার করার পরে , কাজটি আপনার শেল থেকে অস্বীকার করা হবে (যাতে আপনি এমনকি লগআউটও করতে পারেন) এবং এটি এখনও শেষ না হওয়া পর্যন্ত চলতে থাকবে।

প্রথম jobsকমান্ডটি অস্বীকার করার পরে sleepঅবশ্য ২ য় তালিকাভুক্ত দেখুন jobs। তবে psআমরা ব্যবহার করে দেখতে পারি যে কাজটি এখনও চলছে।



-2

এটি কাজ করবে (কোনও অতিরিক্ত স্থান টাইপ করবেন না):

command &>output.file

1
এটি প্রশ্নের সাথে কোনও সম্পর্কযুক্ত বলে মনে হচ্ছে না, কারণ এটি কাঁটাচামচ বা এর সমতুল্য অর্জন করে না nohup
ড্যান গেটেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.