[kwlug-disc] command line fans: task-spooler

Chris Frey cdfrey at foursquare.net
Sat Feb 8 01:48:53 EST 2020


I've been wanting a tool like this for so long, that when I found it
recently, I felt I had to share it.

On Debian systems it is packaged as task-spooler, as command line 'tsp'.

Have multiple long running processes you want to throw in the background,
but run them sequentially so they don't overload your system?

	$ cd project1
	$ tsp make
	$ cd ~/project2
	$ tsp make
	$ cd ~/project3
	$ tsp build-docker-image.sh

Using tsp by itself gives you a summary of what's going on (contrived
example using sleep):

	$ tsp
	ID   State      Output               E-Level  Times(r/u/s)   Command [run=1/1]
	0    running    /tmp/ts-out.uhS6Kv                           sleep 3m
	1    queued     (file)                                       sleep 4m
	2    queued     (file)                                       sleep 2m

Want to watch the output for a while on the running process?  Here's tail -f
style behaviour on task 0:

	$ tsp -t 0

The whole log?

	$ tsp -c 0 |less

Want to kill it?

	$ tsp -k 0

What if you have a beefier system than most and want to have multiple
running slots?   4 CPUs?  Let's open 3 slots:

	$ tsp -S 3

Now 3 tasks can run at once.

Want to have different queues for different purposes?

	$ alias tsdisk='TS_SOCKET=/tmp/socket.disk tsp'
	$ alias tsram='TS_SOCKET=/tmp/socket.ram tsp'
	$ alias tsnet='TS_SOCKET=/tmp/socket.net tsp'

	$ tsdisk qemu-img convert -c ....
	$ tsnet scp backup.tar host:/var/backups/
	$ tsnet wget https://videohouse.example.com/movie.mp4

Need notification something finished?

	$ (tsp -w 4 ; xmessage qemu-img convert complete) &

Have an urgent task that needs to go to the head of the line?

	$ tsp make	# job 5
	# later...
	$ tsp -u 5	# head of the queue

Need to chain commands based on success?

	$ tsp /usr/local/bin/run-backups.sh       # job 2
	$ tsp -D 2 scp /var/backups/today.tar.gz host:/var/backups

It's a beautiful thing! :-)

- Chris





More information about the kwlug-disc mailing list