1

I am running a program.Inside this program i run a specific command and i use ulimit command to terminate the running of that command if it exceeds an amount of time.To be more clear i run this:

ulimit -t 1800 ./bsolo3.0.17 test.opb 

which means that i want to terminate the run of bsolo solver if the time needed exceeds 1800 seconds.

What i want is a way to know, after let's say 10 runs of that command,how many times the runtime was below that limit and how many times the runtime of that command was above that limit.I don't have any clue yet.Any tips?

1 Answer 1

2

At least on my system (Debian), that's not how ulimit works. It won't run the command after the limit, you just set the limit, then run the command:

$ ulimit -t 1800 $ ./bsolo3.0.17 test.opb 

Anyway, to get the times, you can use time:

$ time ls > /dev/null real 0m0.004s user 0m0.000s sys 0m0.000s 

So, if your command is running in some kind of loop, you can capture the times in a file like this:

ulimit -t 1800 for i in {1..10}; do (time ./bsolo3.0.17 test.opb) 2>> times.log done 

The subshell (the parentheses) is needed in order to be able to capture the output of time which prints to STDERR. Using time foo 2> log will not work because that will only redirect the STDERR of the command foo and not of time.

If all you want is the number of times the command finished within the allotted time, do this:

 ulimit -t 1800 for i in {1..10}; do ./bsolo3.0.17 test.opb && let count++ done echo "Job finished in time $count times." 
2
  • what i want is not to capture the times but find out how many times the running of that command reaches that limit Commented Jul 13, 2013 at 13:31
  • @Dchris OK, updated accordingly. All you need to do is have a counter that increases each time the job finishes successfully. Commented Jul 13, 2013 at 13:52

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.