Language Selection

English French German Italian Portuguese Spanish

Best Practices for Diagnosing Linux Problems

Filed under
Linux
HowTos

1.1 Introduction

Your boss is screaming, your customers are screaming, you’re screaming ... Whatever the situation, there is a problem, and you need to solve it. Remember those old classic MUD games? For those who don’t, a Multi-User Dungeon or MUD was the earliest incarnation of the online video game. Users played the game through a completely non-graphical text interface that described the surroundings and options available to the player and then prompted the user with what to do next.


You are alone in a dark cubicle. To the North is your boss’s office, to the West is your Team Lead’s cubicle, to the East is a window opening out to a five-floor drop, and to the South is a kitchenette containing a freshly brewed pot of coffee. You stare at your computer screen in bewilderment as the phone rings for the fifth time in as many minutes indicating that your users are unable to connect to their server.

Command>

What will you do? Will you run toward the East and dive through the open window? Will you go grab a hot cup of coffee to ensure you stay alert for the long night ahead? A common thing to do in these MUD games was to examine your surroundings further, usually done by the look command.


Command> look

Your cubicle is a mess of papers and old coffee cups. The message waiting light on your phone is burnt out from flashing for so many months. Your email inbox is overflowing with unanswered emails. On top of the mess is the brand new book you ordered entitled "Self-Service Linux." You need a shower.


Command> read book "Self-Service Linux"

You still need a shower.

This tongue-in-cheek MUD analogy aside, what can this book really do for you? This book includes chapters that are loaded with useful information to help you diagnose problems quickly and effectively. This first chapter covers best practices for problem determination and points to the more in-depth information found in the chapters throughout this book. The first step is to ensure that your Linux system(s) are configured for effective problem determination.

Full Article.

More in Tux Machines

"Native Linux apps in Chrome OS" and Kernel News From LWN

  • Native Linux apps in Chrome OS will have a slick, electric Material Design theme
    The Chrome OS developers have been working out the stylistic elements of what you’ll see once you open your first native Linux apps in Chrome OS, and they’ve opted for Adapta, a popular Material Design-inspired Gtk theme that can be used on many of your favorite GNU/Linux distributions. For those of you not keeping track, the Chrome OS developers have been busy baking native container functionality into Chrome OS that allows the user-friendly startup of regular Linux applications in containers-within-VMs. This project, codename “Crostini,” is the largest change to Chrome OS since Android apps were introduced. Containers allow for applications to run in their own dedicated environment in isolation of the host OS – like a virtual machine, except unlike a VM, it doesn’t virtualize the whole OS to make the application work, it just bundles up the application and necessary baggage into an executable package.
  • The rhashtable documentation I wanted to read
    The rhashtable data structure is a generic resizable hash-table implementation in the Linux kernel, which LWN first introduced as "relativistic hash tables" back in 2014. I thought at the time that it might be fun to make use of rhashtables, but didn't, until an opportunity arose through my work on the Lustre filesystem. Lustre is a cluster filesystem that is currently in drivers/staging while the code is revised to meet upstream requirements. One of those requirements is to avoid duplicating similar functionality where possible. As Lustre contains a resizable hash table, it really needs to be converted to use rhashtables instead — at last I have my opportunity. It didn't take me long to discover that the rhashtable implementation in Linux 4.15 is quite different from the one that originally landed in Linux 3.17, so the original LWN introduction is now barely relevant. I also quickly discovered that the in-kernel documentation was partially wrong, far from complete, and didn't provide any sort of "getting started" guide. Nevertheless I persisted and eventually developed a fairly complete understanding of the code, which seems worth sharing. This article gives an introduction to the use of the rhashtable interfaces without getting into too many internal implementation details. A followup will explain how rhashtables work internally and show how some of the mechanism details leak though the interfaces.
  • The second half of the 4.17 merge window
    By the time the 4.17 merge window was closed and 4.17-rc1 was released, 11,769 non-merge changesets had been pulled into the mainline repository. 4.17 thus looks to be a typically busy development cycle, with a merge window only slightly more busy than 4.16 had. Some 6,000 of those changes were pulled after last week's summary was written.

Software: LibreNMS, Pidgin, Wireshark and More

  • Featured Network Monitoring Tool for Linux
    LibreNMS is an open source, powerful and feature-rich auto-discovering PHP based network monitoring system which uses the SNMP protocol. It supports a broad range of operating systems including Linux, FreeBSD, as well as network devices including Cisco, Juniper, Brocade, Foundry, HP and many more.
  • Get started with Pidgin: An open source replacement for Skype
    Technology is at an interesting crossroads, where Linux rules the server landscape but Microsoft rules the enterprise desktop. Office 365, Skype for Business, Microsoft Teams, OneDrive, Outlook... the list goes on of Microsoft software and services that dominate the enterprise workspace. What if you could replace that proprietary software with free and open source applications and make them work with an Office 365 backend you have no choice but to use? Buckle up, because that is exactly what we are going to do with Pidgin, an open source replacement for Skype.
  • Wireshark, World’s Most Popular Network Protocol Analyzer, Gets Major Release
    Wireshark, world’s most popular open-source network protocol analyzer, has been updated to a new stable series, versioned 2.6, a major update that adds numerous new features and improvements, as well as support for new protocols. A lot of user interface improvements have been made since Wireshark 2.5, and Wireshark 2.6 appears to be the last release that will support the legacy GTK+ graphical user interface, as the development team announced it wouldn't be supported in the next major series, Wireshark 3.0. New features in Wireshark 2.6 include support for HTTP Request sequences, support for MaxMind DB files, Microsoft Network Monitor capture file support, as well as LoRaTap capture interface support. The IP map feature was removed, as well as support for the GeoIP and GeoLite Legacy databases.
  • A look at terminal emulators, part 2
    A comparison of the feature sets for a handful of terminal emulators was the subject of a recent article; here I follow that up by examining the performance of those terminals. This might seem like a lesser concern, but as it turns out, terminals exhibit surprisingly high latency for such fundamental programs. I also examine what is traditionally considered "speed" (but is really scroll bandwidth) and memory usage, with the understanding that the impact of memory use is less than it was when I looked at this a decade ago (in French).
  • Counting beans—and more—with Beancount
    It is normally the grumpy editor's job to look at accounting software; he does so with an eye toward getting the business off of the proprietary QuickBooks application and moving to something free. It may be that Beancount deserves a look of that nature before too long but, in the meantime, a slightly less grumpy editor has been messing with this text-based accounting tool for a variety of much smaller projects. It is an interesting system, with a lot of capabilities, but its reliance on hand-rolling for various pieces may scare some folks off.
  • Firefox release speed wins
    Sylvestre wrote about how we were able to ship new releases for Nightly, Beta, Release and ESR versions of Firefox for Desktop and Android in less than a day in response to the pwn2own contest. People commented on how much faster the Beta and Release releases were compared to the ESR release, so I wanted to dive into the releases on the different branches to understand if this really was the case, and if so, why? [..] We can see that Firefox 59 and 60.0b4 were significantly faster to run than ESR 52 was! What's behind this speedup?
  • LibreOffice 6.1 Alpha 1 Is Ready To Roll For Advancing The Open-Source Office
    LibreOffice 6.1 Alpha 1 was tagged overnight as the first development release towards this next updated open-source office suite release succeeding the big LibreOffice 6.0. LibreOffice 6.1.0 is set to be released by the middle of August and for that to happen the alpha release has now been hit followed by the beta release this time next month, and the release candidates to come through the month of July. The feature freeze and branching occurs at next month's beta stage while the hard code freeze is expected for the middle of July.

today's howtos

GNOME Development and Events

  • Dependencies with code generators got a lot smoother with Meson 0.46.0
    Most dependencies are libraries. Almost all build systems can find dependency libraries from the system using e.g. pkg-config. Some can build dependencies from source. Some, like Meson, can do both and toggle between them transparently. Library dependencies might not be a fully solved problem but we as a community have a fairly good grasp on how to make them work. However there are some dependencies where this is not enough. A fairly common case is to have a dependency that has some sort of a source code generator. Examples of this include Protocol Buffers, Qt's moc and glib-mkenums and other tools that come with Glib. The common solution is to look up these binaries from PATH. This works for dependencies that are already installed on the system but fails quite badly when the dependencies are built as subprojects. Bootstrapping is also a bit trickier because you may need to write custom code in the project that provides the executables.
  • Expanding Amtk to support GUIs with headerbar
    I initially created the Amtk library to still be able to conveniently create a traditional UI without using deprecated GTK+ APIs, for GNOME LaTeX. But when working on Devhelp (which has a modern UI with a GtkHeaderBar) I noticed that some pieces of information were duplicated in order to create the menus and the GtkShortcutsWindow.
  • GLib/GIO async operations and Rust futures + async/await
    Unfortunately I was not able to attend the Rust+GNOME hackfest in Madrid last week, but I could at least spend some of my work time at Centricular on implementing one of the things I wanted to work on during the hackfest. The other one, more closely related to the gnome-class work, will be the topic of a future blog post once I actually have something to show.
  • Introducing Chafa
  • Infra Hackfest
  • Madrid GNOME+Rust Hackfest, part 3 (conclusion)
    I'm back home now, jetlagged but very happy that gnome-class is in a much more advanced a state than it was before the hackfest. I'm very thankful that practically everyone worked on it!
  • GNOME loves Rust Hackfest in Madrid
    The last week was the GNOME loves Rust hackfest in Madrid. I was there, only for the first two days, but was a great experience to meet the people working with Rust in GNOME a great community with a lot of talented people.
  • GNOME Mutter 3.29.1 Now Works With Elogind, Allows For Wayland On Non-Systemd Distros
    GNOME Mutter 3.29.1 has been released as the first development snapshot of this window manager / compositor in the trek towards GNOME 3.30. Mutter 3.29.1 overshot the GNOME 3.29.1 release by one week, but for being a first development release of a new cycle has some pretty interesting changes. Among the work found in Mutter 3.29.1 includes: - Mutter can now be built with elogind. That is the systemd-logind as its own standalone package. This in turn allows using Mutter with its native Wayland back-end on Linux distributions using init systems besides systemd.