Limit resources for a given program

Frank Leonhardt freebsd-doc at fjl.co.uk
Fri Jan 26 11:57:51 UTC 2018


On 2018-01-26 05:19, Olivier Nicole wrote:
> Frank,
> 
> On Thu, Jan 25, 2018 at 5:47 PM, Frank Leonhardt <frank2 at fjl.co.uk> 
> wrote:
>> On 2018-01-23 05:40, Olivier wrote:
>>> 
>>> Is there a way, in FreeBSD, to limit the clocktime for a given 
>>> command?
>>> 
>>> I use LibreOffice to automatically convert many types of documents to
>>> PDF. When it is an HTML document with external links, it will run
>>> indefinitely, trying to access the external resources. It will not 
>>> use
>>> much CPU but mostly sits idled, so limits(8) -t is not the solution, 
>>> nor
>>> is rctl(8) that needs a process ID (but I only have the command name) 
>>> or
>>> a user ID (but I don't want to limit a user, just that program).
>> 
>> 
>> I'm a bit confused about what your problem is? What exactly do you 
>> mean by
>> "clocktime" - do you mean wall time (i.e. time elapsed)? You say it's 
>> not
>> using a lot of resource, so what's the problem?
>> 
>> Or do you just want to kill it when it gets stuck?
> 
> Yes, I mean time elapsed. Even if it does not takes much resources,
> when such process got launched again and again, it ends up having some
> cost.
> 
> So I want it to be killed when it gets stuck.

Steve's plan using rctl posted at about same time is probably the safest 
way. The classic method is to use the $! shell variable, which gives the 
PID of the background process just started. So something like this 
should also work on all platforms - rctl &c is new.

libreoffice whatever & sleep 60 ; kill $!

Alternatively (if you want your prompt back):

libreoffice whatever & echo kill $! | at +5 minutes

The drawback with using $! and suchlike these days is that the pid could 
be reused in a relatively short space of time, especially if you're 
randomising PIDs for security.




More information about the freebsd-questions mailing list