{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreibvfzswo27ozj5rxn47e3kz2ek5gr656v2uqelrvskine5of65ayi",
    "uri": "at://did:plc:fuaxi56ej27ymlesklypt3ar/app.bsky.feed.post/3mmiscdwt3lg2"
  },
  "description": "And it’s amazing",
  "path": "/20-years-of-linux-and-i-finally-started-using-job-control/",
  "publishedAt": "2026-05-23T06:14:56.000Z",
  "site": "https://www.autodidacts.io",
  "tags": [
    "Keybindings should be universal, man!",
    "Shell Tricks That Actually Make Life Easier (And Save Your Sanity)",
    "100DaysToOffload",
    "View more posts in this series."
  ],
  "textContent": "I have been using Linux since before I owned my own computer, and for much of that time, have been comfortable with the command line (I'm a computer programmer, after all; though not a particularly fancy one).\n\nI have always been annoyed that Ctrl+Z doesn’t work in terminal (not to mention, Ctrl+S, and all other table-stakes keybindings. Keybindings should be universal, man!). I knew, vaguely, what it did. It didn't sound interesting to me.\n\nI slowly warmed up to GNU readline keybindings. They’re not as good as universal keybindings, but I sure miss them when they're gone, and now I've started using them when I write TUI dashboards. And I spend my time in a console text editor, in a non-standard shell, in tmux. Which is just to say, I'm not a _complete_ rube.\n\nBut, job control? “ _Wuts job control?_ ” said the self-styled CLI enthusiast. I knew, vaguely, that jobs could be backgrounded (whatever that meant), but I frankly didn't see the point. If you need to run something in the background, just use `command &` like a normal person (and then watch it rudely spit characters into your terminal when it feels like it anyhow).\n\nSo.\n\nThen I was working on a project in which I spent large swaths of my day SSH'ed into an underpowered box running way to many heavy processes, via a bastion server. The nature of the work required binocular vision, so — prepare for the yuck — I would split my home Tmux into two panes, open _two_ SSH sessions, knowing vaguely how gross that was, and double-hop to the server, using one pane for my main work, and the other for poking around the file system as needed.\n\nProbably a month into the project, which involved running interminable Python analysis scripts against a 20gb SQLite DB, I (_re?)_ read the wonderful post Shell Tricks That Actually Make Life Easier (And Save Your Sanity). There was that little `fg` thing again...\n\nSuddenly, I was able to run _one_ SSH session. Mind blown!\n\nIt works like this:\n\n  1. Start long running process: `python3 my_epic_analysis_script.py --do-all-the-extra-stuff-too`\n  2. Background it with Ctrl+z (and `bg` if you want to to keep going rather than go on ice)\n  3. Do other stuff, like poking around the file system, or madly trying to recover from swap thrashing\n  4. When ready to check if it finished (we're not fancy enough to have it notify), run `fg` to bring it back\n\n\n\nThis is amazing right on its own, but it gets even better. Did you know that modern CPUs with modern CLIs can run _two programs at once?!_\n\n  1. Start long running process: `python3 oh_my_gosh_this_is_going_to_take_all_night.py --auto-resume-when-you-crash`\n  2. Background it with Ctrl+z (and `bg`)\n  3. Start _another_ thing that’s super slow and resource hungry: `emacs`\n  4. Background that too with Ctrl+z (and `bg`)\n  5. Where did all my stuff go? Someone tidied up my room and now I can't find the clothes I left on the floor! That’s a job for `jobs`\n  6. Which one do we want? The first one, or the second one? The first one: `fg %1` (← unclear what the percentage sign is up to but there it is)\n  7. Still not done! Ctrl+z and `bg`, then `fg` (we can skip the `%2` because there is no third job at present), then Ctrl+z and `bg`, then, in the morning, `fg %1`.\n\n\n\nI sometimes wonder if someone who really _knew_ Linux would ever need to install applications. The problem, often, isn’t that the feature isn’t there: the problem is _discoverability._\n\nIt was the same thing when I was learning Vim. I would install all kinds of glorious plugins, and then, months or years later, learn that the base install provided 98% of the functionality I needed, it just was a bit weird, and hard to find.\n\nNow you can press ctrl+z on this blog, and `fg` on whatever you were trying to do when you found it.\n\n****Note:**** this post is part of #100DaysToOffload, a challenge to publish 100 posts in 365 days. These posts are generally shorter and less polished than our normal posts; expect typos and unfiltered thoughts! View more posts in this series.\n\n\n",
  "title": "20 years of Linux and I finally started using job control",
  "updatedAt": "2026-05-23T06:25:09.784Z"
}