Daemonless background processes for Linux
Go to file
2024-10-20 22:17:43 +03:00
src fix duplicates in labels list 2024-10-20 09:00:19 +03:00
.editorconfig init 2024-10-20 07:07:47 +03:00
.gitattributes init 2024-10-20 07:07:47 +03:00
.gitignore init 2024-10-20 07:07:47 +03:00
completion.bash fix executable path 2024-10-20 07:26:24 +03:00
Makefile automatic version 2024-10-20 22:14:22 +03:00
ptrc.toml init 2024-10-20 07:07:47 +03:00
README.md add example 2024-10-20 22:17:43 +03:00
v.mod init 2024-10-20 07:07:47 +03:00

pt — daemonless background processes for Linux (WIP)

Run and manage background processes without daemon or root privileges. pt is a small process manager with limited capabilities

pt stands for process tool.

Features

  • Run arbitrary command in background. The process will be adopted by /sbin/init.
  • No daemon needed. pt just stores pidfile in runtime directory and checks procfs on invokation.
  • Run commands defined in the configuration file.
  • Set environment and working directory for process.
  • Run commands selected by labels.
  • Print defined commands and currently running commands.
  • [not implemented] Run commands without writing configuration file.
  • [not implemented] TUI.

Install

Prebuilt binary

Look for statically linked binaries on the releases page.

Build from source

First install V compiler.

Then do:

git clone https://github.com/gechandesu/pt.git
cd pt
make
make install

Next step is configuration.

Configuration

Default configuration file is ~/.ptrc. This is TOML format file.

See full configuration example with comments in ptrc.toml.

Usage

For example run SOCKS5 proxy over SSH. For this example to work, your computer must have ~/.ssh/config configured and the remote server must also have your SSH key. The ~/.ptrc content:

# vim: ft=toml
[entry.ssh-tunnel]
description = 'SSH tunnel to %server%'
labels = ['ssh', 'pl']
exec = [
    '/usr/bin/ssh',
    '-NT',
    '-oServerAliveInterval=60',
    '-oExitOnForwardFailure=yes',
    '-D',
    '127.0.0.1:1080',
    '192.168.0.1', # server address or hostname here
]

Start process:

$ pt start ssh-tunnel

Show running processes:

$ pt ps

Stop ssh-tunnel:

$ pt stop ssh-tunnel
# OR send signal explicitly
$ pt signal TERM ssh-tunnel