ক্রোনট্যাব ব্যবহার করে আমি কীভাবে 'রেপো সিঙ্ক' মেরে ফেলব এতে অনেক প্রক্রিয়া প্রসারিত হয়?


1

আমার মাসিক ব্যান্ডউইথ সীমাবদ্ধ হওয়ায় আমাকে রাতারাতি অ্যান্ড্রয়েড উত্সকে 'রেপো সিঙ্ক' করতে হবে।

, আমি মধ্যরাতে 'রেপো সিঙ্ক' শুরু করি, তারপরে সকাল ৮ টায় এটি হত্যা করতে চাই। নিম্নলিখিত আদেশটি হল:

2 0 * * * /home/user/android-src/reposync.sh

reposync.sh এর মধ্যে রয়েছে:

cd /home/user/android-src
/home/user/bin/repo sync

আমি নিম্নলিখিত ক্রোন এন্ট্রি দিয়ে এটি হত্যা করার আশাবাদী:

55 7 * * * ps -eo pid,args | grep repo | awk '{print $1}' | xargs -I {} kill {}
0 8 * * * ps -eo pid,args | grep repo | awk '{print $1}' | xargs -I {} kill -9 {}

সমস্যাটি হ'ল 'রেপো সিঙ্ক' অনেকগুলি প্রক্রিয়া তৈরি করে - প্রচুর 'গিট', 'কার্ল', 'গিট-রিমোট-HTTP', 'পাইথন', (এবং আমি মনে করি একটি 'বাশ' এবং 'শ', যেমন আমি রেপো সিঙ্ক কমান্ডটি একটি .sh স্ক্রিপ্টে রাখুন)। (আমার অজ্ঞতা / পরিভাষার জন্য ক্ষমা

তাদের হত্যা করার প্রক্রিয়াগুলি আমি কীভাবে খুঁজে পাব? নাকি এর চেয়ে ভাল উপায় আছে? রেপো কি সাধারণ ব্যবহারকারীরূপে চলবে এবং আমি কেবল ব্যবহারকারীর সমস্ত কাজই মেরে ফেলতে পারি? আমি আমার কম্পিউটারটি অল্পক্ষণের মধ্যে কয়েক দিন ধরে চালিয়ে যেতে চাই এবং এটি প্রতিটি রাত্রে সংযোগ স্থাপন করতে এবং প্রতি সকালে সংযোগ বিচ্ছিন্ন করতে চাই, যদিও কুরুচিপূর্ণ সহ, যে কোনও সমাধানের কৃতজ্ঞতার সাথে বিবেচনা করা উচিত, যেমন, তখন আমি কি ইন্টারনেট সংযোগটি মেরে ফেলব, যাতে এরপরে পুনরায় সময় বের করা উচিত? এটি আবার শুরু? সার্ভারে আর কিছু চলছে না, (উইন 7 এক্স 64-এ উবুন্টু 10.04 চলছে), সুতরাং প্রতি 8am টা কি আমার পুনরায় বুট করা উচিত?

উত্তর:


1

killসম্পূর্ণ প্রক্রিয়া গোষ্ঠীটিকে হত্যা করতে নেতিবাচক যুক্তি ব্যবহার করুন ।

#!/bin/sh
ps -eo pid,args |
awk '/[r]epo/{print $1}' |
xargs -I {} kill "$@" -{}

কীভাবে অকেজো এড়ানো যায় সে সম্পর্কে প্রাচীন FAQ নোট করুন grep | grep -v grep | awk

এই মত আহ্বান

55 7 * * * /path/to/killsync
0 8 * * * /path/to/killsync -9

আমরা আশা করি দ্বিতীয়টির আসলে কখনই প্রয়োজন হবে না; আশা করি এটিও অকেজো

Https://stackoverflow.com/questions/11000538/linux-kill-with-negative-pid দেখুন


আমি ত্রুটি পেয়ে যাচ্ছি: অজানা সংকেতের নাম "13738"। এটি সঠিক পিআইডি। দুর্ভাগ্যক্রমে আমি কিল প্যারামিটার "$ @" কী বা কী তা বের করার চেষ্টা করছি না।
ক্রিস

শেল স্ক্রিপ্টে, "$@"স্ক্রিপ্টের আর্গুমেন্টগুলির সঠিকভাবে উদ্ধৃত তালিকায় প্রসারিত হয়। আপনি যদি বলেন killsync -s 9তবে স্ক্রিপ্টের ভিতরে "$@"থাকবে -s 9
ট্রিপলি

killআপনার সিস্টেমে থাকা ডকুমেন্টেশনে নেতিবাচক পিআইডি কনভেনশন উল্লেখ রয়েছে? সম্ভবত একটি কর্মক্ষেত্র হিসাবে, সর্বদা একটি সুস্পষ্ট সংকেত সংখ্যায় পাস করুন, যেমন হিসাবে প্রথম স্ক্রিপ্টটি চালান killsync -15
ট্রিপলি

আপনি ঠিক ট্রিপল ধন্যবাদ, আমার কিল ডক্স নেতিবাচক পিআইডি (আপডেট উবুন্টু 12.04) উল্লেখ করে না। -15 প্রেরণে কী প্রক্রিয়া বাকী সবাইকে মেরে ফেলবে?
ক্রিস

1
উফ খুব দুঃখিত, সম্পন্ন।
ক্রিস

0

আপনার যে প্রক্রিয়াটি হত্যার প্রয়োজন তা শিশু প্রক্রিয়াগুলিকে উত্সাহিত করেছে যা হত্যা করার প্রয়োজন রয়েছে:

vi killemall.sh
---------------
#!/bin/bash
# 
# Get the process PID
# Kill all the processes that have a parent pid = PID
# Kill the master process
#
MASTERPID=`ps -eo pid,args | grep repo | awk '{print $1}'`
ps -ef | grep ${MASTERPID} | awk '{print $1}'` | while read PIDX; do kill -9 ${PIDX} 2>/dev/null; done;

রেপো কি সাধারণ ব্যবহারকারীরূপে চলবে এবং আমি কেবল ব্যবহারকারীর সমস্ত কাজই মেরে ফেলতে পারি?

# Should work, but it's a complete overkill

আমি কি ইন্টারনেট সংযোগটি মেরে ফেলব তাই রেপো টাইম আউট হয়ে আবার চালু করা উচিত? সুতরাং আমি কি প্রতি 8am পুনরায় বুট করা উচিত?

# No need to come up with "excentric" solutions. Follow the Kill-Em-ALL approach, and that should solve your issue.

এটি কাজ করছে বলে মনে হচ্ছে না, কারণ MASTERPID = ps..কমান্ড দুটি পিআইডি রিটার্ন করেছে। একটি হ'ল রেপো প্রক্রিয়া, পাইথন কমান্ড এবং আমি ধরে নিই যে অন্য পিআইডিটি হ'ল মাস্টারপিড = ps..কমান্ড নিজেই, কারণ পিএস অক্সের দিকে তাকালে আমি পিআইডি খুঁজে পাই না এবং মনে হয় এটি নিজস্ব আর্গটি ধরতে পারে । আমি কীভাবে এর নিজস্ব প্রক্রিয়াটি বাদ দিতে পারি (যদি আমার রোগ নির্ণয়টি সঠিক হয়)?
ক্রিস

আমি ভুল ছিল, দ্বিতীয় প্রক্রিয়া হয় grep --color=auto repo। তাই আমি চেষ্টা করেছি: MASTERPID=``ps -eo pid,args | grep repo | grep -v color=auto | awk '{print $1}'``` পিএস-শেফ | গ্রেপ $ ST মাস্টারপিড। | awk '{মুদ্রণ $ 1}' `| পিআইডিএক্স পড়ার সময়; do -9 kill {PIDX} 2> / দেব / নাল মেরে ফেলুন; সম্পন্ন; `তবে কিছুই মারা যায় না।
ক্রিস

বিরামচিহ্নের জন্য দুঃখিত - সম্পাদনা নিষিদ্ধ। আমি 'গ্রেপ-ভি রঙ = অটো' যুক্ত করার চেষ্টা করেছি যা কেবলমাত্র একটি পিআইডি ফেরত আসে তবে এটি মারা যায় না।
ক্রিস

আপনার দ্বিতীয় লাইনে WHIP লুপটি কেবল লক্ষ্য করেছেন noticed শেখার দুর্দান্ত জিনিস এবং এর অর্থ আমার উপরের মন্তব্যগুলি সম্পূর্ণ অপ্রাসঙ্গিক।
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.