Simply put, it's a tool that **p**rocesses a q**ueue** of [shell](Shell.md) commands. On top of that, there are a lot of convenient features and abstractions.
Since Pueue is not bound to any terminal, you can control your tasks from any terminal on the same machine. The queue will be continuously processed, even if you no longer have any active [ssh](../network/SSH.md) sessions.
**Local:** The daemon can be run in the current [shell](Shell.md). Just run `pueued` anywhere on your command line. It'll exit if you close the terminal, though.
[Systemd](../../linux/systemd/Systemd.md) user services allow every user to start/enable their own session on [Linux](../../linux/Linux.md) operating system distributions.
| `-w, --working-directory <working-directory>` | Specify current working directory |
| `-e, --escape` | Escape any special [shell](Shell.md) characters (" ", "&", "!", etc.). Beware: This implicitly disables nearly all [shell](Shell.md) specific syntax ("&&", "&>") |
| `-i, --immediate` | Immediately start the task |
| `-s, --stashed` | Create the task in Stashed state. Useful to avoid immediate execution if the queue is empty |
| `-d, --delay <delay>` | Prevents the task from being enqueued until \<delay> elapses. |
| `-g, --group <GROUP>` | Assign the task to a group. Groups kind of act as separate queues. I.e. all groups run in parallel and you can specify the amount of parallel tasks for each group. If no group is specified, the default group will be used |
| `-a, --after <after>` | Start the task once all specified tasks have successfully finished. As soon as one of the dependencies fails, this task will fail as well |
| `-o, --priority <PRIORITY>` | Start this task with a higher priority. The higher the number, the faster it will be processed |
| `-l, --label <LABEL>` | Add some information for yourself. This string will be shown in the "status" table. There's no additional logic connected to it |
| `-p, --print-task-id` | Only return the task id instead of a text. This is useful when working with dependencies |
### `pueue remove`
Remove tasks from the list. Running or paused tasks need to be killed first
Usage: `pueue remove <TASK_IDS>...`
### `pueue switch`
Switches the queue position of two commands. Only works on queued and stashed commands
Usage: `pueue switch <TASK_ID_1> <TASK_ID_2>`
### `pueue stash`
Stashed tasks won't be automatically started. You have to enqueue them or start them by hand
Usage: `pueue stash <TASK_IDS>...`
### `pueue enqueue`
Enqueue stashed tasks. They'll be handled normally afterwards
| `-a, --all-failed` | Restart all failed tasks across all groups.<br>Nice to use in combination with `-i/--in-place` |
| `-g, --failed-in-group <FAILED_IN_GROUP>` | Like `--all-failed`, but only restart tasks failed tasks of a specific group. The group will be set to running and its paused tasks will be resumed |
| `-k, --start-immediately` | Immediately start the tasks, no matter how many open slots there are. This will ignore any dependencies tasks may have |
| `-s, --stashed` | Set the restarted task to a "Stashed" state. Useful to avoid immediate execution |
| `-i, --in-place` | Restart the task by reusing the already existing tasks. This will overwrite any previous logs of the restarted tasks |
| `--not-in-place` | Restart the task by creating a new identical tasks. Only applies, if you have the restart_in_place configuration set to true |
| `-e, --edit` | Edit the tasks' commands before restarting |
| `-p, --edit-path` | Edit the tasks' paths before restarting |
| `-l, --edit-label` | Edit the tasks' labels before restarting |
### `pueue kill`
Kill specific running tasks or whole task groups..
Kills all tasks of the default group when no ids or a specific group are provided.