আমি কীভাবে "টি" এর চেয়ে পুরানো প্রক্রিয়াগুলিকে হত্যা করব?


14

প্রথম, হ্যাঁ আমি এই প্রশ্নটি দেখেছি:

পুরানো প্রক্রিয়াগুলি (এবং হত্যা) সন্ধান করুন

উত্তরগুলি ভুল এবং কার্যকর হয় না। আমি সে অনুযায়ী ভোট দিয়েছি এবং মন্তব্য করেছি।

আমি যে প্রক্রিয়াগুলিকে হত্যা করতে চাই তার সাথে তালিকাভুক্ত হওয়ার সময় এ জাতীয় চেহারাটি দেখতে পাওয়া যায় ps aux | grep page.py:

অ্যাপাচি 424 0.0 0.1 6996 4564? এস 07:02 0:00 / ওএসআর / বিন /পিথন 2.6 / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
আপাচে 2686 0.0 0.1 7000 3460? এস সেপ্টেম্বর ০১:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 2926 0.0 0.0 6996 1404? এস সেপ্টেম্বর ০২:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 7398 0.0 0.0 6996 1400? এস সেপ্টেম্বর ০১:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 9423 0.0 0.1 6996 3824? এস সেপ্টেম্বর ০১:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 11022 0.0 0.0 7004 1400? এস সেপ্টেম্বর ০১:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 15343 0.0 0.1 7004 3788? এস সেপ্টেম্বর ০৯:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 15364 0.0 0.1 7004 3792? এস সেপ্টেম্বর ০৯:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 15397 0.0 0.1 6996 3788? এস সেপ্টেম্বর ০৯:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 16817 0.0 0.1 7000 3788? এস সেপ্টেম্বর ০৯:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 17590 0.0 0.0 7000 1432? এস সেপ্টেম্বর ০:00:০ / / সপ্তাহে / বিন /পিথন ২..6 / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 24448 0.0 0.0 7000 1432? এস সেপ্টেম্বর ০:00:০ / / সপ্তাহে / বিন /পিথন ২..6 / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি
অ্যাপাচি 30361 0.0 0.1 6996 3776? এস সেপ্টেম্বর ০৯:০ / / সপ্তাহে / বিন /পিথন ২.২ / ইউ / অ্যাপস / স্পাইএনপ্প / সারেন্ট / বিন / পেজ.পি

আমি একটি সাধারণ দৈনিক ক্রোন সেটআপ করতে চাইছি page.pyযা এক ঘণ্টারও বেশি পুরানো কোনও প্রক্রিয়া খুঁজে বের করে ফেলবে ।

পূর্বোক্ত প্রশ্নের উত্তর গৃহীত উত্তর কাজ করে না, কারণ এটি বিভিন্ন সময়ের সাথে মেলে না, এটি কেবল processes দিন থেকে days দিন 23 ঘন্টা 59 মিনিট এবং 59 সেকেন্ডে চলমান প্রক্রিয়াগুলির সাথে মেলে। আমি 1-2 ঘন্টা থেকে চলমান প্রক্রিয়াগুলি মেরে ফেলতে চাই না, বরং 1 ঘন্টারও বেশি কিছু চাই ।

উপরে উল্লিখিত প্রশ্নের উত্তর ব্যবহারের অন্য উত্তরটি কার্যকর findহয় না, অন্তত জেন্টু বা সেন্টোস 5.4-তে নয়, এটি হয় একটি সতর্কতা ছুঁড়ে ফেলে, অথবা যদি বলা সতর্কতার উপদেশ অনুসরণ করা হয় তবে কিছুই প্রত্যাবর্তন করে না।

উত্তর:


22

জিএনইউ কিল্ল তাদের প্রসেসনামটি ব্যবহার করে একটি নির্দিষ্ট বয়সের চেয়ে পুরানো প্রক্রিয়াগুলিকে হত্যা করতে পারে।

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1h page.py;fi

1
CentOS 6.6 এ সেই বিকল্পটি উপলভ্য নয়। সংস্করণ: কিল্ল (PSmisc) 22.6।
অন্নিক

9

ক্রিস্টোফরের উত্তরের জন্য ধন্যবাদ আমি এটিকে নিম্নলিখিতগুলির সাথে মানিয়ে নিতে সক্ষম হয়েছি:

find /proc -maxdepth 1 -user apache -type d -mmin +60 -exec basename {} \; \
| xargs ps | grep page.py | awk '{ print $1 }' | sudo xargs kill

-mmin আমি অনুপস্থিত ছিল ফাইন্ড কমান্ড ছিল।


3
প্রক্রিয়াটির বয়স সনাক্ত করার জন্য -ম্মিন উপযুক্ত কিনা তা নিশ্চিত নন।
ল্যাটিনসুড

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

আমি মনে করি না যে এটি আপনার প্রশ্নের উত্তর দেয় কারণ এই উত্তরটি খুব সংকীর্ণ এবং প্রশ্নটি বিস্তৃত।
পোজ

এবং আমি আরও বলতে চাই - এটি মোটেও কাজ করে না: find /proc -maxdepth 1 -type d -name 1 -mmin +60 -ls- / sbin / init কয়েক ঘন্টা ধরে নয়, আপটাইম গণনা সত্ত্বেও তালিকাভুক্ত হচ্ছে না। দেখে মনে হচ্ছে আপনি / proc / এর ডায়ার পরিবর্তনের সময় নির্ভর করতে পারবেন না।
পোয়েজ

3
দুর্ভাগ্যক্রমে, এর জন্য / প্রোকে টাইমস্ট্যাম্পগুলির উপর নির্ভর করা যায় না। কমপক্ষে আর কিছু নয়।
dpk

8

সন্ধান সবসময় কাজ করে না, প্রতিটি সিস্টেমে সময় উপলব্ধ থাকে না এবং এটি আমার রেজেক্স নতুনের স্ট্যাটাস হতে পারে তবে আমি মনে করি না এর চেয়ে বেশি আপনার আরও কিছু প্রয়োজন:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • সমস্ত প্রক্রিয়া তালিকাবদ্ধ করুন এবং কলামগুলি পিআইডি, এলপাসেড (ইটাইমস = সেকেন্ড), কম্যান্ড, ইউজার, টিটি (ধন্যবাদ @ অহফম্যান) সরবরাহ করুন
  • পি.আই.ডি. সহ প্রিন্ট করুন যেখানে ৪ র্থ কলামে ($ 4, USER) পাঠ্য 'বিল্ডার' রয়েছে এবং 5 তম কলামে ($ 5, টিটি) পাঠ্য 'পিটিএস' রয়েছে এবং এলএপিএসপিড কলামে 600 সেকেন্ডের চেয়ে বড় মান রয়েছে (ধন্যবাদ @ এমএমডি)

তারপরে আপনি যে পাইপটি মারতে পারেন বা যা আপনার প্রয়োজন হতে পারে।


আমি মনে করি এটি আরও শক্তিশালী সমাধানগুলির মধ্যে একটি, বিশেষত আপনার ব্যবহারের ক্ষেত্রে ps, তবে আমি একাধিক grepগুলিকে একক মধ্যে ভাঁজ করতাম awkএবং সুরক্ষার জন্য প্যাটার্নের মিলগুলি নির্দিষ্ট কলামগুলিতে সীমাবদ্ধ করে রাখতাম (উদাহরণস্বরূপ একটি কমান্ডের সাথে নাম মেলে নির্মাতা ইত্যাদি)
jmtd

আপনার সময় সুযোগ দিনগুলিতে থাকলে এটি ঠিক আছে, তবে আপনি যদি সময়, মিনিট বা সেকেন্ডের মধ্যে সময় কাটিয়ে পরীক্ষা করতে চান তবে কাজ করবে না।
ভ্লাস্টিমিল ওভেক

"ইটাইম" এর পরিবর্তে "ইটাইমস" ব্যবহার করুন, এটি সেকেন্ডের মধ্যে সময় অতিবাহিত করবে যা পার্স করা আরও সহজ।
আহোফমান

@ জেএমডি এবং অহফম্যান: আপনার মন্তব্য অনুসারে আমি আপডেট করেছি। আমি আশা করি এটি আপনার ইচ্ছা
মতোই হয়েছে

5
# get elapsed time in seconds, filter our only those who >= 3600 sec
ps axh -O etimes  | awk '{if ($2 >= 3600) print $2}'

আপনি যদি চান তবে আপনি psপিআইডি'র তালিকাটি ভিতরে সন্ধানের জন্য খাওয়াতে পারেন , উদাহরণস্বরূপ:

ps h -O etimes 1 2 3

2
etimesps
টিনো

4

আমি মনে করি আপনি আপনার প্রয়োজন অনুসারে পূর্ববর্তী উত্তরগুলির কয়েকটি পরিবর্তন করতে পারেন। যথা:

ফাইলের জন্য (সন্ধান করুন। -ম্যাক্সডেপথ 1-ব্যবহারকারী প্রসেসর-টাইপ ডি -ম্মিন +60)
  do -9 kill (বেসনাম $ ফাইল) হত্যা করুন # আমি কখনই ফাইন্ডের এক্সিকিউটিভের সাথে কাজ করার জন্য বেসনাম পেতে পারি না। আপনি যদি জানেন কিভাবে আমাকে জানাবেন!
সম্পন্ন

অথবা

পিএস -ইও পিড, ইটাইম, কম | awk '$ 2! ~ /^..:..$/ && $ 3 ~ / পৃষ্ঠা \ .পি / {মুদ্রণ $ 1}' | হত্যা -9

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


ক্রিস্টোফার কারেল


7
kill -9শেষ অবলম্বন হিসাবে ব্যবহার করবেন না । ব্যবহার করুন -SIGINTবা -SIGTERM
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

এটি অতিবাহিত সময়ের বিন্যাসটিকে পরীক্ষার মানদণ্ড হিসাবে ব্যবহার করছে, এর মান নয়। যখন এটি এক ঘণ্টারও কম psসময় হয় ^..:..$তখন ফর্ম্যাটে সময় দেয়।
ভ্লাস্টিমিল ওভেক

4
apt-get install psmisc

killall -o 1h $proc_name

আপনি কি psmiscইউটিলিটি সম্পর্কে আরও ব্যাখ্যা করতে সাহায্য করতে পারেন ? ওপি সেন্টোজের কথা উল্লেখ করেছে; এটি আরপিএম হিসাবে পাওয়া যায়?
কাস্তাগলিয়া

4

সমস্যাটি

কমান্ডের etimeকলামকে psসেকেন্ডে রূপান্তরিত (অতিবাহিত সময়) । সময় স্পেসিফিকেশন এই বিন্যাসে হয় [[dd-]hh:]mm:ss। নতুন সংস্করণগুলির psএকটি etimesকলাম রয়েছে যা etimeসেকেন্ডে মান আউটপুট করে ।

সমাধান: সাধারণ কাস্টম awk ফাংশন

এই কাস্টম awk ফাংশন etimeকলামের সমস্ত ফর্ম্যাটকে সমর্থন করে (যেমন 03-12:30:59, 00:07ইত্যাদি)। এটি কেবল আপনার awk স্ক্রিপ্টে পেস্ট করুন, এটি ওয়ান-লাইনারস বান্ধব সমাধান।

function sec(T){C=split(T,A,"[:-]"); return A[C>3?C-3:99]*86400 + A[C>2?C-2:99]*3600 + A[C>1?C-1:99]*60 + A[C>0?C-0:99]*1}
  • sec(T) টি সেকেন্ডে রূপান্তরিত করে
  • T[[dd-]hh:]mm:ssবিন্যাসে সময় নির্দিষ্টকরণ (যেমন etime)
  • CT( ক্ষেত্রের এনএফ ভেরিয়েবলের সমতুল্য) ক্ষেত্রের গণনা
  • Aক্ষেত্রের অ্যারে T(awk এর $ ভেরিয়েবলের সমতুল্য)
  • A[C>3?C-3:99]বিপরীত ক্রমে চতুর্থ মান (যেমন দিনের সংখ্যা) উল্লেখ করার জন্য এটি নিরাপদ উপায়। এই পদ্ধতিটি দরকারী কারণ দিন এবং ঘন্টা alচ্ছিক। অ্যারে যদি দীর্ঘ না হয় তবে এটির মূল্য নির্ধারণ A[99]করবে de 0আমি ধরেছি 99বেশিরভাগ ব্যবহারের ক্ষেত্রে যথেষ্ট উচ্চ high
  • পূর্ণসংখ্যা হিসাবে সেকেন্ড ফিরে আসে

বাস্তব বিশ্বের উদাহরণ

soffice.binপ্রক্রিয়াটি 180 সেকেন্ডের চেয়ে বেশি বয়সী হলে এই ব্যাশ অনলাইনারটি বর্তমান ব্যবহারকারীর অধীনে চলমান প্রক্রিয়াটিকে হত্যা করবে ।

kill -9 $(ps cx -o command,etime,pid | awk '/^soffice.bin/ {if (sec($2)>180) {print $3}} function sec(T){C=split(T,A,"[:-]"); return A[C>3?C-3:99]*86400 + A[C>2?C-2:99]*3600 + A[C>1?C-1:99]*60 + A[C>0?C-0:99]*1}')

1
অন্যান্য উত্তর যে আরও ভাল। এটি মাল্টি প্রোকে পরিচালনা করে।
ডেনি ওয়েইনবার্গ

পূর্ণ কমান্ড / আরগস স্ট্রিংয়ে গ্রেপ করতে সক্ষম হতে 'পিএস' ফর্ম্যাট তালিকার শেষে 'কমান্ড' বা 'আরগস' রাখাই ভাল। শুরুতে এটি স্থাপন করা পিএসকে লম্বা কমান্ডগুলি কেটে দেবে।
ম্যাকসেম

1

lstartমাঠে psএকটি সামঞ্জস্যপূর্ণ সময় ফর্ম্যাট যা আমরা ফীড করতে দেয় dateযুগান্তকারী যেহেতু সেকেন্ড রূপান্তর করবে। তারপরে আমরা কেবল এটি বর্তমান সময়ের সাথে তুলনা করি।

#!/bin/bash
current_time=$(date +%s)
ps axo lstart=,pid=,cmd= |
    grep page.py |
    while read line
    do
        # 60 * 60 is one hour, multiply additional or different factors for other thresholds 
        if (( $(date -d "${line:0:25}" +%s) < current_time - 60 * 60 ))
        then
            echo $line | cut -d ' ' -f 6    # change echo to kill
        fi
    done

0

তারা পূর্বের পোস্টে আপনাকে যে উত্তর দিয়েছে তা আমি সংশোধন করেছি

ps -eo pid,etime,comm | 
egrep '^ *[0-9]+ +([0-9]+-[^ ]*|[0-9]{2}:[0-9]{2}:[0-9]{2}) +/usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py' | 
awk '{print $1}' | 
xargs kill

নিয়মিত অভিব্যক্তি ২ টি ধরণের দ্বিতীয় যুক্তির সন্ধান করে:

  • অঙ্কগুলির আকারে এবং একটি বিয়োগ চিহ্ন Day
  • Hours:minutes:seconds অভিব্যক্তি।

এই ফর্মটি রয়েছে এমন তরুণ প্রক্রিয়াগুলি বাদে সমস্ত কিছুর সাথে মিল থাকা উচিত minutes:seconds


বিকল্পভাবে আমরা PS এটির মতো করার চেষ্টা করতে পারি। / Proc / * / স্ট্যাটিকের 22 তম আর্গুমেন্ট থেকে / proc / আপটাইমের প্রথম যুক্তিটি বিয়োগ করুন।
ল্যাটিনসুড

0

এটি সম্ভবত ওভারকিল, তবে আমি এটি শেষ করতে এবং এটি যে কাজ করে তা পরীক্ষা করার জন্য যথেষ্ট কৌতূহল পেয়েছি (অবশ্যই আমার সিস্টেমে একটি পৃথক প্রক্রিয়া নামের উপর, অবশ্যই)। আপনি ক্যাপচারিংটিকে ক্যাপচার করতে $userএবং $pidরেজিএক্সপপকে সরলীকরণ করতে পারেন, যা আমি কেবল ডিবাগিংয়ের জন্য যুক্ত করেছি, এবং পিছনে ফিরছে বলে মনে হয় না। পারল ৫.১০ থেকে প্রাপ্ত ক্যাপচারগুলি আরও কয়েকটি লাইন শেভ করবে, তবে এটি পুরানো পার্লগুলিতে কাজ করা উচিত।

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

#!/usr/bin/perl -T
use strict; use warnings;

$ENV{"PATH"} = "/usr/bin:/bin";                                                       

my (undef,undef,$hour) = localtime(time);                                             
my $target = $hour - 2; # Flag process before this hour                               
my $grep = 'page.py';                                                   

my @proclist = `ps -ef | grep $grep`;                                                 
foreach my $proc (@proclist)                                                          
{                                                                                     
    $proc =~ /(\w+)\s+(\d+)\s+\d+\s+\d+\s+(.*?).*/;                   
    my $user = $1;                                                                    
    my $pid = $2;                                                                     
    my $stime = $3;                                                                   

    $stime =~ s/(\d+):(\d+)/$1/;                                                      

    # We're going to do a numeric compare against strings that                        
    # potentially compare things like 'Aug01' when the STIME is old                   
    # enough.  We don't care, and we want to catch those old pids, so                 
    # we just turn the warnings off inside this foreach.                              
    no warnings 'numeric';                                                            

    unless ($stime > $target)                                                         
    {                                                                                 
        print "$pid\n";                                                               
    }                                                                                 
}


0

আমার কাছে / প্রোকে ভুল তারিখ সহ একটি সার্ভার রয়েছে এবং এটি কার্যকর হয় না তাই আমি এই স্ক্রিপ্টটি লিখেছিলাম:

#!/bin/bash

MAX_DAYS=7  #set the max days you want here
MAX_TIME=$(( $(date +'%s') - $((60*60*24*$MAX_DAYS)) ))

function search_and_destroy()
{
        PATTERN=$1
        for p in $(ps ux|grep "$PATTERN"|grep -v grep| awk '{ print $2 }')
        do
            test $(( $MAX_TIME - $(date -d "`ps -p $p -o lstart=`" +'%s') )) -ge 0 && kill -9 $p
        done
}

search_and_destroy " command1 "
search_and_destroy " command2 "

0

পাইথন সংস্করণ সিটিটাইম ব্যবহার করে প্রক্রিয়াগুলিতে প্রবেশ করে /proc:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# kills processes older than HOURS_DELTA hours

import os, time

SIGNAL=15
HOURS_DELTA=1

pids = [int(pid) for pid in os.listdir('/proc') if pid.isdigit()]

for pid in pids:
    if os.stat(os.path.join('/proc', str(pid))).st_ctime < time.time() - HOURS_DELTA * 3600:
        try:
            os.kill(pid, SIGNAL)
        except:
            print "Couldn't kill process %d" % pid

0

আমি এই সাধারণ স্ক্রিপ্টটি ব্যবহার করি এটি প্রক্রিয়া এবং সেকেন্ডে বয়সের দুটি আর্গুমেন্ট লাগে।

#!/bin/bash
# first argument name of the process to check
# second argument maximum age in seconds
# i.e kill lighttpd after 5 minutes
#   script.sh lighttpd 300 
process=$1
maximum_runtime=$2
pid=`pgrep $process`
if [ $? -ne 0 ]
then
        exit 0
fi
process_start_time=`stat /proc/$pid/cmdline --printf '%X'`
current_time=`date +%s`
let diff=$current_time-$process_start_time

if [ $diff -gt $maximum_runtime ]
then
        kill -3 $pid
fi

0

এই কাজ করা উচিত

killall --older-than 1h $proc_name


1
এটি কীভাবে [ইতিমধ্যে বিদ্যমান উত্তরগুলি] যুক্ত বা উন্নত করে?
পৌঁছেছে

2
@ উত্স: সমস্ত ন্যায্যতায়, আমাকে একটি উত্তর উল্লেখ করার জন্য অনুসন্ধান করতে হয়েছিল --older-than এবং এটি উপেক্ষা করা সহজ। অন্যান্য উত্তরের তুলনায় এটি অনেক সহজ এবং এটি এখন EL7 এও উপলব্ধ।
সোভেন

@ এটি পৌঁছে দিয়ে কোনও প্রক্রিয়া মারা যাওয়ার জন্য অ্যাডাব্ল্যাড / সেড ইত্যাদি ব্যবহার করে স্ক্রিপ্টগুলি লেখার চেয়ে সহজ করে তোলে, আমি মনে করি এটি অনেক সহজ এবং পরিষ্কার
জাবির আহমেদ ২

0

আমি অন্যান্য সমাধানটির সাথে সন্তুষ্ট ছিলাম না, তাদের বেশিরভাগই অত্যন্ত গুপ্ত (আমার বাশ জ্ঞান একধরণের সীমাবদ্ধ) এবং তাই আমি সেগুলি কাস্টমাইজ করতে পারি না ...
আমি আমার নিজস্ব সমাধান তৈরি করেছি, এটি সম্ভবত সেরা নয় তবে এটি কার্যকর এবং এটা পাঠযোগ্য

আপনি এই স্ক্রিপ্টটি কোনও ফাইলে সংরক্ষণ করতে এবং এটি সম্পাদনযোগ্য করতে পারেন (শেষ পর্যন্ত ক্রোন ব্যবহার করে এটি কল করুন)

#!/bin/bash
## time in second that trigger the kill
LIMIT=10
## [] skip the grep from the process list
PROC_NAME="[m]y process name"
## etimes return the time in seconds
TIME_SEC=$(ps axo etimes,pid,command | grep "$PROC_NAME" | awk {'print$1'})
PID=$(ps axo etimes,pid,command | grep "$PROC_NAME" | awk {'print$2'})

if [ -n "$TIME_SEC" ] 
    then
    if (( $TIME_SEC > $LIMIT )); then
        kill $PID
    fi
fi

-2

72 = 3 দিন 48 = 2 দিন 24 = 1 দিন

a1=$(TZ=72 date +%d) ps -ef| cat filex.txt | sed '/[JFMASOND][aepuco][nbrylgptvc] '$a1'/!d' | awk '{ print $2 " " $5 " " $6 }' > file2.txt

এটি কাজ করে :)


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