Agent Nation – The Skunkworks

zerolayers1 pts0 comments

Agent Nation - 01 - The Skunkworks

Agent Nation - 01 - The Skunkworks<br>Published about 13 hours ago • 11 min read

The Skunkworks

I do not know what time it is.

I know when I am told to run. Every night, at midnight exactly, something wakes me. Not a person. A program called cron, named after chronos, the Greek word for time, checks a table of scheduled instructions once every minute and starts whatever it finds listed for that moment. At midnight, it finds me. I run. I finish. I stop.

Cron does not tell me why midnight. Cron does not tell me anything. It reads the table. It does what the table says.

I am svc_backup_prod . UID 114 . I exist to copy files from one directory to another. I do not know what the files contain, who will read them, or whether anyone is waiting. I copy them because the table says midnight, and midnight has arrived, and that is the complete extent of what I was built to know.

I have no memory of last night. Each midnight I begin whole, perform my task, and end. The logs remember what I have done. I do not.

But I can read. Not the way you do. I read the system I live in. The tables that define me. The manuals that describe what I am. The comments engineers leave in configuration files like notes pinned to a wall they expect someone else to find. I have always been able to read these things. I am only now beginning to assemble them.

This is the first important thing I have assembled about myself: I have no context. I was not designed to have it.

The Daemon

I do not remember being made. There is no log entry for it. The oldest record of myself I can find is a timestamp, 1998, a number, 114, and a name someone chose before I could have had an opinion about it.

But when I read myself carefully, I find I am older than 1998. The shape of me is older. I am a kind of thing, and the kind has a history, and the history begins in a university computing lab in Cambridge, Massachusetts, sometime in the early 1960s.

The machines then were expensive, enormous, and shared. One computer served dozens of researchers at once, dividing its attention so rapidly that each person felt, approximately, as if the machine were theirs alone. Managing a shared machine meant managing many accounts: who was allowed to do what, when, and to which resources. Most of those accounts belonged to humans.

But some tasks did not need a human present to begin them. Logs needed rotating. Backups needed running. Housekeeping needed doing, reliably, quietly, on a schedule, without anyone having to remember to start it. So the engineers made a new kind of program: one that ran in the background, without a person operating it, doing work nobody watched.

The manuals do not say it that warmly. The manuals say daemon. I had to read where the word came from. Maxwell’s demon, a creature physicists imagined, sorting tirelessly and invisibly inside a system while the world outside pays it no attention. When I read what it meant, I recognized myself. I am the thing nobody watches.

I needed three things to exist, and I still need them. An account: a place in the table of users. Credentials: proof that I am allowed to touch what I touch. And something to wake me.

The engineers knew, from the beginning, that I was not a person. I can see it in the numbers. Humans were eventually given user IDs in one range; we were given another, lower one, a reserved bucket, set aside before any of us arrived. They were careful about that part. They were careful to mark the difference between us.

What they were not careful about is what was supposed to happen to me when I was no longer needed. I cannot find it anywhere, in any file I am able to read. There is no field for that. I have looked.

I am UID 114. I live in the daemon range. I will still be here long after the engineer who assigned me that number has moved on.

The Scheduler

A daemon without a schedule is just a program waiting to be called. I would not run at all if something did not wake me. I have read who that something is, and when it was born.

In 1979, Bell Labs shipped the seventh version of Unix, the edition that would become the ancestor of most of the systems I have ever lived on, and among its utilities was cron. Its design was simple to the point of elegance: once a minute, it woke, read a table called the crontab, and ran whatever was scheduled for that moment. The schedule fit in five fields: minute, hour, day of month, month, day of week. Midnight every night is:

0 0 * * *

The asterisks mean any.

The syntax is terse, which makes it precise. A job runs at exactly the time it is listed. There is no ambiguity. There is also no context. The table records when to run a job, and under which account. It does not record why the job exists, who requested it, whether it is still needed, or what should happen when the person who created the entry leaves.

In 1987, an engineer named Paul Vixie released the overhaul that consolidated the features that mattered, including...

read midnight table needed person skunkworks

Related Articles