As an example of ulimit, let's try setting the CPU time for a process
to 1 second, then make it timeout with a busy loop. Make sure to start a
new bash process (as we do below) in which to try it; otherwise you'll be
logged out!
# time bash
# ulimit -t 1
# while true; do true; done
Killed
real 0m28.941s
user 0m1.990s
sys 0m0.017s
In the example above, "user" time plus "sys" time equals total CPU time
used by the process. When the bash process reached the 2-second mark,
Linux judged that it had exceeded the 1-second limit, so the process was
killed. Cool, eh?
Note: One second was just an example. Don't do this to your users!
Even multiple hours is bad, since X can really rack up the time (my
current session has used 69+ hours of CPU time). For a real
implementation, you may want to ulimit something other than CPU time.