summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-28 15:10:43 +0300
committerPaul Buetow <paul@buetow.org>2025-07-28 15:10:43 +0300
commitd49046aed531bc9a4bd1055e6c0f67cd30d97a75 (patch)
treeeb6c858ae0896f19ed20068882eafc553b83719c
parent5d773fe53266f2cc69ff0ec306dbd4e779816752 (diff)
Update content for html
-rw-r--r--about/resources.html194
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html72
-rw-r--r--gemfeed/atom.xml74
-rw-r--r--index.html2
-rw-r--r--uptime-stats.html2
5 files changed, 182 insertions, 162 deletions
diff --git a/about/resources.html b/about/resources.html
index ee592f57..45b3fb17 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,107 +50,107 @@
<span>In random order:</span><br />
<br />
<ul>
-<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
+<li>Java ist auch eine Insel; Christian Ullenboom; </li>
<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li>
-<li>The Docker Book; James Turnbull; Kindle</li>
-<li>Raku Recipes; J.J. Merelo; Apress</li>
+<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
+<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
+<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
+<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
+<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
+<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
+<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
+<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
+<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
+<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
+<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
+<li>Raku Fundamentals; Moritz Lenz; Apress</li>
+<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
+<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li>
<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li>
-<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
+<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O&#39;Reilly</li>
-<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
-<li>Effective awk programming; Arnold Robbins; O&#39;Reilly</li>
<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li>
-<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li>
+<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
+<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
+<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
+<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
+<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
+<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li>
+<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
+<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
+<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
+<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
<li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li>
-<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li>
-<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li>
+<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li>
-<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O&#39;Reilly</li>
-<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li>
-<li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li>
-<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li>
-<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li>
<li>C++ Programming Language; Bjarne Stroustrup;</li>
-<li>Funktionale Programmierung; Peter Pepper; Springer</li>
-<li>Leanring eBPF; Liz Rice; O&#39;Reilly</li>
-<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li>
-<li>Raku Fundamentals; Moritz Lenz; Apress</li>
-<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O&#39;Reilly</li>
-<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li>
+<li>The Docker Book; James Turnbull; Kindle</li>
+<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li>
<li>Ultimate Go Notebook; Bill Kennedy</li>
-<li>Concurrency in Go; Katherine Cox-Buday; O&#39;Reilly</li>
-<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li>
-<li>21st Century C: C Tips from the New School; Ben Klemens; O&#39;Reilly</li>
-<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li>
-<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li>
-<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li>
-<li>Java ist auch eine Insel; Christian Ullenboom; </li>
-<li>Site Reliability Engineering; How Google runs production systems; O&#39;Reilly</li>
-<li>DNS and BIND; Cricket Liu; O&#39;Reilly</li>
-<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
-<li>Modern Perl; Chromatic ; Onyx Neon Press</li>
-<li>Developing Games in Java; David Brackeen and others...; New Riders</li>
-<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall &amp; Jon Orwant; O&#39;Reilly</li>
-<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li>
-<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li>
+<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li>
+<li>Funktionale Programmierung; Peter Pepper; Springer</li>
+<li>Raku Recipes; J.J. Merelo; Apress</li>
<li>Data Science at the Command Line; Jeroen Janssens; O&#39;Reilly</li>
+<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li>
<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O&#39;Reilly</li>
+<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O&#39;Reilly</li>
+<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li>
</ul><br />
<h2 style='display: inline' id='technical-references'>Technical references</h2><br />
<br />
<span>I didn&#39;t read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br />
<br />
<ul>
-<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
-<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
<li>Implementing Service Level Objectives; Alex Hidalgo; O&#39;Reilly</li>
-<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
+<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O&#39;Reilly</li>
+<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
<li>Relayd and Httpd Mastery; Michael W Lucas</li>
<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li>
+<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li>
<li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li>
-<li>Groovy Kurz &amp; Gut; Joerg Staudemeier; O&#39;Reilly</li>
+<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li>
</ul><br />
<h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br />
<br />
<span>In random order:</span><br />
<br />
<ul>
+<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
+<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
+<li>Getting Things Done; David Allen</li>
<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li>
-<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
-<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
-<li>Slow Productivity; Cal Newport; Penguin Random House</li>
-<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
-<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
-<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
-<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
-<li>Eat That Frog; Brian Tracy</li>
-<li>Ultralearning; Scott Young; Thorsons</li>
-<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
-<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
-<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
-<li>Deep Work; Cal Newport; Piatkus</li>
+<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li>
-<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
-<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
-<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
<li>Soft Skills; John Sommez; Manning Publications</li>
-<li>So Good They Can&#39;t Ignore You; Cal Newport; Business Plus</li>
-<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
-<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li>
-<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li>
-<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Deep Work; Cal Newport; Piatkus</li>
+<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
+<li>Atomic Habits; James Clear; Random House Business</li>
+<li>The Complete Software Developer&#39;s Career Guide; John Sonmez; Unabridged Audiobook</li>
+<li>Ultralearning; Scott Young; Thorsons</li>
+<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
+<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
+<li>Slow Productivity; Cal Newport; Penguin Random House</li>
<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li>
-<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
<li>Time Management for System Administrators; Thomas A. Limoncelli; O&#39;Reilly</li>
-<li>Getting Things Done; David Allen</li>
-<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
+<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li>
+<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li>
+<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li>
+<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon &amp; Schuster UK</li>
+<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li>
+<li>The Power of Now; Eckhard Tolle; Yellow Kite</li>
+<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li>
+<li>Eat That Frog; Brian Tracy</li>
<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li>
-<li>Ultralearning; Anna Laurent; Self-published via Amazon</li>
+<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li>
+<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li>
+<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li>
<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li>
-<li>Atomic Habits; James Clear; Random House Business</li>
-<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li>
-<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li>
+<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li>
+<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li>
+<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li>
+<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li>
+<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li>
</ul><br />
<a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br />
<br />
@@ -159,22 +159,22 @@
<span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br />
<br />
<ul>
+<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
+<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
<li>The Ultimate Kubernetes Bootcamp; School of Devops; O&#39;Reilly Online</li>
-<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
+<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
+<li>Protocol buffers; O&#39;Reilly Online</li>
+<li>Functional programming lecture; Remote University of Hagen</li>
<li>Ultimate Go Programming; Bill Kennedy; O&#39;Reilly Online</li>
<li>Apache Tomcat Best Practises; 3-day on-site training</li>
-<li>Functional programming lecture; Remote University of Hagen</li>
+<li>MySQL Deep Dive Workshop; 2-day on-site training</li>
+<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
+<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
<li>Scripting Vim; Damian Conway; O&#39;Reilly Online</li>
-<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
-<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li>
-<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li>
<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li>
-<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li>
-<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O&#39;Reilly Online</li>
-<li>Algorithms Video Lectures; Robert Sedgewick; O&#39;Reilly Online</li>
-<li>Protocol buffers; O&#39;Reilly Online</li>
-<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li>
-<li>Developing IaC with Terraform (with Live Lessons); O&#39;Reilly Online</li>
+<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li>
+<li>AWS Immersion Day; Amazon; 1-day interactive online training </li>
</ul><br />
<h2 style='display: inline' id='technical-guides'>Technical guides</h2><br />
<br />
@@ -182,8 +182,8 @@
<br />
<ul>
<li>How CPUs work at https://cpu.land</li>
-<li>Raku Guide at https://raku.guide </li>
<li>Advanced Bash-Scripting Guide </li>
+<li>Raku Guide at https://raku.guide </li>
</ul><br />
<h2 style='display: inline' id='podcasts'>Podcasts</h2><br />
<br />
@@ -192,32 +192,32 @@
<span>In random order:</span><br />
<br />
<ul>
+<li>Dev Interrupted</li>
<li>BSD Now [BSD]</li>
<li>The Pragmatic Engineer Podcast</li>
-<li>Cup o&#39; Go [Golang]</li>
-<li>Dev Interrupted</li>
-<li>Fallthrough [Golang]</li>
<li>Maintainable</li>
-<li>Deep Questions with Cal Newport</li>
+<li>The Changelog Podcast(s)</li>
<li>Modern Mentor</li>
<li>Backend Banter</li>
-<li>Fork Around And Find Out</li>
+<li>Cup o&#39; Go [Golang]</li>
+<li>Deep Questions with Cal Newport</li>
<li>Pratical AI</li>
<li>Hidden Brain</li>
+<li>Fallthrough [Golang]</li>
<li>The ProdCast (Google SRE Podcast)</li>
-<li>The Changelog Podcast(s)</li>
+<li>Fork Around And Find Out</li>
</ul><br />
<h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br />
<br />
<span>I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.</span><br />
<br />
<ul>
-<li>CRE: Chaosradio Express [german]</li>
<li>Go Time (predecessor of fallthrough)</li>
-<li>Ship It (predecessor of Fork Around And Find Out)</li>
<li>Java Pub House</li>
-<li>Modern Mentor</li>
+<li>CRE: Chaosradio Express [german]</li>
+<li>Ship It (predecessor of Fork Around And Find Out)</li>
<li>FLOSS weekly</li>
+<li>Modern Mentor</li>
</ul><br />
<h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br />
<br />
@@ -226,25 +226,25 @@
<ul>
<li>Golang Weekly</li>
<li>Ruby Weekly</li>
-<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
-<li>Monospace Mentor</li>
+<li>The Valuable Dev</li>
<li>Changelog News</li>
-<li>The Imperfectionist</li>
+<li>Register Spill</li>
+<li>byteSizeGo</li>
+<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li>
<li>Applied Go Weekly Newsletter</li>
-<li>The Pragmatic Engineer</li>
-<li>The Valuable Dev</li>
+<li>The Imperfectionist</li>
<li>VK Newsletter</li>
-<li>byteSizeGo</li>
-<li>Register Spill</li>
+<li>Monospace Mentor</li>
+<li>The Pragmatic Engineer</li>
</ul><br />
<h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br />
<br />
<span>This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:</span><br />
<br />
<ul>
-<li>LWN (online only)</li>
-<li>Linux User</li>
<li>Linux Magazine</li>
+<li>Linux User</li>
+<li>LWN (online only)</li>
<li>freeX (not published anymore)</li>
</ul><br />
<h1 style='display: inline' id='formal-education'>Formal education</h1><br />
diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
index 85d007e8..b58eb813 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
@@ -1602,7 +1602,6 @@ http://www.gnu.org/software/src-highlite -->
MOUNT_POINT=<font color="#808080">"/data/nfs/k3svolumes"</font>
LOCK_FILE=<font color="#808080">"/var/run/nfs-mount-check.lock"</font>
-STATE_FILE=<font color="#808080">"/var/run/nfs-mount.state"</font>
<i><font color="silver"># Use a lock file to prevent concurrent runs</font></i>
<b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$LOCK_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
@@ -1611,46 +1610,57 @@ STATE_FILE=<font color="#808080">"/var/run/nfs-mount.state"</font>
touch <font color="#808080">"$LOCK_FILE"</font>
<b><u><font color="#000000">trap</font></u></b> <font color="#808080">"rm -f $LOCK_FILE"</font> EXIT
-remount_it () {
- <i><font color="silver"># Try to fix</font></i>
- echo <font color="#808080">"Attempting to fix/remount NFS mount at $(date)"</font> | systemd-cat -t nfs-monitor -p notice
- umount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null
- sleep <font color="#000000">1</font>
+fix_mount () {
+ echo <font color="#808080">"Attempting to remount NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> mount -o remount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Remount command issued for $MOUNT_POINT"</font>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to remount NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">fi</font></u></b>
- <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
- echo <font color="#808080">"NFS mount fixed at $(date)"</font> | systemd-cat -t nfs-monitor -p info
- rm -f <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Checking if $MOUNT_POINT is a mountpoint"</font>
+ <b><u><font color="#000000">if</font></u></b> mountpoint <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"$MOUNT_POINT is a valid mountpoint"</font>
<b><u><font color="#000000">else</font></u></b>
- echo <font color="#808080">"Failed to fix NFS mount at $(date)"</font> | systemd-cat -t nfs-monitor -p err
+ echo <font color="#808080">"$MOUNT_POINT is not a valid mountpoint, attempting mount"</font>
+ <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Successfully mounted $MOUNT_POINT"</font>
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">fi</font></u></b>
<b><u><font color="#000000">fi</font></u></b>
-}
-<i><font color="silver"># Quick check - ensure it's actually mounted</font></i>
-<b><u><font color="#000000">if</font></u></b> ! mountpoint -q <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
- echo <font color="#808080">"NFS mount not found at $(date)"</font> | systemd-cat -t nfs-monitor -p err
- remount_it
-<b><u><font color="#000000">fi</font></u></b>
+ echo <font color="#808080">"Attempting to unmount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> umount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Successfully unmounted $MOUNT_POINT"</font>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to unmount $MOUNT_POINT (it might not be mounted)"</font>
+ <b><u><font color="#000000">fi</font></u></b>
-<i><font color="silver"># Quick check - try to stat a directory with a very short timeout</font></i>
-<b><u><font color="#000000">if</font></u></b> timeout 2s stat <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># Mount appears healthy</font></i>
- <b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$STATE_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># Was previously unhealthy, log recovery</font></i>
- echo <font color="#808080">"NFS mount recovered at $(date)"</font> | systemd-cat -t nfs-monitor -p info
- rm -f <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Attempting to mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT mounted successfully"</font>
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to mount NFS mount $MOUNT_POINT"</font>
<b><u><font color="#000000">fi</font></u></b>
- <b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
-<b><u><font color="#000000">fi</font></u></b>
-<i><font color="silver"># Mount is unhealthy</font></i>
-<b><u><font color="#000000">if</font></u></b> [ ! -f <font color="#808080">"$STATE_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># First detection of unhealthy state</font></i>
- echo <font color="#808080">"NFS mount unhealthy detected at $(date)"</font> | systemd-cat -t nfs-monitor -p warning
- touch <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Failed to fix NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">1</font>
+}
+
+<b><u><font color="#000000">if</font></u></b> ! mountpoint <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT not found"</font>
+ fix_mount
<b><u><font color="#000000">fi</font></u></b>
-remount_it
+<b><u><font color="#000000">if</font></u></b> ! timeout 2s stat <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT appears to be unresponsive"</font>
+ fix_mount
+<b><u><font color="#000000">fi</font></u></b>
EOF
+
[root@r0 ~]<i><font color="silver"># chmod +x /usr/local/bin/check-nfs-mount.sh</font></i>
</pre>
<br />
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index dc1c83bb..86fbc6ea 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2025-07-28T14:27:18+03:00</updated>
+ <updated>2025-07-28T15:09:21+03:00</updated>
<title>foo.zone feed</title>
<subtitle>To be in the .zone!</subtitle>
<link href="https://foo.zone/gemfeed/atom.xml" rel="self" />
@@ -1609,7 +1609,6 @@ http://www.gnu.org/software/src-highlite -->
MOUNT_POINT=<font color="#808080">"/data/nfs/k3svolumes"</font>
LOCK_FILE=<font color="#808080">"/var/run/nfs-mount-check.lock"</font>
-STATE_FILE=<font color="#808080">"/var/run/nfs-mount.state"</font>
<i><font color="silver"># Use a lock file to prevent concurrent runs</font></i>
<b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$LOCK_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
@@ -1618,46 +1617,57 @@ STATE_FILE=<font color="#808080">"/var/run/nfs-mount.state"</font>
touch <font color="#808080">"$LOCK_FILE"</font>
<b><u><font color="#000000">trap</font></u></b> <font color="#808080">"rm -f $LOCK_FILE"</font> EXIT
-remount_it () {
- <i><font color="silver"># Try to fix</font></i>
- echo <font color="#808080">"Attempting to fix/remount NFS mount at $(date)"</font> | systemd-cat -t nfs-monitor -p notice
- umount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null
- sleep <font color="#000000">1</font>
+fix_mount () {
+ echo <font color="#808080">"Attempting to remount NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> mount -o remount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Remount command issued for $MOUNT_POINT"</font>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to remount NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">fi</font></u></b>
- <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
- echo <font color="#808080">"NFS mount fixed at $(date)"</font> | systemd-cat -t nfs-monitor -p info
- rm -f <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Checking if $MOUNT_POINT is a mountpoint"</font>
+ <b><u><font color="#000000">if</font></u></b> mountpoint <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"$MOUNT_POINT is a valid mountpoint"</font>
<b><u><font color="#000000">else</font></u></b>
- echo <font color="#808080">"Failed to fix NFS mount at $(date)"</font> | systemd-cat -t nfs-monitor -p err
+ echo <font color="#808080">"$MOUNT_POINT is not a valid mountpoint, attempting mount"</font>
+ <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Successfully mounted $MOUNT_POINT"</font>
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">fi</font></u></b>
<b><u><font color="#000000">fi</font></u></b>
-}
-<i><font color="silver"># Quick check - ensure it's actually mounted</font></i>
-<b><u><font color="#000000">if</font></u></b> ! mountpoint -q <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
- echo <font color="#808080">"NFS mount not found at $(date)"</font> | systemd-cat -t nfs-monitor -p err
- remount_it
-<b><u><font color="#000000">fi</font></u></b>
+ echo <font color="#808080">"Attempting to unmount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> umount -f <font color="#808080">"$MOUNT_POINT"</font> <font color="#000000">2</font>&gt;/dev/null; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"Successfully unmounted $MOUNT_POINT"</font>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to unmount $MOUNT_POINT (it might not be mounted)"</font>
+ <b><u><font color="#000000">fi</font></u></b>
-<i><font color="silver"># Quick check - try to stat a directory with a very short timeout</font></i>
-<b><u><font color="#000000">if</font></u></b> timeout 2s stat <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># Mount appears healthy</font></i>
- <b><u><font color="#000000">if</font></u></b> [ -f <font color="#808080">"$STATE_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># Was previously unhealthy, log recovery</font></i>
- echo <font color="#808080">"NFS mount recovered at $(date)"</font> | systemd-cat -t nfs-monitor -p info
- rm -f <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Attempting to mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">if</font></u></b> mount <font color="#808080">"$MOUNT_POINT"</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT mounted successfully"</font>
+ <b><u><font color="#000000">return</font></u></b>
+ <b><u><font color="#000000">else</font></u></b>
+ echo <font color="#808080">"Failed to mount NFS mount $MOUNT_POINT"</font>
<b><u><font color="#000000">fi</font></u></b>
- <b><u><font color="#000000">exit</font></u></b> <font color="#000000">0</font>
-<b><u><font color="#000000">fi</font></u></b>
-<i><font color="silver"># Mount is unhealthy</font></i>
-<b><u><font color="#000000">if</font></u></b> [ ! -f <font color="#808080">"$STATE_FILE"</font> ]; <b><u><font color="#000000">then</font></u></b>
- <i><font color="silver"># First detection of unhealthy state</font></i>
- echo <font color="#808080">"NFS mount unhealthy detected at $(date)"</font> | systemd-cat -t nfs-monitor -p warning
- touch <font color="#808080">"$STATE_FILE"</font>
+ echo <font color="#808080">"Failed to fix NFS mount $MOUNT_POINT"</font>
+ <b><u><font color="#000000">exit</font></u></b> <font color="#000000">1</font>
+}
+
+<b><u><font color="#000000">if</font></u></b> ! mountpoint <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT not found"</font>
+ fix_mount
<b><u><font color="#000000">fi</font></u></b>
-remount_it
+<b><u><font color="#000000">if</font></u></b> ! timeout 2s stat <font color="#808080">"$MOUNT_POINT"</font> &gt;/dev/null <font color="#000000">2</font>&gt;&amp;<font color="#000000">1</font>; <b><u><font color="#000000">then</font></u></b>
+ echo <font color="#808080">"NFS mount $MOUNT_POINT appears to be unresponsive"</font>
+ fix_mount
+<b><u><font color="#000000">fi</font></u></b>
EOF
+
[root@r0 ~]<i><font color="silver"># chmod +x /usr/local/bin/check-nfs-mount.sh</font></i>
</pre>
<br />
diff --git a/index.html b/index.html
index d564f950..a8c48bce 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
</p>
<h1 style='display: inline' id='hello'>Hello!</h1><br />
<br />
-<span class='quote'>This site was generated at 2025-07-28T14:27:18+03:00 by <span class='inlinecode'>Gemtexter</span></span><br />
+<span class='quote'>This site was generated at 2025-07-28T15:09:21+03:00 by <span class='inlinecode'>Gemtexter</span></span><br />
<br />
<span>Welcome to the foo.zone!</span><br />
<br />
diff --git a/uptime-stats.html b/uptime-stats.html
index 8a490a80..b044cae9 100644
--- a/uptime-stats.html
+++ b/uptime-stats.html
@@ -13,7 +13,7 @@
</p>
<h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br />
<br />
-<span class='quote'>This site was last updated at 2025-07-28T14:27:18+03:00</span><br />
+<span class='quote'>This site was last updated at 2025-07-28T15:09:21+03:00</span><br />
<br />
<span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br />
<br />