set of arguments (useful for cronjobs, eg)
run-one COMMAND [ARGS]
run-this-one COMMAND [ARGS]
run-one-constantly COMMAND [ARGS]
keep-one-running COMMAND [ARGS]
run-one-until-success COMMAND [ARGS]
run-one-until-failure COMMAND [ARGS]
run-one is a wrapper script that runs no more than one unique instance
of some command with a unique set of arguments.
This is often useful with cronjobs, when you want no more than one copy
running at a time.
run-this-one is exactly like run-one, except that it will use pgrep(1)
and kill(1) to find and kill any running processes owned by the user
and matching the target commands and arguments. Note that run-this-one
will block while trying to kill matching processes, until all matching
processes are dead.
run-one-constantly operates exactly like run-one except that it
respawns "COMMAND [ARGS]" any time COMMAND exits (zero or non-zero).
keep-one-running is an alias for run-one-constantly.
run-one-until-success operates exactly like run-one-constantly except
that it respawns "COMMAND [ARGS]" until COMMAND exits successfully (ie,
run-one-until-failure operates exactly like run-one-constantly except
that it respawns "COMMAND [ARGS]" until COMMAND exits with failure (ie,
In one shell:
$ run-one rsync -azP $HOME $USER@example.com:/srv/backup
40298 100% 37.13MB/s 0:00:00 (xfer#1, to-check=3509/3516)
20352 100% 98.39kB/s 0:00:00 (xfer#3, to-check=3478/3516)
In another shell:
$ run-one top
$ echo $?
$ run-this-one top
top - 17:15:36 up 1:43, 3 users, load average: 1.05, 1.04, 1.00
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
And note that the process in the first shell was killed.
You might want to keep one ssh connection up and running all the time,
$ run-one-constantly ssh -N -C -L 3128:localhost:3128 -L 7778:local-
host:7778 example.com &
flock(1), kill(1), pgrep(1)
This manpage and the utility was written by Dustin Kirkland <kirk-
firstname.lastname@example.org> for Ubuntu systems (but may be used by others). Per-
mission is granted to copy, distribute and/or modify this document
under the terms of the GNU General Public License, Version 3 published
by the Free Software Foundation.
On Debian systems, the complete text of the GNU General Public License
can be found in /usr/share/common-licenses/GPL, or on the web at
run-one 9 Jan 2011 run-one(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2017
All Rights Reserved.