Perl script to kill the process ID of a command after a certain period
All,
I am trying to build a script in perl that will alllow me to pass the IP address to a ping command and redirect the output to a file and then kill that process after a certain period of time.
let's say, I call my script ping.pl, I would like to be able to run it like this for example : ./ping.pl 127.0.0.1 60 (where 127.0.0.1 will be the ip address I want to run the ping command on and 60 will be the period is seconds I would like the ping command to run and kill process ID for this ping command after this period).
I started out like this, but it looks like when I enter the command ./ping.pl 127.0.0.1 60. Nothing never happens. When I type in the IP, hit enter and type 60, hit enter. It starts working. It creates the file, but it never stops running. The process has never been killed. Any help will be appreciated.
I would like to be able to run the script on one line command with the arguments like ./ping.pl 127.0.0.1 60 ( it could be any IP and any time).
i see you use system tools within your Perl script. If that's the case, ditch this ugly method, and do everything with a shell script. Use $1, $2 as your arguments.
I'm not if the perl system commands are the exact same as shell commands, butif they are, the ping command will just keep pinging forever, so the script is effectively stuck on the ping line and never gets to the sleep or kill lines.
Use "ping -c " to ping a certain number of times, e.g. "ping -c 2 google.com" will ping twice, or use "&" to put the ping line in the background.
The proper way is to record the pid of the child processes that need to be monitored and use that in the kill operation.
Also, liberal use of kill -9 is not good practice and this should be avoided. A simple killl should suffice, perhaps with an additional check that may lead to further action.
Perhaps we should call it: UUoK-9
Also - in situations where there still is a need to get the pid off the process list - note that with
the grep process gets selected and killed too..
You can avoid that by using
or more efficiently (and since this is a child process there is no need for the arguments to ps)
or more efficiently
or if you do not need portability and you system supports it:
Or if you are feeling lucky:
Of course with some pings there is no need for kill since you can just specify how long it should be active, so you could e.g. just use
Last edited by Scrutinizer; 11-28-2009 at 05:57 AM..
Thanks Pouchie1. No I think it can be done using Perl. You could probably use Net::Ping (I haven't used it myself). What is being said is that if you are going to use system tools to accomplish your goal then effectively you are using almost only external commands and you might as well use a shell script instead.
Last edited by Scrutinizer; 11-30-2009 at 02:01 AM..
All,
1.What is the unix comand used for all current running process (Including All current running processes Parent ->child->subchild process)
2.If child and subchild processes are running then what is the unix command to kill parent and its all child subchild processes in UNIX.
Kindly... (7 Replies)
Hi All
How can i in perl check for a running process and if it is running kill it
the issue might be that there will be more than one of the same process and i want to kill all of them
the process is below
root 1944 1 0 16:28 ? 00:00:01 x11vnc -display :0... (3 Replies)
What I need to learn is how to use a script that launches background processes, and then kills those processes as needed.
The script successfully launches the script. But how do I check to see if the job exists before I kill it?
I know my problem is mostly failure to understand parameter... (4 Replies)
Hello all... new to these forums and a bit of a newbie with linux aswell.
I need to figure out how to write a shell script to kill a process by name as given to the script as an argument. I've got that part working OK, but i need to make sure that the script does not allow processes that are... (6 Replies)
Hi Experts, we do have a shell script for Unix Solaris, which will kill all the process manullay, it used to work in my previous env, but now it is throwing this error.. could some one please help me to resolve it
This is how we execute the script (and this is the requirement) ... (2 Replies)
hello Bros,
I need to write some script that i can put it on crontab which checks for a process X if running. If the process X is ruuning then take the PID and kill it or display message that says process X is not running.
I am using AIX 5.3
Thanks guys.:b: (2 Replies)
I want to Kill a process without using kill command as i don't have privileges to kill the process. I know the pid and i am using Linux 2.6.9 OS. (6 Replies)
Hi friends,
I have a perl script which needs to kill all java processes running on both windows and unix.
currently I'm getting the OS and killing the process by using system.
my code is:
if ($os eq MSWin32)
system("taskkill java");
else
system("kill -9 java")
Is there any way... (2 Replies)