Hacker News new | past | comments | ask | show | jobs | submit login
Btop++ is a power resource monitor for Linux (github.com/aristocratos)
316 points by feross on Sept 25, 2021 | hide | past | favorite | 65 comments

On the surface looks like an improvement over htop ( which I've been using for 10+ years )

But this is the kind of software that I would want to keep using. Will btop keep being supported? Is btop going to be available in practically all distros I use? Even currently on Arch its only in the AUR.

Its also concerning there is btop[0] and bpytop[1]? I don't understand the difference.



I think bpytop is the previous version writtten in Python. btop++ is a cpp re-write

And, as I just found while poking around, `bpytop` is also a rewrite, of the original(?) `bashtop`.

Would you like to have btop in Arch [community]? I could move it if it has enough interest.

Yes, please. I added a vote on AUR as well.


Quick word of warning, if you download it: The release archive doesn't create a directory, just untars into $CWD. So do this:

    mkdir btop
    cd btop
    tar xjvf ~/Downloads/btop.....tbz
Apart from that, it looks really, really nice. I like it a lot!

I use atool (https://www.nongnu.org/atool/) for unpacking random archives - it abstracts away all formats including zip/rar/7z, compression and also guarantees that nothing is ever extracted into $CWD.

I use `unp` for the same thing. `-u` extracts into a directory.

Since unp is a stock ticker, it's a little harder to find: https://github.com/mitsuhiko/unp

Looks like it might be in standard Ubuntu repositories:


i use unar/lsar

https://theunarchiver.com/command-line https://github.com/MacPaw/XADMaster

in difference to unp and atool, unar does not depend on other tools to unpack the actual archive

Gotta check that out, thanks for the tip!

This is why I have trust issues when github pulling or exploding a tar.

Maybe it's just me, but this seems like the more obvious behaviour? Personally I'd typically extract in /tmp/relevant-name, and sometimes that results in /tmp/relevant-name/relevant-name.

Doesn't seem a big deal or require/cause trust issues to me.

(And when I create one, I always have to check/look up what happens, so it doesn't surprise me that a variety of things get done at all.)

It's been common convention for decades that if you distribute a source tarball of something, that everything inside is inside a directory named foobar-1.0 where 'foobar' is the project name and 1.0 is the version.

Not everyone does this, of course, but it's nice when they do. Because it means you can just wget the file into a dir and untar it without worrying about it messing up whatever is already there. Also handy for putting different versions of the project side-by-side.

Ok, but like you say it's a mixed bag - I 'wget the file into a dir and untar it without worrying about it messing up whatever is already there', because nothing is, it's a mktemp -d or manual equivalent.

That was typical on DOS/Windows when distributing ZIP archives, for a long time.

But on *nix systems, the idiom for tarballs usually includes a directory containing all of the contents.

> (And when I create one, I always have to check/look up what happens, so it doesn't surprise me that a variety of things get done at all.)

True - I usually do a `tar tf foo.tar.xz |head` to get a quick peek at the archive. This generally avoids the problem of dumping a bunch of files into the current directory.

I always check the contents with -t before extracting.

One could always run "tar tv[z]f" on the archive first, and then choose whether or not to explode it in the current directory.

The first thing I do with a Linux installation it's always add htop, and this it's the first time I feel the need to try something new in my routine.

htop and ncdu

For me, it's been bottom https://github.com/ClementTsang/bottom and dua https://github.com/Byron/dua-cli for a while

I've found some other cool CLIs written with rust at https://github.com/TaKO8Ki/awesome-alternatives-in-rust

Is there a `htop` for temperature or network traffic similar to these tools?

iftop has networking covered.

I like htop+dstat as nice compliments, but sadly dstat isn't universally available like htop and it's unmaintained

htop and multitail are always tied for me.


I never heard of this one before. What's the benefit instead of doing this with Tmux?

Biggest thing is if you’re doing a streaming tail with an * pattern, it figures it out and filters them into proper groups instead of a single blob stream.

I didn’t know you could something like that we tmux though. I’ll have to check it out. :)

You can't, I was just talking about tailing multiple files in Tmux splits.

> multitail

You just made my day. I always open multiple ssh sessions just to display various logs at the same time.

Seems like you can even docker-compose logs -tf | multitail -j.

edit: I never took the time to learn tmux but after just watching a use case video, seems like you could achieve the same result with tmux indeed, as the other comment suggested.

If you're open to new tools, the latest version of the Logfile Navigator (lnav) supports remote hosts over ssh:


The main advantages of lnav over multitail is that it collates log files by time and does syntax highlighting. There are many other features as well -- https://lnav.org/features

tmux or gnu screen work fine (screen is sometimes installed when tmux is not)

That terminal UI is a work of art...

It’s really nice. That main main screen is giving me flashbacks to Doom.

It’s giving me some pretty heavy mid-90’s BBS vibes. Even the menu with the big BTOP++ logo reminds me of a main menu on a BBS.

Now if we can just slow it down to 240 characters/second to simulate the real experience. It won’t be authentic unless it also slows down when you’re changing colors because of the ANSI escape codes.

Agreed. I thought gotop was cool but wow

Author: please make your program name an acronym for

Bower Tesource Onitor for Pinux

I have been using glances for a terminal sysmon but I don't like that it eats so much RAM. Can someone please recommend a system monitor that is easy to comprehend and less resource hungry?

I am also curious about below [0] since it came up recently.

[0] https://github.com/facebookincubator/below

Maybe bottom[0]? I use bpytop but probably wouldn't recommend it on account of how heavy it is. I remember bottom being pretty lightweight when I used it, without sacrificing readability.

[0] https://github.com/ClementTsang/bottom

'nmon' doesn't get much attention, but it feels lightweight (I haven't tested if it really is) - https://en.wikipedia.org/wiki/Nmon

Kinda depends on what you want to know and how much memory you think is too much. Implementations range from sar to atop to netdata and many others.

ytop is nice rust based one if you like the rust ecosystem, it's still good even if you don't but I think you need to install cargo/rust in most cases to build it, I don't think anyone packages it. "cargo install ytop" -> .cargo/bin/ytop

That's the prettiest 'make' I've ever seen. I wish I had something more useful to contribute but I'm still staring at its beauty.

This looks very nice, but the compiler version requirement is very painful for those of us working on machines installed more than a year ago... GCC 10, ouch. I mean, newer versions are great, but when you don't control your machine's OS distribution, installing GCC 10 is not the most trivial thing to do.

You can just use a GCC docker image to build: https://hub.docker.com/_/gcc

No I can't... without an appropriate installation of docker and/or dependencies of docker.

See: https://docs.docker.com/engine/security/rootless/#prerequisi...

You don't control your device OS or otherwise have access to a machine you do, your OS does not offer modern packages, and you don't have the ability to otherwise pull in development toolchain resources.... yet it's supposed to be the projects problem you can't compile something started in 2021 from source on your older setup?

I get your current situation is less than ideal for you but at some point you have to accept the project is not the source of painfulness associated with you trying to compile new apps from source, it's just the trigger.

You have the implicit assumption that I'm working on an individual project. Imagine a large company which settles on an OS for some product that goes into the field for 10 or 20 years. That's the OS you're stuck with. And yes, that's painful in itself.

Now, I _can_, with some effort, pull/build a development toolchain. But it would be much nicer if I could have access to this utility on machines with older toolchains, that's all.

You can install the binary on your device and don't need to compile from source for using the application.

It seems unfair to both developers and other users of the project to expect it to be compatible with older toolchains given the benefits of the newer builds.

This. In the github readme it says static binaries are supplied. Thinking of linux and linux tooling as just something distros supply limit the imagination. Pull down the correct static and you're done. If you still want to compile it, it's easy.

From linux from scratch to muslcc to buildroot to yocto you can get nice new compilers and run them in docker or in a simple chroot. Requiring new compiler versions is a good thing and any disto related impediments are a distraction from just getting simple toolchain tooling going.

> You have the implicit assumption that I'm working on an individual project.

There is no such implication.

That link says "Known to work on Ubuntu 18.04, 20.04, and 21.04", although maybe Ubuntu is just the default selection when the page loads... still, I guess you won't be testing much new software if they don't allow you even using Docker!

If you don't even have the right to install docker on your own machine what makes you think that your sysadmins are ok with you compiling this random software from the internet anyways ?

Maybe download Miniforge and install gcc_linux-64, then you get GCC 11, all without sudo, on (probably) any Linux distro

Wow, this is a very nice fully featured, with mouse support, terminal application! Just installed from the AUR and hopefully will remember it to replace htop in my mind!


Create an htop alias for btop. Then you'll never have to worry about forgetting it.

For me it’s enough iotop + bpytop + htop

The readme for bpytop links to btop++


It says:

> The Linux version of btop++ is complete. Released as version 1.0.0

My impression is that btop++ is the successor to bpytop. Or even if bpytop continues to be maintained that they intend for most people to use btop++ instead going forward.

It's the same person that wrote bpytop. He also wrote bashtop. 3 times implementation of the same thing. That's dedication!

I recommend the C reimplementation of iotop btw, it has lots more features and is more efficient and is maintained. It is packaged as iotop-c in Debian and other distros.


Takes at least gcc-10 to compile, but other than that it was pretty easy to get going.

Looks almost identical to bpytop. Super neat!

Does anyone know where I can find that font?

Wow. That’s hot!

I'm sure you put a lot of work into it and it looks nice. But terminal just sucks for graphics layout.

Applications are open for YC Summer 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact