10-08-2001
9,926,
461
Join Date: Aug 2001
Last Activity: 26 February 2016, 12:31 PM EST
Location: Ashburn, Virginia
Posts: 9,926
Thanks Given: 63
Thanked 461 Times in 270 Posts
Gee, thanks for the kind words guys!
No, you cannot just assume the next pid will be the current pid +1. You're on a multi-user machine. Stuff like cron runs all the time. If someone else forks first, they get the next pid. Also in a multi-cpu system, each cpu will usually reserve a chunk of 10 or so pids at once to cut down on spinlocks. Finally, pids recycle after pid 32,000.
The worst consequence of the sleep program in the background is that it is consuming a proc table entry. Too many of these and eventually you bump into maxuprc and cannot fork anymore. As long as that was not an issue, I'd just let it run. Remember that it will take code to remember or find the pid and then kill the pid. The load that this code would put on the system is trivial, but the only payback is the early death of a sleep statement...it can't make a profit.
If you really got to nail that last sleep process, a "kill $(ps -f | grep [s]leep |awk '{print $2}')" should get it.