यदि प्रक्रिया चल रही है, यह निर्धारित करने के लिए लिनक्स / यूनिक्स कमांड?


97

मुझे एक प्लेटफ़ॉर्म स्वतंत्र (लिनक्स / यूनिक्स | ओएसएक्स) शेल / बैश कमांड की आवश्यकता है जो यह निर्धारित करेगा कि क्या कोई विशिष्ट प्रक्रिया चल रही है। जैसे mysqld, httpd... ऐसा करने का सबसे सरल तरीका / आदेश क्या है?

जवाबों:


168

जबकि pidofऔर pgrepक्या चल रहा है, यह निर्धारित करने के लिए महान उपकरण हैं, वे दोनों, दुर्भाग्य से, कुछ ऑपरेटिंग सिस्टम पर अनुपलब्ध हैं। एक निश्चित विफल सुरक्षित निम्नलिखित का उपयोग करने के लिए किया जाएगा:ps cax | grep command

Gentoo लिनक्स पर आउटपुट:

14484? एस 0:00 अपाचे 2
14667? एस 0:00 अपाचे 2
19620? Sl 0:00 अपाचे 2
21132? एसएस 0 अपाचे 2

OS X पर आउटपुट:

42582 ?? Z 0: 00.00 (smbclient)
46529 ?? Z 0: 00.00 (smbclient)
46539 ?? Z 0: 00.00 (smbclient)
46547 ?? Z 0: 00.00 (smbclient)
46586 ?? Z 0: 00.00 (smbclient)
46594 ?? Z 0: 00.00 (smbclient)

लिनक्स और OS X दोनों पर, grep एक निकास कोड देता है, ताकि यह जांचना आसान हो कि क्या प्रक्रिया पाई गई या नहीं:

#!/bin/bash
ps cax | grep httpd > /dev/null
if [ $? -eq 0 ]; then
  echo "Process is running."
else
  echo "Process is not running."
fi

इसके अलावा, यदि आप पीआईडी ​​की सूची चाहते हैं, तो आप उन लोगों के लिए भी आसानी से तैयार कर सकते हैं:

ps cax | grep httpd | grep -o '^ [] * [0-9] *'

जिसका आउटपुट लिनक्स और OS X पर समान है:

3519 3521 3523 3524

निम्नलिखित का आउटपुट एक रिक्त स्ट्रिंग है, जो इस दृष्टिकोण को चलने वाली प्रक्रियाओं के लिए सुरक्षित बनाता है:

गूंज ps cax | grep aasdfasdf | grep -o '^[ ]*[0-9]*'

यह दृष्टिकोण एक सरल खाली स्ट्रिंग परीक्षण लिखने के लिए उपयुक्त है, फिर भी खोजे गए पीआईडी ​​के माध्यम से पुनरावृत्ति।

#!/bin/bash
PROCESS=$1
PIDS=`ps cax | grep $PROCESS | grep -o '^[ ]*[0-9]*'`
if [ -z "$PIDS" ]; then
  echo "Process not running." 1>&2
  exit 1
else
  for PID in $PIDS; do
    echo $PID
  done
fi

आप इसे एक फ़ाइल को सहेजकर ("रनिंग" नाम दिया गया) परीक्षण कर सकते हैं (निष्पादित "chmod + x चल रहा है) और इसे एक पैरामीटर के साथ निष्पादित कर रहे हैं: ./running "httpd"

#!/bin/bash
ps cax | grep httpd
if [ $? -eq 0 ]; then
  echo "Process is running."
else
  echo "Process is not running."
fi

चेतावनी !!!

कृपया ध्यान रखें कि आप बस ps axइसका आउटपुट पार्स कर रहे हैं, जिसका अर्थ है कि, जैसा कि लिनक्स आउटपुट में देखा जाता है, यह केवल प्रक्रियाओं पर मेल नहीं खा रहा है, बल्कि उस कार्यक्रम के लिए दिए गए तर्क भी हैं। मैं इस विधि का उपयोग करते समय यथासंभव विशिष्ट होने की सलाह देता हूं (जैसे ./running "mysql"'mysqld' प्रक्रियाओं से भी मेल खाएगा)। मैं whichजहां संभव हो, एक पूर्ण पथ के खिलाफ जांच करने के लिए उपयोग करने की सलाह देता हूं ।


संदर्भ:

http://linux.about.com/od/commands/l/blcmdl1_ps.htm

http://linux.about.com/od/commands/l/blcmdl1_grep.htm


प्रक्रिया चल रही है, लेकिन रोका जा सकता है। इसलिए यदि लक्ष्य का परीक्षण करना है यदि mysqld या httpd "ऊपर और चल रहा है" (उत्तर), तो आपको यह भी जांचना चाहिए कि यह रोका गया है या नहीं।
ओलुक

2
क्षमा करें, लेकिन जबकि उत्तर निश्चित रूप से एक अर्थपूर्ण दृष्टिकोण से सही है, मैं पूरी तरह से इस प्रक्रिया को प्राप्त करने की कोशिश कर रहा हूं। इस तरह के किसी भी दृष्टिकोण को जल्द या बाद में विफल करने के लिए बर्बाद किया जाता है (आप वास्तव में खुद को स्वीकार करते हैं, यह कहकर कि अधिक जांच की आवश्यकता है)। मैंने एक अलग उत्तर में अपनी सिफारिश जोड़ी है।
पेटेर

6
grepअपने आप को भी चलता हुआ पाएगा (जैसे ps cax | grep randomnameहमेशा 0 लौटेगा क्योंकि grepपाया जाता है grep randomname(आशा है कि यह स्पष्ट है ...)। एक फिक्स प्रक्रिया नाम के पहले अक्षर के चारों ओर वर्ग कोष्ठक जोड़ना है, जैसे ps cax | grep [r]andomname
काइल जी।

ps cax | rev | cut -f1 -d' ' | revआसान नाम के लिए केवल नाम कॉलम दिखाएगा।
टाइजॉइड

1
ps caxकमांड का नाम पूर्ण रूप से आउटपुट नहीं कर सकता। जैसे यह "क्रोमियम-ब्राउजर" के बजाय "क्रोमियम-ब्राउज" को प्रिंट करता है।
जारो

24

आप पीआईडी ​​को जानते होंगे!

प्रक्रिया तर्कों (जैसे pgrep "mysqld") पर कुछ प्रकार के पैटर्न मान्यता को करने की कोशिश करके एक प्रक्रिया खोजना एक ऐसी रणनीति है जो जल्द या बाद में विफल होने के लिए बर्बाद होती है। यदि आपके पास दो mysqld चल रहा है तो क्या होगा? उस दृष्टिकोण को भूल जाओ। आप इसे अस्थायी रूप से सही पाते हैं और यह एक या दो साल के लिए काम करता है, लेकिन फिर कुछ ऐसा होता है जिसके बारे में आपने सोचा नहीं है।

केवल प्रक्रिया आईडी (पीआईडी) वास्तव में अद्वितीय है।

जब आप बैकग्राउंड में कुछ लॉन्च करते हैं तो हमेशा पीड को स्टोर करें। बैश में यह $!बैश वैरिएबल के साथ किया जा सकता है । ऐसा करने से आप खुद को SO बहुत परेशानी से बचा लेंगे।

यदि प्रक्रिया चल रही है (पीआईडी ​​द्वारा) कैसे निर्धारित करें

तो अब सवाल बनता है कि कैसे पता करें कि क्या एक पिड चल रहा है।

बस करो:

ps -o pid = -p <pid>

यह POSIX है और इसलिए पोर्टेबल है। यदि प्रक्रिया चल रही है या प्रक्रिया नहीं चल रही है तो कुछ भी नहीं लौटाने पर यह स्वयं को वापस लौटा देगा। कड़ाई से बोलना कमांड एक कॉलम को लौटाएगा pid, लेकिन जब से हमने दिया है कि एक खाली शीर्षक हेडर (सामान तुरंत समान चिह्न से पहले) और यह एकमात्र कॉलम है जो अनुरोध किया गया है तो पीएस कमांड हेडर का उपयोग बिल्कुल नहीं करेगा। जो हम चाहते हैं क्योंकि यह पार्स करना आसान बनाता है।

यह लिनक्स, बीएसडी, सोलारिस आदि पर काम करेगा।

एक अन्य रणनीति उपरोक्त psकमांड से बाहर निकलने के मूल्य पर परीक्षण करना होगा । यदि प्रक्रिया चल रही है और यह शून्य नहीं है तो यह शून्य होना चाहिए। POSIX कल्पना कहती है कि psयदि कोई त्रुटि हुई है तो 0 से बाहर निकलना चाहिए, लेकिन यह मेरे लिए अस्पष्ट है कि 'एक त्रुटि' क्या है। इसलिए मैं व्यक्तिगत रूप से उस रणनीति का उपयोग नहीं कर रहा हूं, हालांकि मुझे पूरा यकीन है कि यह सभी यूनिक्स / लिनक्स प्लेटफार्मों पर भी काम करेगा।


1
सिवाय इसके कि इस सवाल का जवाब नहीं है, जो यह निर्धारित करने के लिए है कि क्या सेवा चल रही है। पीआईडी, ऐसे मामलों में नहीं जाना इसलिए इस जवाब ही मान्य है अगर आप कर पीआईडी पता है।
जीवन के राजमार्ग

2
गलत। मेरी टिप्पणी का एक पूरा बिंदु एक कदम वापस लेना है और कहना है कि यदि आप पहली बार खुद को उस स्थिति में पाते हैं जहां आपको grep <sometext>किसी दिए गए प्रक्रिया को खोजने के लिए कुछ करना पड़ता है तो आपने प्रक्रिया को शुरू करते समय कुछ गलत किया है, IMHO। मैं इसे ओपी के प्रश्न से लेता हूं कि वास्तव में इस पर उनका नियंत्रण है कि प्रक्रिया कैसे शुरू की जाती है।
पीटर नोव

2
ओपी प्रश्न के लिए अधिक सही "पद" होना चाहिए "यदि कोई सेवा चल रही है यह निर्धारित करने के लिए क्रॉस-प्लेटफ़ॉर्म कमांड", यह चेक चलाने वाली समान प्रणाली नहीं है, लेकिन एक बाहरी प्रणाली है, इसलिए पीआईडी ​​बस नहीं होने जा रहा है बिल्कुल पता है।
हाईवे ऑफ लाइफ

2
यह मूर्ख नहीं है। पीआईडी ​​के चारों ओर लपेटने के लिए सिस्टम के लंबे समय तक बने रहने के बाद आप जिस प्रक्रिया में रुचि रखते हैं, उसकी मृत्यु हो सकती है, और एक अन्य प्रक्रिया को उसी पीआईडी ​​को आवंटित किया जा सकता है जिसे आप चेक कर रहे हैं। stackoverflow.com/questions/11323410/linux-pid-recycling
क्लेमाशन

1
@claymation। निष्पक्ष बिंदु। हालांकि PID विधि पैटर्न के मिलान से बेहतर है जो प्रक्रिया के आर्गनों से मेल खाती है क्योंकि PID क्लैश गलती से एक ही सेवा के दो उदाहरण शुरू करने की तुलना में अधिक संभावना नहीं है। केवल मेरे दो सेंट्स। :-)
पीहर

15

अधिकांश लिनक्स वितरण पर, आप pidof(8) का उपयोग कर सकते हैं ।

यह निर्दिष्ट प्रक्रियाओं के सभी चल रहे उदाहरणों की प्रक्रिया आईडी को प्रिंट करेगा, या अगर कोई उदाहरण नहीं चल रहा है तो कुछ भी नहीं।

उदाहरण के लिए, मेरे सिस्टम पर (मेरे पास चार उदाहरण हैं bashऔर remminaचलने का एक उदाहरण ):

$ pidof bash remmina
6148 6147 6144 5603 21598

अन्य यूनियनों, pgrepया के संयोजन पर psऔर grepउसी चीज को प्राप्त करेंगे, जैसा कि दूसरों ने सही बताया है।


+1 pidof httpdRed Hat 5 पर ठीक काम करता है। लेकिन मेरी Red Hat 4 पर, pidofमौजूद नहीं है :-(
olibre

वास्तव में, यह कमांड मेरे विचार से कम व्यापक है, मैंने इसे स्पष्ट करने के लिए अपना उत्तर संपादित किया।
Frédéric Hamidi

अच्छा साफ जवाब। (समर्थित प्रणालियों पर)। धन्यवाद।
मटका देव

7

यह यूनिक्स, बीएसडी और लिनक्स के अधिकांश स्वादों पर काम करना चाहिए:

PATH=/usr/ucb:${PATH} ps aux | grep httpd | grep -v grep

पर परीक्षण किया गया:

  • SunOS 5.10 [इसलिए PATH=...]
  • लिनक्स 2.6.32 (CentOS)
  • लिनक्स 3.0.0 (उबंटू)
  • डार्विन 11.2.0
  • FreeBSD 9.0-STABLE
  • Red Hat Enterprise Linux ES रिलीज़ 4
  • Red Hat Enterprise Linux सर्वर रिलीज़ 5

2
+1 हां बस ps। दूसरे से बचने के लिए grepमैं सुझाव देता हूं:ps aux | grep [h]ttpd
ओलीब्रे

मैंने यहाँ वर्ग ब्रैकेट ट्रिक का उपयोग नहीं किया, जिससे कि मुख्य में एक चर लगाना आसान हो सके grep
Johnsyweb

1
सब ठीक है;) मैंने अभी Red Hat AS ४ और Red Hat AP ५ पर परीक्षण किया है। तो आप अपनी सूची में जोड़ सकते हैं: Red Hat Enterprise Linux ES रिलीज़ 4 और Red Hat Enterprise Linux सर्वर रिलीज़ 5 । चीयर्स
ओलिब्रे

@Downvoter: क्यों? मुझसे क्या छूट गया? जहाँ तक मैं बता सकता हूँ, स्वीकृत जवाब वही खोज कर रहा है!
20

6

सबसे सरल तरीका है ps और grep का उपयोग करना:

command="httpd"
running=`ps ax | grep -v grep | grep $command | wc -l`
if [ running -gt 0 ]; then
    echo "Command is running"
else
    echo "Command is not running"
fi

यदि आपकी कमांड में कुछ कमांड तर्क हैं, तो आप 'grep $ कमांड' के बाद 'grep cmd_arg1' को अन्य संभावित प्रक्रियाओं को फ़िल्टर करने के लिए भी रख सकते हैं, जिनमें आपकी रुचि नहीं है।

उदाहरण: अगर आपूर्ति तर्क के साथ कोई जावा प्रक्रिया मुझे दिखाओ:

-Djava.util.logging.config.file = logging.properties

दौड रहा है

ps ax | grep -v grep | grep java | grep java.util.logging.config.file=logging.properties | wc -l

2
दरअसल, उपयोग ps caxकरने से उपयोग की आवश्यकता समाप्त हो जाती है grep -v। तो उदाहरण के लिए, आप उपयोग कर सकते हैं ps cax | grep java > /dev/null || echo "Java not running":।
लाइफ ऑफ

1
तीसरी पंक्ति में कोई गलती है। कृपया "रनिंग" को "$ रनिंग" में बदलें।
प्रोग्रामर

5

बस एक मामूली जोड़: यदि आप -cफ़्लैग को ps में जोड़ते हैं, तो आपको grep -vबाद वाली grep प्रक्रिया वाली लाइन को हटाने की आवश्यकता नहीं है । अर्थात

ps acux | grep cron

सभी प्रकार की आपको bsd-ish प्रणाली पर (इसमें MacOSX शामिल है) आप -uकम जानकारी की आवश्यकता होने पर दूर छोड़ सकते हैं।

ऐसी प्रणाली पर जहां मूल psकमांड का आनुवांशिकी SysV को इंगित करता है , आप उपयोग करेंगे

ps -e |grep cron

या

ps -el |grep cron 

केवल pid और प्रक्रिया नाम से अधिक वाली सूची के लिए। बेशक आप -o <field,field,...>विकल्प का उपयोग करके प्रिंट करने के लिए विशिष्ट क्षेत्रों का चयन कर सकते हैं ।


यह उत्तर पोर्टेबल कैसे है? (आप कहते हैं कि पीएस कमांड के विभिन्न रूपों को विभिन्न प्लेटफार्मों पर उपयोग किया जाना चाहिए)
पेटेर

पीएस दुर्भाग्य से उन उपकरणों में से एक है, जिनके वंश के आधार पर एक ही परिणाम के लिए विकल्पों का एक अलग सेट है। इसलिए, जब तक कि आप अपना खुद का (फिर से किसी और चीज के लिए असंगत) न लिख दें, तब तक जाने का रास्ता विरासत की मुख्य लाइनों को जानना और उसके अनुसार अनुकूलित करना होगा। जब आप स्क्रिप्टिंग कर रहे हों तो यह अलग है - वहाँ आप इन अंतरों का उपयोग यह निर्धारित करने के लिए करेंगे कि आप किस स्क्रिप्ट पर हैं और अपनी स्क्रिप्ट के व्यवहार को अनुकूलित करें। नीचे पंक्ति: आपको दोनों को जानना होगा। प्रसिद्ध उदाहरण: लैरी वॉल की "कॉन्फ़िगर" स्क्रिप्ट। प्रसिद्ध उद्धरण: बधाई हो, आप Eunice नहीं चला रहे हैं।
ततजना हेसर

5

विभिन्न सुझावों को एक साथ रखते हुए, सबसे साफ संस्करण जिसे मैं (बिना अविश्वसनीय grep जो शब्दों के कुछ हिस्सों को चलाता है) के साथ आने में सक्षम था:

kill -0 $(pidof mysql) 2> /dev/null || echo "Mysql ain't runnin' message/actions"

किल -0 प्रक्रिया को नहीं मारता है लेकिन जाँचता है कि क्या यह मौजूद है और फिर सही है, यदि आपके पास आपके सिस्टम पर पिडोफ नहीं है, तो प्रक्रिया शुरू करने पर पिड को स्टोर करें:

$ mysql &
$ echo $! > pid_stored

फिर स्क्रिप्ट में:

kill -0 $(cat pid_stored) 2> /dev/null || echo "Mysql ain't runnin' message/actions"

3

मैं उपयोग करता हूं, pgrep -l httpdलेकिन यह सुनिश्चित नहीं है कि यह किसी भी मंच पर मौजूद है ...
OSX पर कौन पुष्टि कर सकता है?


धन्यवाद @ जोहानिसवेब क्या आप pidofकृपया जाँच भी कर सकते हैं ? ठीक है आपने किया धन्यवाद। इसलिए हमें OSX पर काम करने के लिए कुछ और ढूंढना चाहिए ... आपका मूल ps|grepएकल समाधान हो सकता है ;-)
olibre

1

आपको अपनी प्रक्रिया का पीआईडी ​​पता होना चाहिए।

जब आप इसे लॉन्च करते हैं, तो इसका पीआईडी $!वैरिएबल में रिकॉर्ड किया जाएगा । इस PID को किसी फ़ाइल में सहेजें।

फिर आपको यह जांचने की आवश्यकता होगी कि क्या यह पीआईडी ​​एक चल रही प्रक्रिया से मेल खाती है। यहाँ एक पूरी कंकाल लिपि है:

FILE="/tmp/myapp.pid"

if [ -f $FILE ];
then
   PID=$(cat $FILE)
else
   PID=1
fi

ps -o pid= -p $PID
if [ $? -eq 0 ]; then
  echo "Process already running."  
else
  echo "Starting process."
  run_my_app &
  echo $! > $FILE
fi

के उत्तर के आधार पर peterh। यदि दी गई पीआईडी ​​चल रही है तो यह जानने की चाल ps -o pid= -p $PIDअनुदेश में है।


0

इस दृष्टिकोण का उपयोग कमांड कमांड 'ps', 'पिडोफ' में किया जा सकता है और बाकी उपलब्ध नहीं हैं। मैं अपने टूल / स्क्रिप्ट्स / प्रोग्राम्स में व्यक्तिगत रूप से बहुत बार procfs का उपयोग करता हूं।

   egrep -m1  "mysqld$|httpd$" /proc/[0-9]*/status | cut -d'/' -f3

थोड़ा स्पष्टीकरण क्या चल रहा है:

  1. -m1 - पहले मैच पर रोक प्रक्रिया
  2. "mysqld $ | httpd $" - grep उन लाइनों से मेल खाएगा जो mysqld या httpd पर समाप्त हुईं
  3. / proc / [0-9] * - बैश लाइन से मेल खाएगा जो किसी भी संख्या के साथ शुरू हुआ था
  4. कटौती - बस सीमांकक '/' द्वारा आउटपुट विभाजित करें और फ़ील्ड 3 निकालें

0

यह उन प्रक्रियाओं की संख्या को प्रिंट करता है जिनका बेसनेम "क्रोमियम-ब्राउज़र" है:

ps -e -o args= | awk 'BEGIN{c=0}{
 if(!match($1,/^\[.*\]$/)){sub(".*/","",$1)} # Do not strip process names enclosed by square brackets.
 if($1==cmd){c++}
}END{print c}' cmd="chromium-browser"

यदि यह "0" प्रिंट करता है, तो प्रक्रिया नहीं चल रही है। कमांड मानती है कि प्रक्रिया पथ में ब्रेकिंग स्पेस नहीं है। मैंने इसे निलंबित प्रक्रियाओं या ज़ोंबी प्रक्रियाओं के साथ परीक्षण नहीं किया है।

के gwakरूप में उपयोग करके परीक्षण किया गयाawkलिनक्स में विकल्प के ।

यहाँ कुछ उदाहरण उपयोग के साथ एक अधिक बहुमुखी समाधान है:

#!/bin/sh
isProcessRunning() {
if [ "${1-}" = "-q" ]; then
 local quiet=1;
 shift
else
 local quiet=0;
fi
ps -e -o pid,args= | awk 'BEGIN{status=1}{
 name=$2
 if(name !~ /^\[.*\]$/){sub(".*/","",name)} # strip dirname, if process name is not enclosed by square brackets.
 if(name==cmd){status=0; if(q){exit}else{print $0}}
}END{exit status}' cmd="$1" q=$quiet
}

process='chromium-browser'

printf "Process \"${process}\" is "
if isProcessRunning -q "$process" 
 then printf "running.\n"
 else printf "not running.\n"; fi

printf "Listing of matching processes (PID and process name with command line arguments):\n"
isProcessRunning "$process"

0

यहाँ मेरा संस्करण है। विशेषताएं:

  • सटीक प्रोग्राम नाम (फ़ंक्शन का पहला तर्क) के लिए चेक। "mysql" की खोज "mysqld" से मेल नहीं खाएगी
  • खोज कार्यक्रम तर्क (समारोह के दूसरे तर्क)

स्क्रिप्ट:

#!/bin/bash

# $1 - cmd
# $2 - args
# return: 0 - no error, running; 1 - error, not running
function isRunning() {
    for i in $(pidof $1); do
        cat /proc/$i/cmdline | tr '\000' ' ' | grep -F -e "$2" 1>&2> /dev/null
        if [ $? -eq 0 ]; then
            return 0
        fi
    done
    return 1
}

isRunning java "-Djava.util.logging.config.file=logging.properties"
if [ $? -ne 0 ]; then
    echo "not running, starting..."
fi

0

जवाब में से कोई भी मेरे लिए काम नहीं करता है, इसलिए मेरा है:

process="$(pidof YOURPROCESSHERE|tr -d '\n')"
if [[ -z "${process// }" ]]; then
  echo "Process is not running."
else
  echo "Process is running."
fi

स्पष्टीकरण:

|tr -d '\n'

यह टर्मिनल द्वारा बनाई गई गाड़ी वापसी को हटा देता है। बाकी इस पोस्ट के द्वारा समझाया जा सकता है ।


-1

निम्नलिखित शेल फ़ंक्शन, केवल POSIX मानक आदेशों और विकल्पों पर आधारित होने के कारण अधिकांश (यदि कोई नहीं है) यूनिक्स और लिनक्स सिस्टम पर काम करना चाहिए। :

isPidRunning() {
  cmd=`
    PATH=\`getconf PATH\` export PATH
    ps -e -o pid= -o comm= |
      awk '$2 ~ "^.*/'"$1"'$" || $2 ~ "^'"$1"'$" {print $1,$2}'
  `
  [ -n "$cmd" ] &&
    printf "%s is running\n%s\n\n" "$1" "$cmd" ||
    printf "%s is not running\n\n" $1
  [ -n "$cmd" ]
}

$ isPidRunning httpd
httpd is running
586 /usr/apache/bin/httpd
588 /usr/apache/bin/httpd

$ isPidRunning ksh
ksh is running
5230 ksh

$ isPidRunning bash
bash is not running

ध्यान दें कि जब यह संदिग्ध "0]" कमांड नाम पारित हो जाएगा, तो यह घुट जाएगा और उनके नामों में एक एम्बेडेड स्थान होने वाली प्रक्रियाओं की पहचान करने में भी विफल रहेगा।

यह भी ध्यान दें कि सबसे ऊपर और स्वीकृत समाधान गैर पोर्टेबल psविकल्प की मांग करता है और कृतज्ञतापूर्वक एक शेल का उपयोग करता है, जो कि इसकी लोकप्रियता के बावजूद, हर यूनिक्स / लिनक्स मशीन ( bash) पर मौजूद होने की गारंटी नहीं है


$ isPidRunning 0]प्रिंट्स जैसे "0] 3 चल रहा है [ksoftirqd / 0] 8 [rcuop / 0] 17 [rcuos / 0] 26 [rcuob / 0] 34 [प्रवास / 0] 35 [चौकीदार [0]" यहाँ।
जारो

आपको उस PATH चीज की क्या आवश्यकता है?
जारो

मैंने यहां समाधान का विकास किया ।
जारो

@jarno PATH सेटिंग स्क्रिप्ट के पोर्टेबल होने के लिए एक आवश्यकता है। अन्यथा, यह कम से कम सोलारिस 10 और पुराने और संभवतः अन्य यूनिक्स कार्यान्वयन पर विफल हो जाएगा।
जूलियरे

1
@ कर्णो मैं इसे कर सकता हूँ, लेकिन जागने के लिए भी इस पथ को दोहराने की आवश्यकता होगी। ध्यान दें कि मैं पूर्व-पोसिक्स सिंटैक्स बॉर्न गोले के साथ पोर्टेबल होने के लिए पुराने बैकटिक सिंटैक्स पर वापस लौट आया।
जूलियाग्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.