Here is a little fun script, as an alternative to a temp file. I got the idea from
Can't catch signals after an exec?
#!/usr/bin/perl
use warnings;
use strict;
use POSIX();
$|=1;
END { exec $0 } #needed to catch internal die's
my $sub = sub { exec $0 };
# POSIX unmasks the sigprocmask properly
my $sigset = POSIX::SigSet->new();
my $action = POSIX::SigAction->new(
$sub, $sigset, &POSIX::SA_NODEFER );
POSIX::sigaction(&POSIX::SIGINT, $action);
POSIX::sigaction(&POSIX::SIGUSR1, $action);
POSIX::sigaction(&POSIX::SIGTERM, $action);
# can still be killed with a kill -9 or SIGKILL
# but kill -15 or SIGTERM will restart
my $counter = 0;
while(1){
print ++$counter,"\n";
if($counter == 4){die}
sleep 1;
}
__END__