में नहीं चला है, तो मैं यह जानना चाहता हूं कि प्रोग्राम चल रहा है या नहीं, तो इस प्रोग्राम को कैसे चलाएं।जांचें कि क्या प्रोग्राम चल रहा है और अगर इसे
उत्तर
प्रक्रिया आईडी को 0 (शून्य) सिग्नल भेजें जिसे आप हत्या कार्य का उपयोग करके जांचना चाहते हैं। यदि प्रक्रिया मौजूद है, तो फ़ंक्शन सत्य लौटाता है, अन्यथा यह झूठा रिटर्न देता है।
उदाहरण:
#-- check if process 1525 is running
$exists = kill 0, 1525;
print "Process is running\n" if ($exists);
आप आप एक सिस्टम कॉल का उपयोग कर कमांड लाइन से होता है जैसे किसी भी कार्यक्रम कॉल कर सकते हैं। यह केवल तभी उपयोगी होता है जब आपको प्रोग्राम के आउटपुट को कैप्चर करने की आवश्यकता न हो।
#!/usr/bin/perl
use strict;
use warnings;
my $status = system("vi fred.txt");
या आप खोल शामिल नहीं करना चाहते हैं:
#!/usr/bin/perl
use strict;
use warnings;
my $status = system("vi", "fred.txt");
ठीक है, लेकिन यह जांचने के लिए कि क्या उसके नाम से प्रक्रिया चल रही है? : डी – Luke
http://search.cpan.org/~durist/Proc-ProcessTable-0.39/ProcessTable.pm मुझे पता नहीं है कि कैसे perl के साथ, लेकिन यह मुझे यकीन है कि आप जो खोज रहे हैं। – Sturm
यह भी देखें http://stackoverflow.com/questions/3844168/how-can-i-check-if-a-unix-process-is-running-in-perl – Bruce
एक और जवाब देने के लिए इसी तरह की है, लेकिन आप यह सुनिश्चित कर लें और प्रयोग "grep -v grep" करने के लिए ग्रेप से मेल नहीं करने की आवश्यकता है खुद को बुलाओ यह सुनिश्चित करेगा कि आप सही नहीं होने पर मूल्यांकन कर रहे हैं जब आप नहीं चाहते हैं।
use strict;
use warnings;
my($cmd, $process_name) = ("command here", "process name here");
if(`ps -aef | grep -v grep $process_name`) {
print "Process is running!\n";
}#if
else {
`$cmd &`;
}#else
यह उत्तर केवल * nix पर काम करता है। निर्मित कमांड और सीपीएएन मॉड्यूल का उपयोग करने के मुख्य बिंदुओं में से एक ज्यादातर मामलों में पोर्टेबिलिटी के बारे में चिंता करने की ज़रूरत नहीं है। 'मार 0, $ pid' विकल्प विंडोज़ की तरह अन्य ओएस पर काम करता है। :-) –
मुझे लगता है कि आप केवल 'pgrep' का उपयोग कर सकते हैं, चल रही प्रक्रियाओं को grepping इतना आम है, इसके लिए एक विशेष आदेश है;) –
हम अगर एक डेमॉन चल रहा है, डेमॉन शुरू लिनक्स पर पीआईडी फ़ाइल की सामग्री पर आधारित इस जांच करने के लिए उपयोग करें:
#!/usr/local/bin/perl
use strict;
use warnings;
use feature qw/ say /;
# vars we report
my (
$token, # optional arg - check against cmd_line if specified
$pid_file, # daemon pid-file, e.g. /var/run/mysqld/mysqld.pid
$pid, # the pid to investigate...
$pid_running, # found a pid and it is running
$cmd_line, # cmd_line of the running pid
$result, # 0-OK, 1=FAIL, exit value
$error, # error message if necessary
);
# working vars
my ($fh, $cmd_file);
die "Daemon pid-file required" unless scalar @ARGV >= 1;
($pid_file, $token) = @ARGV;
if (-s $pid_file) {
open($fh, "<", $pid_file) or die "open $pid_file: $!";
($pid) = <$fh>; chomp $pid; close $fh;
$pid_running = kill 0, $pid;
if ($pid_running) {
$cmd_file = "/proc/$pid/cmdline";
local($/) = "\0"; # C-String NULL terminated
open($fh, "<", $cmd_file) or die "open $cmd_file: $!";
($cmd_line) = <$fh>; close $fh;
if ($cmd_line && $token && $cmd_line !~ m/$token/) {
$error = "token not found: $token in $cmd_line";
}
}
else {
$error = "process not found: $pid";
}
}
else {
$error = "file not found: $pid_file";
}
# if TOKEN - OK running process with matching cmdline
$result = $token ? ($pid_running && $cmd_line && $cmd_line =~ m/$token/)
: ($pid_running || 0);
say "token: ", $token if $token;
say "file: ", $pid_file;
if ($pid) {
say "pid: ", $pid;
say "running: ", $pid_running;
say "cmdline: ", $cmd_line if $cmd_line;
}
say "error: ", $error if $error;
say "exit: ", $result ? 'ok' : 'fail';
exit $result;
मैंने कोशिश की "मारने 0 ..." बात है, लेकिन यदि आपके पास प्रक्रिया को अनुमति नहीं है, तो यह काम नहीं करेगा, क्योंकि "0 मारें" केवल सिग्नल भेजने के लिए संभव है या नहीं। चूंकि आपके पास इसकी कोई अनुमति नहीं है (आपका यूआईडी 0 नहीं है और प्रक्रिया यूआईडी नहीं है), आप हमेशा झूठी रहेंगे।
मैंने लिनक्स में खाते/proc/को ले जाने की कोशिश की ताकि यह जांच सके कि पीआईडी निर्देशिका वहां है या नहीं, लेकिन वह हिस्सा बहुत पोर्टेबल नहीं है: लिनक्स के लिए अच्छा है, लेकिन वास्तव में यूनिक्स में कहीं और काम नहीं करेगा अतिरिक्त प्यार
sub is_running() {
my $pid = shift;
my @proc_data = split(/\s+:\s+/,
`ps uax | awk '{print \$1,":",\$2}' | grep $pid`);
return (@proc_data && $proc_data[1] == $pid) ? $proc_data[0] : undef;
}
प्रयोग, सरल और सुंदर उपयोगी है क्योंकि यह आपको भी रिटर्न प्रक्रिया के मालिक:
my $pid = 12345;
my $owner = &is_running($pid);
if ($owner) {
print "Process with PID $pid is running and owned by \"$owner\".\n";
}
मज़े
तो मैं इस उप HTH लिखा था,! :)
तो $pid
खाली है, प्रक्रिया नहीं चल रही है:
my $pid = `ps -C $progname -o pid=`; # non-windows solution, sorry
- 1. प्रोग्रामेटिक रूप से जांचें कि क्या सिंकडीबी चल रहा है
- 2. जांचें कि एप्लिकेशन चल रहा है या नहीं - InstallJammer
- 3. एचटीएमएल 5 जांचें कि ऑडियो चल रहा है या नहीं?
- 4. जांचें कि क्या jplayer खेल रहा है
- 5. जांचें कि प्रक्रिया चल रही है
- 6. पाइथन जांचें कि क्या वर्तमान प्रक्रिया चल रही है?
- 7. जांचें कि क्या स्पेसबार दबाया जा रहा है और माउस jQuery के साथ एक साथ चल रहा है?
- 8. जांचें कि क्या एक विंडोज सेवा चल रही है?
- 9. कैसे जांचें कि php-fpm स्थापित है और सही तरीके से चल रहा है?
- 10. जांचें कि क्या स्ट्रिंग
- 11. एक्स सर्वर चल रहा है या नहीं जांचें?
- 12. चल रहा है और चल रहा है mysql क्वेरी
- 13. drawBitmap() और setPixels(): क्या चल रहा है?
- 14. क्या प्रोग्राम करना संभव है कि कोई वीडियो चल रहा है या नहीं?
- 15. जांचें कि क्या सीरियल पोर्ट सुन रहा है
- 16. एंड्रॉइड: जांचें कि मेरी सेवा पृष्ठभूमि में चल रही है
- 17. जांचें कि क्या एक Win32 थ्रेड चल रहा है या निलंबित स्थिति में
- 18. यह सुनिश्चित करने का सबसे अच्छा तरीका क्या है कि पर्ल प्रोग्राम का केवल एक उदाहरण चल रहा है?
- 19. जांचें कि क्या MySQL
- 20. जांचें कि कोई php स्क्रिप्ट अभी भी चल रही है
- 21. जांचें कि क्या तत्व एनिमेटेड किया जा रहा है CSS3
- 22. एक प्रोग्राम संगतता मोड में चल रहा है
- 23. जांचें कि क्या सी #
- 24. मेरा "अगर" कथन क्यों नहीं चल रहा है?
- 25. पता लगाना कि क्या SQL सर्वर चल रहा है
- 26. जांचें कि क्या एन्कोडिंग
- 27. जांचें कि 2 आर प्रोग्राम समान हैं
- 28. जांचें कि क्या CoreData विशेषता खाली है
- 29. jQuery - जांचें कि क्या बच्चा div दिखाई दे रहा है
- 30. जांचें कि कोई प्रोग्राम एक पायथन लिपि
कौन सा ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं? –
डेबियन 6, लेकिन सवाल हल हो गया है। – Luke