Programming :: Perl Behavior When Process Launched In `backticks` Crashes
May 11, 2011
I have a friend (really), who is the author of a Perl application that uses backticks to launch an external application. The process reads a largish set of data files, and printing largish amounts of data which is consumed by Perl. Very rarely, the external application crashes. When it does, the Perl script has been seen to hang, and the host CPU usage goes to 100%. The Perl script can be killed and the host recovers.
The question is whether this is predictable/expected behavior, and if it is, is there anything within Perl which can be used to defend against this behavior. I have already recommended the use of the open() form of reading from a child process, but I'm not sure whether that really accomplishes anything. My theory on the matter is that Perl ends up busy-waiting on the child's output, never receiving any EOF, and consuming all CPU. I cannot see how using open() changes that behavior. I am now interested in this problem so I can avoid causing similar behaviors in the future, and just because 'inquiring minds wish to know'.
EDIT: I suppose I should have added that this is on generic 32-bit Linux hosts; Perl 5.8.X
I need to control daemons like dhcp/bind from within a perl script. I could run the script as root to restart/stop/start the daemons however, this is not good for security.
What are the ways of controlling processes within perl as different users?
i had a problem with the find command in bash (which i deem is close enough to a promming language, if not please move this thread :P). i tried to reduce the command to the problem. i want the backticks, or $() for that matter; to be evaluated by -exec of find, not by bash. is that a caveat of find?
Code:
$ find testd -exec echo `basename {}` ; #confused me test test/a test/b
[code]...
edit: i found out whats causing this. `basename {}` gets evaluated by bash before find is invoked, returns {} and `find . -exec echo {} ;" is run. now my question is, how to escape this eveluation from happening before.
Is there a way to configure a process to be launched in the "n"th working day? Let's say n=5. In this case, if the 5th of the month is on Saturday, then the 5th working day will be on Monday so I would like to launch the process on the 7th. The same when the 5th of the month is on Monday, it means that it's only the 3rd working day, so I would need to launch the process on Wednesday - the 7th of the month.
So i have this simple c++ program, which has an array of ints and a pointer to it. Then i have to change one element in the array. Problem is that on ubuntu(netbeans) it works the first time i change the element, then for the other times there is no change in the array after leaving the function.
First i thought it was a bug, but i tried the code on win(visual studio) and it worked like it should.
I don't understand what the problem is? Im not using any platform specific function(that i know of )?
I have some PHP code that is supposed to invoke a bash script and it doesn't seem to be working. The basic idea is that it is pulling down an HTML file, scanning it with clamscan, and then reporting whether or not an infection is found in the source code. Not perfect but it doesn't have to be. The shell script is as follows:
I tried using a command likecp `ls ~/temp/*.xyz | head -1` ./But that does not work. If I echo the value of command inside back ticks and put it manually in cp command it works.
I have a shell script to identify whether the process is running or not. If the process is not running, then I execute another script file to run my application. Below is my script and saved this script as monitorprocess.sh Code: #!/bin/bash
Is there any difference in cpu usage for process in init.rc(runs automatic when boot is happened) and manually running process. Will these both have same priority by default...?
I tried googling but didn't get any answer for this.I have a process called "abc" and it is running with PID "123".I have a putty session opened with PID "999".I am giving kill -TERM 123 from putty session.My process "abc" before dying it should catch the PID of the terminal which provided TERM signal to it.Is there any way to find this out
I have a java service that needs to be run in a gnu screen session so that I can -r into it to access it's interactive shell. I would like this to run at start-up. More importantly, it crashes frequently so I need the service to restart itself when it crashes. How do I go about doing this myself? My previous experience with shell scripting amounts to putting ./service in a file and marking it executable. This will be running on a FreeBSD server, but I might put it on a Linux server soon also. So any caveats on the differences would be useful information.
I have a shell script to identify whether the process is running or not. If the process is not running, then I execute another script file to run my application. Below is my script and saved this script as monitorprocess.sh
I want to kill parent process after "fork()" method. but if I kill parent process with "exit(0)" method, main() thread is terminated as well so child prosess doesn't work anymore. Is there any way to kill only parent process without affecting to child process?
Parent: chid_pid=4356 i=0 parent's pid=4355 This is child 4356 i=0 This is child 4357 i=1
[code]....
I can observe instead of two children(as I expect) processes there are three. This is because child process 4356 creates its own child. Why all the messages of the type "This is child X i=Y" are concentrated one under another? How exactly fork works? Is affected by the fact that I have a dual-core processor?
I just downloaded Tk-804.028 and try to install it (according to the README.linux) but I get:
> perl Makefile.PL /opt/ActivePerl-5.10/bin/perl-static is installed in /opt/ActivePerl-5.10/lib okay PPM for perl5.010001 Test Compiling config/perlrx.c Test Compiling config/pmop.c Test Compiling config/pregcomp2.c
I really would like Perl Qt4 bindings. The best I could find is this:[URL]The problem is that the sources would not compile, and the RPMs are for 32-bit machines.Is there really no such thing as good Perl Qt4 bindings?
I am a newbie on linux and just searching everything about perl scripting and modules nearly 3-4 days. I need a perl script but one of not easy to find on searching google. Okay now I need a perl script which create or recreate (edit) id3 tags (artist, comment, album, year, cover) of mp3 files stored on my linux centos server. I installed MP3::Tag version 1.13 pearl module to my server. I Searched tutorials about how to use it, finally I get through reading id3 tag of mp3 file but not achieve to modify it or create a new id3tag.
These are the details: I have a mp3 file called 1.mp3 this script will process that '1.mp3' file read its id3tag if there is one, than modify or create id3tag for it by my fix artist name for example: '1.mp3' files id3 tag details are like this Artist: Dj xx Year:2010 Title:yyyyy Comment:eerwer Cover: x.jpg
Now via this perl script which uses MP3::TAG I will change it's artist as YYY Title:ttt Comment:cool Cover:t.jpg these are gonna be my fixed values. I mean all '1.mp3' file will have same artist based on script value.
The reason of this script is I will share Dj podcasts on my server and Dj's would have upload their mp3's which has got different id3 tags and cover pics. etc. I want to create more organized podcasts of them by the way I would trigger this perl script via Cronjob.
i want a process that can operate as both a TCP echo server and a UDP echo server. The process can provide service to many clients at the same time, but involves a single process that does not start up any other threads.
As some of you know that I am new to this forum. I have another problem that I got stuck on. I have this file called "Fib.rbb" and my instructor told us to write an interpreter program by using Fib.rbb.
"You are to write an interpreter in Perl for Rongs Basic Basic (RBB) as explained in class. The BNF description for RBB and a test file called Fib.rbb are part of the RBB.zip file which is available in the Course Documents folder on blackboard. If you call your interpreter myIntp.pl, you would execute the program via perl myIntp.pl Fib.rbb
Im somewhat new at perl and was wondering if there was a way to run a perl script or tool made from perl, from a USB pen that would work both on Linux and on Windows?
I'm the server guy which is why I don't know this, but were staging a new webserver and we use some custom perl scripts and as were moving the site over for testing, apache is blowing a perl error;Can't locate web.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /home/mcp/htdocs/cgi-bin/newgraph.gif line 11.,Now I can copy that file local, but there are a bunch of things, so the question is how do you globally add a folder to the perl search path
I have a debian lenny machine that I am trying to add mod_perl to and use apache asp on. I have had a range of failures on it. Is ther a way I can build apache2 with mod_perl in it? Instead of separate. Apache2 is built with some modules built in by default, how can I make mod_perl one of them?