Minutes a program runs.


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Minutes a program runs.
# 1  
Old 10-15-2007
Question Minutes a program runs.

I have a ksh script that executes a program with a predetermined timeout in minutes. If the program takes longer then the timeout then it still completes with a return code of 0. Smilie

I would like to determine how long the program ran. Then if it takes longer than the timeout I would like to specify a new return code. Smilie

I tried to use the time command to display to the screen and log file. Then grab the real time from the output in the log file however I have had not success with redirecting the output to the log file. Smilie

Here is what I am trying to do. See how the output of time does not show up in the log. Smilie
$ time ls home test 2>&1 | tee -a test.log
ls: 0653-341 The file home does not exist.
test

real 0m0.01s
user 0m0.00s
sys 0m0.02s
$ cat test.log
ls: 0653-341 The file home does not exist.
test
There is another problem with this method as well. Depending on what system I run the program on it could take more than an hour to run. Then the real line would return something similar to this “real 4h15m0.23s”. Smilie

Does anyone have a good idea of what I could to determine how long my program is running? Or help me with what I have already started? Smilie
# 2  
Old 10-15-2007
Hi.

I think there are 2 ways to accomplish this:
Code:
#!/bin/ksh

# @(#) s1       Demonstrate capture of timing data with ksh.

echo " pdksh version: $KSH_VERSION"

rm -f a.log b.log

echo
echo " Running with time."

{ time ls home test; } 2>&1 | tee -a a.log

echo
echo " Running with /usr/bin/time."

/usr/bin/time ls home test 2>&1 | tee -a b.log

echo
echo " Results of time in a.log:"
cat a.log

echo
echo " Results of /usr/bin/time in b.log:"
cat b.log

exit 0

Producing:
Code:
% ./s1
 pdksh version: @(#)PD KSH v5.2.14 99/07/13.2

 Running with time.
ls: home: No such file or directory
ls: test: No such file or directory
    0.00s real     0.00s user     0.00s system

 Running with /usr/bin/time.
ls: home: No such file or directory
ls: test: No such file or directory
Command exited with non-zero status 1
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+177minor)pagefaults 0swaps

 Results of time in a.log:
ls: home: No such file or directory
ls: test: No such file or directory
    0.00s real     0.00s user     0.00s system

 Results of /usr/bin/time in b.log:
ls: home: No such file or directory
ls: test: No such file or directory
Command exited with non-zero status 1
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+177minor)pagefaults 0swaps

This is with pdksh, see man ksh for details, especially the entry on the builtin command time ... cheers, drl
# 3  
Old 10-15-2007
Thanks drl, I think you hit the nail on the head. Once I enclosed the time and command in a brace with a semicolon the output was written into the output files as well as the screen. Smilie

I am using AIX and it looks like the output of the time command is "real xh xm xs". As for the /usr/bin/time command is "Real x.x" (seconds). So I should be able to use the /usr/bin/time and calculate the minutes using the seconds it returns. Smilie

Thanks for you help. Smilie
# 4  
Old 10-15-2007
Hi.

Glad it seems to be solved. It was really the man page that helped, as they do for so many problems. One slight drawback is that some man pages are very long, and some are poorly written, so it can be a chore to look through them. I think the Solaris man pages usually are the best, although the commands in Solaris, while very stable, are not as flexible as those of most Linux distributions.

Luckily, the shell hides a lot of the differences of OS platforms. However, it's good that you mentioned the Korn shell, and it probably wouldn't hurt to mention AIX, just in case that makes a difference -- I don't use AIX any longer, but I suspect many others here do ... cheers, drl
# 5  
Old 10-16-2007
Ksh and Bash also have a built-in variable $SECONDS which can be used for timing...
Code:
SECONDS=0
:
: script commands
:
echo elapsed time $((SECONDS/60)) minutes $((SECONDS%60)) seconds

# 6  
Old 10-16-2007
Thanks for the example Ygor. Smilie

I'd been using a simple "...`expr ${LOOPREQD} \* ${LOOPSLEEP} / 60` Minute/s." to do similar, though not entirely accurate. (was indicative to a degree)

Is there a listing anywhere of built-in variables for Ksh ??
# 7  
Old 10-16-2007
Quote:
Originally Posted by Ygor
Ksh and Bash also have a built-in variable $SECONDS which can be used for timing...
Code:
SECONDS=0
:
: script commands
:
echo elapsed time $((SECONDS/60)) minutes $((SECONDS%60)) seconds

Ygor, That might work even better for what I am doing. I take it that you can also use
Code:
echo elapsed time $((SECONDS/60/60) hours $((SECONDS/60)) minutes $((SECONDS%60)) seconds

to also show hours.

But how would you show total elapsed minutes?
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Where can I find the program that runs the -wc command?

Hey guys, I was wondering. When I enter a command in the terminal -wcl for a word count, where is that program located in the kernel? (7 Replies)
Discussion started by: Circuits
7 Replies

2. Shell Programming and Scripting

Grep a log file for the last 5 minutes of contents every 5 minutes

Hi all, System Ubuntu 16.04.3 LTS i have the following log INFO 2019-02-07 15:13:31,099 module.py:700] default: "POST /join/8550614e-3e94-4fa5-9ab2-135eefa69c1b HTTP/1.0" 500 2042 INFO 2019-02-07 15:13:31,569 module.py:700] default: "POST /join/6cb9c452-dcb1-45f3-bcca-e33f5d450105... (15 Replies)
Discussion started by: charli1
15 Replies

3. UNIX for Beginners Questions & Answers

How to convert days hours minutes seconds to minutes?

Hi, please help with below time conversion to minutes. one column values: 2 minutes 16 seconds 420 msec 43 seconds 750 msec 0 days 3 hours 29 minutes 58 seconds 480 msec 11 seconds 150 msec I need output in minutes(total elapsed time in minutes) (2 Replies)
Discussion started by: ramu.badugula
2 Replies

4. Homework & Coursework Questions

create a program that runs two processes linked oven

I need help program in C... :create a program that runs two processes linked oven (1 Reply)
Discussion started by: gizmo16
1 Replies

5. Shell Programming and Scripting

crontab runs only one line in iterated program

I have a crontab as below: PATH=/usr/local/sbin:/bin/:..... etc etc 0 8 * * * /home/user/jobs/poll.sh 2>/dev/null 1>/dev/null Now the script poll.sh is called at correct time and executes. This is how poll.sh looks like #!/bin/bash... (2 Replies)
Discussion started by: chakrapani
2 Replies

6. Programming

getting Segmentation Fault (core dumped) error but Program runs fine.

i am executing following program int main() { char str; FILE * fp; int i=0; ... (4 Replies)
Discussion started by: bhavesh.sapra
4 Replies

7. Shell Programming and Scripting

Check if a program runs on unix

Hi guys, I had a question last week where I asked how I check from a website hosted on windows if a process is running on on of our unix servers. Vino and Shell Life kindly replied with a perl script: if qm') -gt 0 ] ; then echo "Site is up" else echo "Site is down." # start the... (1 Reply)
Discussion started by: drchris
1 Replies

8. HP-UX

why does my program runs in conflicting mode?

my pragram runs with 3 threads, 2 work threads, one main thread. the 2 work threads run with the same mode and the same code. but now, one of the work thread can't work, and it uses the cpu more than 80%, sometimes uses 100% cpu resource. the another work thread work well. when I viewed the HP... (2 Replies)
Discussion started by: happylife365
2 Replies

9. Shell Programming and Scripting

Convert minutes to hours, minutes, seconds

How would you convert lets say a 1000 minutes to hours, minutes, seconds (1 Reply)
Discussion started by: Vozx
1 Replies
Login or Register to Ask a Question