SchOS/etc/schinit
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nexoniarz f4d5c671a7 schinit: the console job stops explaining itself in launchd's words
The manifest described its own fields by naming the thing they were
modelled on -- "in launchd terms this is a RunAtLoad + KeepAlive
daemon", and ThrottleInterval attributed to launchd by name. The design
debt is real and recorded in docs; a file shipped in /etc is not the
place to keep citing another system's trademarks.

What the fields do is unchanged, and so is every value. The comment that
survives says what the interval guards against, which is the part a
reader of this file actually needs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 15:59:29 +02:00
..
console-shell.job schinit: the console job stops explaining itself in launchd's words 2026-08-15 15:59:29 +02:00
README schinit: a launchd-shaped process 1 2026-08-09 16:36:13 +02:00

Job manifests for schinit, SchOS process 1.

Every *.job file in this directory is loaded at boot. Format is sectioned
key = value; # starts a comment, keys are case-insensitive.

  Label             a reverse-DNS name, as launchd uses. Identity, not a path.
  Program           the binary to execute
  Args              argv, space separated. argv[0] is conventionally the
                    basename, so `Args = sh` for `/bin/sh`.
  RunAtLoad         start it when schinit loads
  KeepAlive         restart it when it exits
  Disabled          load it but do not start it
  ThrottleInterval  seconds between respawns (default 1)
  StandardIn        \
  StandardOut        > paths to open as fd 0, 1, 2
  StandardError     /

  [Socket <name>]
  Path              a unix socket schinit will hold on the job's behalf and
                    start the job on first connect

Socket sections are parsed but not yet acted on -- that is milestone 2, and
demand launching is the whole reason this is shaped after launchd rather than
sysvinit. The key exists now so manifests do not have to change later.

Unknown keys and unknown sections are ignored rather than fatal: a manifest
written for a newer schinit must not stop this one booting the machine.