Hi it should run only every 9th time the script is running.If the file is there yes we need to execute hi and quit
This is an example of what is called "inter-process communication" because one process (the program to be started) needs some information of another process (the last instance of the program and when it ran lastly). There are only so many means for such inter-process communication:
- semaphores
- shared memory
- message queues
In this case we need a "semaphore". Not a "UNIX semaphore" (in UNIX there is a certain OS feature implementing semaphores), but something alike. We simply put a file somewhere with the "UNIX date", the numbers of seconds passed since Jan 1st 1970, of when the program ran the last time:
Code:
#! /bin/ksh
typeset last="/tmp/myfile"
if [ -f file ] ; then
echo "hi"
else
echo "Hello"
UNIX Command---once in 3 hours
echo $(date +'%s') > "$last"
fi
exit 0
Now we just need to read this file if it is there (otherwise we are running for the first time) and make the starting of the program conditional to that. Notice that 10800 = 3x3600, 3 hours in seconds and 4294967295 is 2^^32-1:
Code:
#! /bin/ksh
typeset last="/tmp/myfile"
typeset -i now=$(date +'$s')
if [ -f file ] ; then
echo "hi"
else
echo "Hello"
if ! [ -f "$last" ] ; then
echo "4294967295" > "$last"
fi
if (( now - 10800 <= $(cat $last) )) ; then
UNIX Command---once in 3 hours
echo $(date +'%s') > "$last"
fi
fi
exit 0
I want to schedule a batch job (SQL)to run every 6 hours in Unix and the AT command syntax does not seem to cover this.
I have created a file ncd_rpt in the directory report and have given the command in this file.
at -f /report/ncd_rpt 1:00 am tomorrow
I schedule this by running
sh... (1 Reply)
Hi Folks,
I need to remove log files for six hours on Solaris. before i used to do for every 24 hours below is the code for 1 day older log files, now i tried using -mmin +360 but it says command not found.
Can someone please help me out!!!
part of the code:
LOG_FILE=`find /home/Logdir... (1 Reply)
Hi All
I have a problem, I wonder if you can help me sort it out:
I have the following entry in the cron:
00 1,13 * * * /home/report/opn_amt_gestores_credito.ksh > opn_amt_gestores_credito.log
But the entry only runs at 01:07
I have stopped the cron deamon, and started, but it still... (39 Replies)
Hi All,
new to the forum and new to Unix but I have an issue which is annoying on a new level. I have included a short and full version for anyone needing more information.
Short Version
I am running a set of scripts that work and run fine. one of the scripts arranges the first... (4 Replies)
Hi
I need to setuop a cron entry to run every 5 min, only in office hours (between 8:00AM to 18:00PM, I did the following:
0,5,10,15,20,25,30,35,40,45,50,55 8,9,10,11,12,13,14,15,16,17,18 * * * /home/xxx/zzz.ksh
But somehow does not work.
Could it be wrong? (8 Replies)
Hi,
I've written a ksh script that read a file and parse/filter/format each line. The script runs as expected but it runs for 24+ hours for a file that has 2million lines. And sometimes, the input file has 10million lines which means it can be running for more than 2 days and still not finish.... (9 Replies)
Discussion started by: newbie_01
9 Replies
LEARN ABOUT DEBIAN
sleepenh
SLEEPENH(1) General Commands Manual SLEEPENH(1)NAME
sleepenh - an enhanced sleep program.
SYNOPSIS
sleepenh [initial-time] sleep-time
DESCRIPTION
sleepenh is a program that can be used when there is a need to execute some functions periodically in a shell script. It was not designed
to be accurate for a single sleep, but to be accurate in a sequence of consecutive sleeps.
After a successful execution, it returns to stdout the timestamp it finished running, that can be used as initial-time to a successive exe-
cution of sleepenh.
OPTIONS
There are no command line options. Run it without any option to get a brief help and version.
ARGUMENTS
sleep-time is a real number in seconds, with microseconds resolution (1 minute, 20 seconds and 123456 microseconds would be 80.123456).
initial-time is a real number in seconds, with microseconds resolution. This number is system dependent. In GNU/Linux systems, it is the
number of seconds since midnight 1970-01-01 GMT. Do not try to get a good value of initial-time. Use the value supplied by a previous exe-
cution of sleepenh.
If you don't specify initial-time, it is assumed the current-time.
EXIT STATUS
An exit status greater or equal to 10 means failure. Known exit status:
0 Success.
1 Success. There was no need to sleep. (means that initial-time + sleep-time was greater than current-time).
10 Failure. Missing command line arguments.
11 Failure. Did not receive SIGALRM.
12 Failure. Argument is not a number.
13 Failure. System error, could not get current time.
USAGE EXAMPLE
Suppose you need to send the char 'A' to the serial port ttyS0 every 4 seconds. This will do that:
#!/bin/sh
TIMESTAMP=`sleepenh 0`
while true; do
# send the byte to ttyS0
echo -n "A" > /dev/ttyS0;
# just print a nice message on screen
echo -n "I sent 'A' to ttyS0, time now is ";
sleepenh 0;
# wait the required time
TIMESTAMP=`sleepenh $TIMESTAMP 4.0`;
done
HINT
This program can be used to get the current time. Just execute:
sleepenh 0
BUGS
It is not accurate for a single sleep. Short sleep-times will also not be accurate.
SEE ALSO date(1), sleep(1).
AUTHOR
This manual page was written by Pedro Zorzenon Neto.
2008/04/20 SLEEPENH(1)