An active journal file and archived files with different removal rules.

The systemd journal needs an explicit retention contract

The systemd journal stores messages with structured metadata in journal files. That makes service output searchable without first inventing a parser for every application’s text format. Keeping those messages for a useful period is a separate requirement. Storage location, size policy, rotation, and forwarding determine which evidence remains available when an incident is investigated later. ...

October 26, 2027 · 4 min · XB Field Notes
A parent-directory watch sees a replacement name while an old inode watch stops tracking the current file.

Inotify reports changes, but it is not a complete history

Inotify delivers Linux filesystem notifications through an instance with registered watches and a readable event queue. Each record identifies a watch, event mask, and possibly a name and move cookie. This can avoid repeatedly checking unchanged paths, but the stream is not an unlimited audit log. Correct consumers interpret notifications as evidence that relevant state may need to be inspected again. ...

October 13, 2027 · 5 min · XB Field Notes
Two directory entries share one inode, but replacing one entry separates their contents.

Hard links share an inode until a name is replaced

A hard link adds another directory entry referring to an existing file. Neither name is intrinsically the original: both identify the same inode within its filesystem. File content, ownership, permissions, and link count belong to that shared object. A filename is a way to reach it, so changes to directory entries must be distinguished from changes to the file itself. ...

October 10, 2027 · 5 min · XB Field Notes
A second calendar trigger overlaps ordinary work but records a skip when a lock is held.

Cron repeats on the calendar

Cron matches calendar fields and launches commands at matching times. It does not inherently wait for an earlier invocation of the same command to finish. If a minute-level task takes seventy seconds, the next minute can launch another copy. Treat trigger policy, concurrency policy, and successful completion as separate responsibilities when operating recurring work. ...

September 30, 2027 · 5 min · XB Field Notes
A world-writable scratch space where filenames can collide.

Temp directories are a shared space

/tmp is a shared namespace of names, not a private scratch area. Any local user can create the name your process is about to use, so a name is not a claim on a file, and hier(7) says the contents may be deleted with no notice. ...

September 26, 2027 · 5 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
The same relative link text reaches a different file after the link moves to another directory.

A symbolic link stores a path, not a permanent target identity

A symbolic link is a filesystem object containing a target pathname. Following the link resolves that pathname at the time of the operation; it does not bind the link permanently to the target’s inode. This distinction explains why links can cross filesystem boundaries, become dangling, or start reaching a different object even though their stored target text has not changed. ...

August 3, 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