The manager retains a listening socket while compatible worker processes come and go.

Socket activation passes a listener to a compatible service

Socket activation lets systemd open a listening endpoint before the application process starts. Activity on that endpoint can then trigger a compatible service, which receives descriptors for sockets the manager already owns. The useful boundary is listener ownership versus application lifetime. An open endpoint is not yet proof that the application has initialized, accepted a request, or produced a correct response. ...

November 8, 2027 · 5 min · XB Field Notes
Fork creates a child with selected shared references; exec keeps that child’s PID while replacing its program.

Fork creates a process; exec replaces its program

Fork followed by exec is one common Unix process-launch model. fork creates a child process, while a successful execve replaces the calling process’s program image. They solve different problems and have different inheritance rules. Understanding the distinction matters when arranging input, output, environment, and lifecycle management for a command started by another program. ...

October 12, 2027 · 5 min · XB Field Notes
Creation combines a requested mode with either the process mask or inherited default ACL rules.

Umask filters new permissions, with a default ACL exception

A process’s umask removes permission bits when creating files and directories under the ordinary mode-based creation rule. The application first supplies a requested mode; the mask restricts that request. It is neither a complete access policy nor an instruction to rewrite existing files. A directory’s default access control list changes the creation calculation, so inspecting only the process mask can give an incomplete prediction. ...

October 9, 2027 · 5 min · XB Field Notes
Two commands passing data continuously from a producer to a consumer.

Shell pipes stream between processes

A shell pipeline connects one command’s standard output to the next command’s standard input. The commands can run concurrently, so the producer need not finish before the consumer starts. This supports incremental processing, but the pipe itself does not guarantee that either program processes data incrementally. Buffering, early termination, and the status of each stage determine whether the complete operation does what you intended. ...

September 28, 2027 · 4 min · XB Field Notes
A parent passing a snapshot of exported settings to another program.

Environment variables are a per-process thing

An environment is a collection of name-value strings supplied to a program when it starts. A child normally receives the environment selected by its parent; changing that child’s copy does not rewrite the parent’s or a sibling’s copy. This is a useful configuration boundary, but it is not a promise that the command has no side effects. The program can still modify shared files, databases, or other resources using those settings. ...

September 25, 2027 · 4 min · XB Field Notes
A group still contains a live member after its leader exits, while another child remains outside the signal target.

Process groups select signal recipients, not a family tree

A process group is a kernel-maintained set of processes identified by a process group ID, or PGID. It provides a target for operations such as delivering a signal to a job. Parent-child relationships and group membership are separate: related processes can occupy different groups, and a group’s leader does not need to remain alive for other members to continue belonging to it. ...

September 24, 2027 · 5 min · XB Field Notes
A parent passes file limits to children while changes in one child stay there.

Set file limits in the process that starts the workload

A shell’s ulimit builtin changes resource limits for that shell and the processes it subsequently starts. For file descriptors, RLIMIT_NOFILE has a current soft value and a hard ceiling. Understanding where those values are inherited is essential when a terminal reports a generous limit but an independently managed service still fails to open files or accept connections. ...

July 19, 2027 · 5 min · XB Field Notes
Different descriptor numbers can share one open description while independent opens have separate offsets.

File descriptors name a process’s open references

A file descriptor is a small integer used within one process to refer to an open resource. The process’s descriptor table maps that number to an open file description maintained by the kernel. For a regular file, the description includes the current offset and file status flags. Another process can use the same integer for a completely different resource, so the number alone is not a global file identity. ...

February 21, 2027 · 5 min · XB Field Notes