The Linux kernel will fix some peculiar argv usage in execve(2)
Suppose, not entirely hypothetically, that your Linux kernel haslogged a kernel message to the effect of:
process 'syscall.test' launched '/dev/null' with NULL argv: empty string added
(This one was triggered by building Go from source.)
In a conventional call to execve(2) , the argv argument is a pointer to an array that will become the executedprogram's argv , with the array terminated with a NULL element (inthe grand C fashion, there is no explicit
Why Prometheus exporters really need fixed TCP ports
It started with this Fediverse post from Scott Laird :
Prometheus maintains a list of port numbers for exporters, soexporters don't conflict with each other. They allocated the range9100-9999 when the project started. 900 exporters should be enoughfor everyone?
Yeah, that range is now 100% allocated.
This sparked a discussion that touched on having exporters randomlypick their TCP port when they start and being set up in Prometheusthrough some service discovery mechanism, including
Unix is not POSIX
GNU Grep's defense of its decision to ruin and then drop the' fgrep ' and ' egrep ' commands is that these commands aren't in POSIX . There are a number of problemswith this, but one of them is that Unix is not POSIX (andconversely, POSIX is not Unix). In practice, POSIX partially overlapswith modern Unixes, so just because something isn't in POSIX is notany sort of reason for a Unix to not have it (and never has been).
GNU Grep versus the (Linux) open source ecology
One of the changes in GNU Grep 3.8 was, to quote this releasenotice (also the GNU Grep 3.8 release NEWS ):
The egrep and fgrep commands, which have been deprecated since release2.5.3 (2007), now warn that they are obsolescent and should bereplaced by grep -E and grep -F.
GNU Grep's fgrep and egrep commands were already shell scriptsthat ran ' grep -F ' or ' grep -E ', so this
Capturing data you need later when using bpftrace
When using bpftrace , it's pretty commonthat not all of the data you want to report on is available in onespot, at least when you have to trace kernel functions instead oftracepoints. When this comes up, there is a common pattern that youcan use to temporarily capture the data for later use. To summarizethis pattern, it's to save the information in an associative array that's indexed by the thread id to create a per-thread variable .If you have more than one
DNSSEC failures are how you get people to disable DNSSEC
The news of the time interval is that the people in charge of theNew Zealand country zones (things directly under .nz) fumbled aDNSSEC key (KSK) rollover in such a way as to break DNSSEC resolutionfor those domains (see DNSSEC chain validation issue for .nzdomains , this news article ,and more ).The suggested resolution to return these domains to working DNSSECwas for all of the people running DNSSEC validating resolvers toflush the zone information for everything under .nz. Or you couldwait for
Some tricks for getting the data you need when using bpftrace
When I talked about drgn versus bpftrace ,I mentioned that one issue with bpftrace is that it doesn't havemuch access to global variables in the kernel (and things that theypoint to); at the moment it seems that bpftrace can only access(some) global variables in the main kernel, and not global variablesin modules. However, often the information you may want to get isin module global variables, for example the NFS locks that thekernel NFS server is tracking or importantstate variables for changes
System administration's long slow march to configuration automation
Dan Luu recently asked about past and current computing productivityimprovements that were so good that it was basically impossible forthem not to get adopted . In my reply,I nominated configuration management ( here ):
From a system administration perspective, the move from hand-craftingsystems to automating their setup (or as much of it as possible) feelsboth transformative and so obviously compelling to practitioners thatyou hardly have to sell the idea.
(The end point of that today is containerization and k8s/etc, but
My current editor usage (as of mid 2023)
I use three (Unix) editors on a regular basis, and there's a storyor two in that and how my editor usage has shifted over time. Forme, the big shift has been that vim has become my default editor,the editor I normally use unless there's some special circumstance.One way to put it is that vim has become my editing path of leastresistance. This shift isn't something that I would have predictedyears ago (back then I definitely didn't particularly
How I set up a server for testing new Grafana versions and other things
I mentioned yesterday that you probably should have a server thatyou can test Grafana upgrades on ,and having one is useful for experiments. There are a couple ofways to set up such a server, and as it happens our environment is built in such a way to make itespecially easy. Although our Prometheus server and Grafana run onthe same machine and so Grafana could access Prometheus as'localhost:9090', when I set this up I decided that Grafana shouldinstead access Prometheus through our reverse