Sleep command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sleep command
# 8  
Old 11-03-2014
If you don't have the GNU date command, you could always have a few loops:-
Code:
# Waiting until 06:30
until [ `date +%H` -le 6 ]          # Wait until after midnight and before 06:00
do
   sleep 3600                       # Sleep for an hour
done

until [ `date +%H` -eq 6 ]          # Wait until it's after 06:00
do
   sleep 1800                       # Sleep for 30 minutes
done

until [ `date +%M` -ge 24 ]         # Wait until it's after 06:24
do
   sleep 60                         # Sleep for 10 minutes
done

until [ `date +%M` -eq 30 ]         # Wait until we hit 06:30
do
   sleep 1                          # Just sleep one second now for shortest interval
done

# Run main code here

I've set several loops to reduce the number of cycles this goes through. Of course, you could just say wait until after midnight and then in a loop with a 1 second sleep, wait until we get to 06:30, but there's needless processing there. Feel free to adjust this as you see fit, but be careful you don't overstep by having a big jump too close to the required time.


How do you propose to keep this going day after day? What if there is an unexpected exit or server boot?

Robin
# 9  
Old 11-03-2014
Code:
S=$(date +"%H:%M:%S" | BEGIN {
        # Where time digits wrap.
        split("24 60 60", T);
}
{
        split($1, A, ":")
        split(TIME, B, ":")

        # Subtract group by group like longhand arithmetic.
        for(N=3; N>=1; N--)
        {
                B[N] -= A[N]
                M=N

                while(M>0 && (B[M] < 0))
                {
                        B[M] += T[M]
                        B[M-1] --;
                        M--;
                }
        }

        print B[3]+(B[2]*60)+(B[3]*60*60)
}' )

sleep $SECONDS

# 10  
Old 11-03-2014
Hi Corona,

U mentioned sleep $SECONDS, but u did not declare this variable in above, what is that, can you please explain me this code more

Last edited by rbatte1; 11-04-2014 at 06:26 AM.. Reason: Changed case of variable and added ICODE tags
# 11  
Old 11-03-2014
Sorry, simple mistake, sleep $S
# 12  
Old 11-03-2014
appreciate if you can explain me this little bit

---------- Post updated at 01:26 PM ---------- Previous update was at 01:26 PM ----------

or is there any way we can store current time and we can subtract tommoorw time but i am stuck how it is
# 13  
Old 11-03-2014
I guess Corona's proposal needs some more attention. Try adding the awk command itself, a TIME variable, and use (B[1]*60*60) instead of (B[3]*60*60):
Code:
S=$(date +"%H:%M:%S" | awk 'BEGIN {
        # Where time digits wrap.
        split("24 60 60", T);
}
{
        split($1, A, ":")
        split(TIME, B, ":")

        # Subtract group by group like longhand arithmetic.
        for(N=3; N>=1; N--)
        {
                B[N] -= A[N]
                M=N

                while(M>0 && (B[M] < 0))
                {
                        B[M] += T[M]
                        B[M-1] --;
                        M--;
                }
        }

        print B[3]+(B[2]*60)+(B[1]*60*60)
}' TIME="06:30:00"); echo $S
35316

will yield identical result as
Code:
echo $(($(date +%s -d"6:30 tomorrow") - $(date +%s)))
35316


Last edited by RudiC; 11-03-2014 at 03:58 PM.. Reason: removed duplicate program line
# 14  
Old 11-03-2014
HI Rudic,

Appreciate, if you just little bit explain me this program.

---------- Post updated at 04:46 PM ---------- Previous update was at 02:52 PM ----------

HI Rudic,

i trying to understand below code,and also put commnet also can you help me to understand this code where i am stuck

Code:
=$(date +"%H:%M:%S" | awk 'BEGIN {
        # Where time digits wrap.
        split("24 60 60", T);     ( this commns is splitting string 24 60 60 into T, means t become arrays of 3 value which are 24 60 60)
}
{
        split($1, A, ":")               ( not getting this command)
        split(TIME, B, ":")         ( this command splitting time = 06 30 00 in name of B array)

        # Subtract group by group like longhand arithmetic.
        for(N=3; N>=1; N--)      ( now loop start and execute for 3 times)
        {
                B[N] -= A[N]     ( B[3]=00 -= A[N}
                M=N

                while(M>0 && (B[M] < 0))
                {
                        B[M] += T[M]
                        B[M-1] --;
                        M--;
                }
        }

        print B[3]+(B[2]*60)+(B[1]*60*60)
}' TIME="06:30:00"); echo $S

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with sleep command:

Hi Frnz, I need to execute sleep command but i dont know the definite time. Let me put my req: I am running one shell script and this script creates some lock file in temp dir ...now in my script i want one function to go into sleep mode till this lock file exists..one lock file gone that... (6 Replies)
Discussion started by: gnnsprapa
6 Replies

2. Shell Programming and Scripting

Sleep Command

Hello, Need a little help with the script below. I can't get it to sleep :( I'm trying to get this to check if the process is running and if it is, wait 10 secs and check again. Keep doing this until it's not running and then stop checking and send the email. #!/bin/ksh mailto=`cat... (2 Replies)
Discussion started by: bbbngowc
2 Replies

3. Shell Programming and Scripting

Sleep command

Hi All, i am very new to shall script . i am not that much aware of sleep command , i want to terminate the sleep command after certain time. following is my code. while loop sleep 1800 messag=/status.sql donethe script will be on sleep untill the messag be comes P. here my requirement... (4 Replies)
Discussion started by: mandlysreedhar
4 Replies

4. UNIX for Dummies Questions & Answers

sleep command off by a second

Hi Forum Im using sleep in a while loop goes around 10 times. i feed it a variable with the time i what it to sleep for eg sleep $sleepVal and then print system date and time to screen but sometimes 1 second is added to the time why is this here my code sleepVal=5 while do ... (3 Replies)
Discussion started by: ShinTec
3 Replies

5. UNIX for Dummies Questions & Answers

Help with sleep command

sleep 10 & Is this the write line of command to suspend 5 jobs for 10 minutes (6 Replies)
Discussion started by: senyor17
6 Replies

6. Shell Programming and Scripting

sleep command

Hi, Did the sleep command work for hours or only minutes just give description to work on my script waiting for the earliest response (5 Replies)
Discussion started by: thelakbe
5 Replies

7. UNIX for Dummies Questions & Answers

sleep command

Hi All I have a requiremnt to run a script inside another script. here i am pulling the record count from the table in oracle.If record count is greater than 0 the script is executed.The scripts updates the count in the table and again the count is found out and the condition is checked and same... (3 Replies)
Discussion started by: dr46014
3 Replies

8. Shell Programming and Scripting

Sleep Command

I am in need of some help; think I have confused myself. Here is the issue I am faced with. The script log file was fine, the nohup.out file has tens of thousands of lines like illegal use of sleep: sleep seconds So I assume there is something with the seconds calculation in the script... (1 Reply)
Discussion started by: Glove
1 Replies

9. UNIX for Dummies Questions & Answers

sleep command

If I give sleep(50) what does it mean? My program waits for further execution or all my other processes wait? (3 Replies)
Discussion started by: leewar
3 Replies

10. UNIX for Dummies Questions & Answers

How can I get a command to sleep < 1 second?

I am running a number of processes through a kill -15 loop as a temporary fix to some viscious memory leaks. I cannot pass the entire list of processes through the kill at once, because the nature of the monitoring my client has will cause the software to failover. Because of the large number of... (1 Reply)
Discussion started by: mattd
1 Replies
Login or Register to Ask a Question