Learning modern Linux: A handbook for the cloud native practitioner
oreilly.com
oreilly.com
I could have done a quick "dnf -y install cronie", but I decided "F it, might as well go ahead and learn to write SystemD timer definitions". It wasn't bad, but I feel like I've turned to the dark side or something.
I'm also one of the many people suffering for the loss of the old tools. Maybe we should create a support group?
Anyway, I would keep them installed, but the new ones interfaces just make a lot more sense, so even though it's hard to write the correct command (they could be better documented), it is much easier to decide if a command is correct or not after it's written.
Indeed. I finally got over the transition from screen to tmux.
I'd also suggest reading "Unix Internals" by Uresh Vahalia. While this book is from 1995 and it doesn't cover Linux specifically, it's an exceptional resource for understanding how *nix kernels work in general.
What does "Learn critical components such as the Linux kernel"
mean to the author? I have not read this book, but do they mean we are going kernel hacking or I will show you how to compile a kernel for cloud native applications (whatever that would mean, really)?
Others swear by fish and how it revolutionised their terminal. Hell,I've seen people fall in love with Powershell of all shells because of its interactivity and cross platform scripting language that doesn't rely on Unix tools being present in $PATH. I don't get it, but that's okay; they can have their preferences and I can have mine.
You've got to find what works for you. Nano, emacs, .*vim, vi, using a magnetic needle to manually flip bits on a spinning platter, it doesn't matter, whatever keeps you happy and/or productive.
The vast majority of Linux users seem to use bash. Zsh has been picked up more and more by Apple for licensing and the "threat" of open source. I don't think shells like fish are a threat to the ecosystem as long as they keep the most basic form of compatibility with bash (not sh). You need bash installed anyway, otherwise you can't curl2bash to install "modern" Linux software!
Shells are just REPLs; use your editor to drive them. This helps document what exactly was done on a machine, and encourages code re-use (yank-put from last time) and other tidbits you get when editing (git repos, git search, etc.).
If you all log in to the same account, you'll need to pick some standard. It doesn't really matter if the system decides on that standard or if you just ask the team what they prefer and pick the most popular shell. When in doubt, install all shells, log in to sh and let people start their shell of choice.
If you operate your own data centers, then you need to do configuration management of the machines, so their configurations are immutable/reproducible.
(These problems all arise once you have a large fleet and a large ops team.)
nobody cares about user accounts. use whatever you want on your laptop, nobody cares.
however if a script reaches a production server, it should either be sh, bash, or a real programming language (python/ruby/perl/whatever).
the ugly stuff i've seen is that some snowflake user drops their scripts written in ${shell_of_the_week} and leaves, the script breaks and now i have there's this thing that has to be not only fixed, but possibly rewritten from scratch.
The "one off" script from two years ago that you really, really need right now probably won't work. Perl/bash are less likely to hit this (they stopped changing years ago). It's an open question whether golang will have this problem.
Sure, it is not the same as your home machine - but even with the right shell, you customized config files woukd still be missing. So it is easier to get used to defaukt setup on defaut shell when managing many machines.
(This is the reason I had to learn vi back in the day: sure, my machine has lovingly customized emacs.. But that old Sun one needs to debug? Vi only.)
I still don't use it on Linux but I do think it's a big step forward for scripting.
For example:
$ w --libxo json|json_pp
{
"uptime-information" : {
"days" : 46,
"hours" : 22,
"load-average-1" : 0.19,
"load-average-15" : 0.13,
"load-average-5" : 0.12,
"minutes" : 11,
"seconds" : 34,
[...]
Obviously it's not as extensive as PowerShell, but it definitely gets rid of screen-scraping.[0] https://www.freebsd.org/cgi/man.cgi?query=libxo&sektion=3&fo...
custom PATH for your own programs
options to programs like LESS
The deal breaker for be with fish is abandoning decades of bash syntax. With zsh, I can have my fancy, productive prompt and still write bash-compatible sheets scripts.
I don't have a better alternative but something about practitioner just feels so forced and stuffy.
On the flip side I do like viewing operation of technical tooling in support of businesses as a practice to be continually improved. Most businesses don't really embrace that in my experience. If they did, even with it being a cost center, they would spend more time making sound decisions around tech being used (which would hopefully reduce the k8s mania).