abduco
abduco provides session management i.e. it allows programs to be run independently
from their controlling terminal. That is programs can be detached - run in the background -
and then later reattached. Together with dvtm it provides a simpler
and cleaner alternative to tmux or screen.
abduco is in many ways very similar to dtach
but is a completely independent implementation which is actively maintained, contains no legacy code,
provides a few additional features, has a cleaner, more robust implementation and is distributed under the
ISC license.
Demo showing abduco+dvtm
News
- abduco-0.6 released (24.03.2016)
- abduco-0.5 released (09.01.2016)
- abduco-0.4 released (18.03.2015)
- abduco-0.3 released (19.02.2015)
- abduco-0.2 released (15.11.2014)
- abduco-0.1 released (05.07.2014)
- Initial announcement on the suckless development mailing list (08.03.2014)
Download
Either download the latest source tarball with sha1sum
5dc3eaaa8d6ea54e22378468652dc9b4bb759641 abduco-0.6.tar.gz
compile and install it
$EDITOR config.mk && make && sudo make install
or use one of the distribution provided binary packages:
Quickstart
In order to create a new session abduco
requires a session name
as well as an command which will be run. If no command is given
the environment variable $ABDUCO_CMD
is examined and if not set
dvtm
is executed. Therefore assuming dvtm
is located somewhere
in $PATH
a new session named *demo* is created with:
$ abduco -c session-name
An arbitrary application can be started as follows:
$ abduco -c session-name your-application
CTRL-\
detaches from the active session. This detach key can be
changed by means of the -e
command line option, -e ^q
would
for example set it to CTRL-q
.
To get an overview of existing session run abduco
without any
arguments.
$ abduco
Active sessions (on host debbook)
* Thu 2015-03-12 12:05:20 demo-active
+ Thu 2015-03-12 12:04:50 demo-finished
Thu 2015-03-12 12:03:30 demo
A leading asterisk *
indicates that at least one client is
connected. A leading plus +
denotes that the session terminated,
attaching to it will print its exit status.
A session can be reattached by using the -a
command line option
in combination with the session name which was used during session
creation.
$ abduco -a demo
Check out the manual page for further information and all available command line options.
Improvements over dtach
- the exit status of the command being run is always kept and reported
either upon command termination or on reconnection e.g. the following works:
abduco -n demo true && abduco -a demo
- session list, available by executing
abduco
without any arguments, indicating whether clients are connected or the command has already terminated. - the session exit status of the command being run is always kept and
reported either upon command termination or on reconnection
e.g. the following works:
$ abduco -n demo true && abduco -a demo abduco: demo: session terminated with exit status 0
- read only sessions if the
-r
command line argument is used when attaching to a session, then all keyboard input is ignored and the client is a passive observer only. - better resize handling on shared sessions, resize request are only processed if they are initiated by the most recently connected, non read only client.
- socket recreation by sending the
SIGUSR1
signal to the server process. In case the unix domain socket was removed by accident it can be recreated. The simplest way to find out the server process id is to look for abduco processes which are reparented to the init process.After finding the correct PID the socket can be recreated withpgrep -P 1 abduco
If the abduco binary itself has also been deleted, but a session is still running, use the following command to bring back the session:kill -USR1 $PID
$ /proc/$PID/exe
- improved socket permissions the session sockets are by default either
stored in
$HOME/.abduco
or/tmp/abduco/$USER
in both cases it is made sure that only the owner has access to the respective directory.
Development
You can always fetch the current code base from the git repository.
git clone https://github.com/martanne/abduco.git
git clone git://repo.or.cz/abduco.git
If you have comments, suggestions, ideas, a bug report, a patch or something else related to abduco then write to the suckless developer maling list or contact me directly mat[at]brain-dump.org.
License
abduco is licensed under the ISC license.