Why don't kill the script after 5s?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Why don't kill the script after 5s?
# 1  
Old 11-21-2014
Why don't kill the script after 5s?

Code:
# watchdog process 
mainpid=$$ 
(sleep 5; kill $mainpid) & 
watchdogpid=$! 
sleep 100 
kill $watchdogpid

The sleep isn't be killed, I want the script to be killed

---------- Post updated at 03:03 AM ---------- Previous update was at 12:04 AM ----------

I just modify the format of my script

Last edited by yanglei_fage; 11-21-2014 at 06:03 AM..
# 2  
Old 11-23-2014
Shells (bash, ksh, etc) do not propagate signals to non-builtin commands. To illustrate this a bit better, I replaced the sleep in your script with a script tasker
Code:
#! /usr/bin/perl

$\ = ' ';
$| = 1;
$s = 10;

sub handler {printf "\ncaught SIG\%s\n", shift @_; $s = 0; }

$SIG{INT}  = \&handler;
$SIG{TERM} = \&handler;

while ($s--) { print $s; sleep(1); }
printf "\nexit\n";

Nothing fancy, it counts down from 9 with one second delays. So your script is now (with some echos):
Code:
# watchdog process 
mainpid=$$ 
echo mainpid $$
trap : TERM
( sleep 5; echo killing $mainpid; kill $mainpid ) & 
watchdogpid=$! 
echo watcher $!
tasker
echo killing $watchdogpid
kill $watchdogpid

And when run:
Code:
$ yangleiold
mainpid 22277
watcher 22278
9 8 7 6 5 4 killing 22277
3 2 1 0 exit
killing 22278
yangleiold: line 10: kill: (22278) - No such process

What you need to do is have the watchdog kill the subprocess directly:
Code:
# watchdog process 

tasker &
pid=$!

sleep ${1:-5}
echo Killing $pid
kill $pid

Which runs as:
Code:
$ yangleinew
9 8 7 6 5 Killing 32765
caught SIGTERM
exit

Now if the task finishes first, the script will still sleep for the full interval:
Code:
$ yangleinew 20
9 8 7 6 5 4 3 2 1 0 exit
Killing 22361
x: line 8: kill: (22361) - No such process

Hope this helps.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

A shell script to run a script which don't get terminated and send a pattern from the output by mail

Hi Guys, I am very new to shell script and I need your help here to write a script. Actually, I have a script abc.sh which don't get terminated itself. So I need to design a script to run this script, save the output to a file, search for a given string in the output and if it exists send those... (11 Replies)
Discussion started by: Sambit Sahu
11 Replies

2. UNIX for Dummies Questions & Answers

Revision of script from don

Don, I revised script but when I ran it I did not receive any log. I am not sure what you mean to run it in code tags. I am using a putty session and ssh but I did not get a trace log? Barb ---------- Post updated at 01:33 PM ---------- Previous update was at 01:27 PM... (2 Replies)
Discussion started by: bcarosi
2 Replies

3. UNIX for Dummies Questions & Answers

HELP Script don't work selecting lowest value!!!

Hy again guys, Last week i resolve a question here but now i need your help again :rolleyes: I have about 3000 files that i need to choose based on the lowest value, so i make temp files like this: The files can have lines from 1-10 but only 2 columns, the point is to grep the name os the... (2 Replies)
Discussion started by: MetaBolic0
2 Replies

4. Solaris

I don`t understand how It work (about startup script)?

Hi all. The startup script in /usr/local/bin. After user login the script run an application. Iwould in the same way run the another application. How to make It similar? Where I must to look? Regards. (3 Replies)
Discussion started by: wolfgang
3 Replies

5. UNIX for Advanced & Expert Users

don't understand the unix script

if {"$my_ext_type" = MAIN]; then cd $v_sc_dir Filex.SH $v_so_dir\/$v_fr_file Can somebody tell me what does this suggest. I am pretty new to unix and I am getting confused. What i understood from here is If we have a file extension name as MAIN which we have then we change the directory to... (1 Reply)
Discussion started by: pochaman
1 Replies

6. Shell Programming and Scripting

script don't stop

Hello everybody! I am new to this and I am trying to change a script in an open source program that plots some offset vectors and then calls a postscript viewer. I have commented away the call for the postscript viewer but somehow the script doesn't return to the shell prompt. I cant figure out... (3 Replies)
Discussion started by: larne
3 Replies

7. Shell Programming and Scripting

don't know how to implentment as unix sh script

for each file if file name like xx* for each line in a file if substring(3,6) found in another txt file output to file-a( filename = orginal file + _a) else output to file-b( filename = orginal file + _a) end Next Line (4 Replies)
Discussion started by: ttivanwan@yahoo
4 Replies

8. Programming

kill(0,-9) don't kill the process

Hi all i have simple c program , when i wish to kill the app im using kill(0,-9) , but it seams this command don't do any thing and the program. just ignore it . what im doing wrong here ? im using HP-UX ia64 Thanks (9 Replies)
Discussion started by: umen
9 Replies

9. UNIX for Dummies Questions & Answers

I don't think this would be a problem to script but ...

:confused: I have not written any code in about 15 years. The company I work for has Unix servers and they utilize KSH. The scriptors say that what I want can only be scripted in PERL which on my server they say they cannot get to work. They also tell me that what I want done cannot be... (0 Replies)
Discussion started by: CapnJuan
0 Replies
Login or Register to Ask a Question