pid1: Do signal handling and orphan reaping for Unix PID1 init processes

[ library, mit, program, system ] [ Propose Tags ]

Please see README.md


[Skip to Readme]
Versions [faq] 0.1.0.0, 0.1.0.1, 0.1.1.0, 0.1.2.0
Change log ChangeLog.md
Dependencies base (>=4.6 && <5), pid1, process (>=1.2 && <1.5), unix (==2.7.*) [details]
License MIT
Copyright 2016 Michael Snoyman
Author Michael Snoyman
Maintainer michael@snoyman.com
Revised Revision 1 made by HerbertValerioRiedel at 2016-11-23T08:43:42Z
Category System
Home page https://github.com/fpco/pid1#readme
Source repo head: git clone https://github.com/fpco/pid1
Uploaded by MichaelSnoyman at 2016-09-28T07:05:59Z
Distributions Arch:0.1.2.0, Debian:0.1.2.0, LTSHaskell:0.1.2.0, NixOS:0.1.2.0, Stackage:0.1.2.0
Executables pid1
Downloads 6448 total (88 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2016-09-28 [all 1 reports]

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for pid1-0.1.0.0

[back to package description]

pid1

Do signal handling and orphan reaping for Unix PID1 init processes.

This provides a Haskell library, and an executable based on that library, for initializing signal handlers, spawning and child process, and reaping orphan processes. These are the responsibilities that must be fulfilled by the initial process in a Unix system, and in particular comes up when running Docker containers.

This library/executable will automatically detect if it is run as some process besides PID1 and, if so, use a straightforward exec system call instead.

NOTE This package is decidedly not portable, and will not work on Windows. If you have a use case where you think it makes sense to run on Windows, I'd be interested in hearing about it.

Blog post on some of the finer points here expected in the future.

Usage

The recommended use case for this executable is to embed it in a Docker image. Assuming you've placed it at /sbin/pid1, the two commonly recommended usages are:

  1. Override the entrypoint, either via ENTRYPOINT in your Dockerfile or --entrypoint on the command line.

    docker run --rm --entrypoint /sbin/pid1 fpco/pid1 ps
    
  2. Add /sbin/pid1 to the beginning of your command.

    docker run --rm --entrypoint /usr/bin/env fpco/pid1 /sbin/pid1 ps