Skip to content
Arne Christian Beer edited this page Mar 25, 2024 · 5 revisions

What can I use it for

Consider this scenario: You have to unpack large amounts of data into various directories. Usually, something like this ends with 10+ open terminals/tmux sessions and an over-challenged hard drive.

Another scenario might be, that you want to re-encode 10 movies and each re-encode takes 10+ hours. Creating a chained command with &&s isn't ergonomic at all and running that many re-encodes in parallel will break your CPU.

If these sound familiar, Pueue might be something for you :).

Pueue is specifically designed for these situations.
You can schedule your task and continue on the same shell without waiting. You can specify how many tasks should run in parallel and group tasks to maximize system resource utilization.
Since everything is run by a daemon, you can simply log off your server and check on your tasks' progress whenever you want.
Heck, you can even set up desktop notifications to get notified or execute parameterized commands every time a task finishes.

A few possible applications:

  • Copying large amounts of data
  • Machine learning
  • Compression tasks
  • Movie encoding
  • rsync tasks
  • Anything that takes longer than 5 minutes

Pueue made at least my life a lot easier on many occasions.

If you like the project, feel free to give it at try! If you feel like something is missing, please create an issue :).
PRs are of course very welcome!

Advantages over Using a Terminal Multiplexer

One of the most frequent questions is why one should use Pueue in the first place, when there're terminal multiplexer such as Tmux or Screen.

My response is that these are simply missing a lot of convenience features.
Here are few examples of Pueue's basic functionality.

  • The ability to queue commands and not start them all at once
  • Specifying how many tasks should run in parallel
  • Easy pausing/resuming of tasks
  • Pretty and accessible task status overviews
  • No need to attach to multiple tmux sessions

There are a lot more built-in convenience features. You should read the Wiki for a detailed explanation.

Only using your shell's features is definitely possible! However, in my opinion, having a tool that's specifically designed for managing tasks is just more efficient and fun.

One of my regular use cases is downloading lots of stuff. In this case I want:

  • At most three parallel downloads, otherwise the other services on my server get starved.
  • To see at first glance whether a download fails and easily edit and re-schedule it.
  • An easy way to look at process output.
  • Everything to be in a uniform interface.
  • It to look pretty and clear.
  • To be able to pause/resume everything in case I need to some bandwidth right now.

I used tmux for this stuff all the time before writing Pueue.
However, after using it for a really long time it just kept feeling annoying and inconvenient.

Clone this wiki locally