I understand the usefulness of the terminal and how universal it is for troubleshooting across distros. But can’t there be a way to make a nice graphical tool for the various admin level tasks that need to be performed?
Edit: Thank you to the outpouring of feedback on this. It has greatly opened my eyes to how much I don’t know about. I did see a couple suggestions though, so I’ll be sure to check them out.
I’ve been using Linux since ~1996; I used to wonder about this a lot.
The tl;dr answer is, it’s too much effort only to solve the problem of making life easier for new users, and it can be a disservice to users in the long run.
As others have pointed out, there are limited GUI tools for common administration roles.
Power users are much, much faster at doing things via CLI. Most administrative tasks involve text file management and the UNIX userland is exceptional at processing text files.
A graphical tool would have to deal with evolving system software and APIs, meaning the GUI tool would be on constant outpatient care; this is counter to the UNIX philosophy which is to make software simple and well-defined such that it can be considered “done” and remain versatile and flexible enough to live for decades virtually unchanged.
It wouldn’t be that much easier for things like network rules unless a truly incredible UI was designed, and that would be a risk since the way that’s implemented at the system level is subject to change at any point. It’s hard enough keeping CLI userland tools in sync with the kernel as it is.
It would need to be adaptable to the ways different distributions do things. Administration on CentOS is not always the same as it is on Debian.
And ultimately, the longer a user spends depending on GUI tools, the longer it will take them to learn and become proficient with the CLI, which will always be a far more useful skill to have. You’ll never learn the innards of containers or VPS’ if you only know how to do things from the GUI.
Well put. I do need to learn much of the basic workings of CLI. Any recommendations on how to approach learning?
Another good resource IMO: Linux Journey
A lot of Linux deployments are in situations were a gui would use more resources than the application. There is also decades for knowledge of troubleshooting from the cli would have to replicated for a gui solution to take off. That being said cockpit is getting really good and is ansible for most repos
Combine that with the fact that most experienced admins can work a lot faster in a CLI compared to GUI, and the fact that a CLI allows you to replicate previous actions with no effort.
There aren’t many because there is no request (“market”, if you will) for them.
OpenSUSE has Yast which might be what you are looking for (“might” because, despite using tumbleweed, I never used it and I even actually uninstalled it).
GUI is hard to build right and expensive to build at all. CLI tools is much cheaper to build and can be scripted. Microsoft is rich that’s why they can build GUI, and even then sysadmins have asked for Linux type of CLI tools so they can automate. So generally unlike consumer tools, sysadmin tools focus on utility instead of ease of use.
Building a gui app is building a console app and adding a gui on it (in this specific case). Since the people building the admin tool just want it to work, they stopped when the console app worked.
Also, as someone working with servers a lot, servers don’t have screens. We always always always ssh into them, so graphical tools would be useless to us.
I think its because a lot of this stuff is faster to do through command line. And people developing GUI tools are ones that are already good at CLI so they might not understand why a graphical tool might be needed and then ones that do, start learning CLI to program a tool and on the way might realize it’s just easier to console. Kinda where I’m at. Plus if there are many of the same tool it might vary in GUI and when giving someone instructions it’s easier to just say the command to type than to cover every possible variation of GUI environment. That’s my take on this.
on the way might realize it’s just easier to console. Kinda where I’m at.
Me too. Discovering lots of good tools are CLI, so just getting familiar with that instead.
It mostly comes because a linux system is essentially a collection of much smaller programs that do one simple thing each, and each of those programs has alternatives.
So doing a gui for one program would allow you to control that one and not the others, and if you were using an alternative, you wouldn’t have that gui.
Now trying to make a gui that agglomerates the most common ones has been done for userspace, mostly on specific distros… but when it comes to administering systems… it’s a different story.
services, dns, ntp, boot, wm, lm, firewall, dhcp… all of these have important things to touch, but also have different programs that implement them.
Most authors of these programs don’t bother with gui, mostly because it’s quite some work, but also because it’s not their problem. UNIX philosophy is very much do one single thing and do it well… and when you can do a simple CLI that allows users and PROGRAMS to communicate with your program, why bother with GUI if it only accommodates one part of that equation?
Devs don’t bother with GUI not because they think it’ll be useless, but because it’s a lot of extra work for something that ultimately will be less reliable than CLI…
One reason why linux is so good at doing servers is that no system software needs a GUI to work. Windows server has a headless version, but look how many applications are just unable to run on it as they all rely on GUI…
So in a way, having CLI first and GUI second is a blessing, even if it makes the first approach more difficult for users.
Webmin and Cockpit, my dude
Windows users always come to Linux and complain about what they are missing way before they understand what they have gained.
Window users come here fed up that Windows 11 is still using MMC from the NT4 days, or that there are 5,000 piece of legacy cruft from years and years of different GUI toolkits or that X doesn’t work exactly like Y did in Windows even though they hate Y.
It’s just a natural maturation process.
While this may sound harsh, it is accurate.
Windows users are accustomed to monolith apps that hide complexity. When confronted with a blank command line and hundreds of small tools, they wonder why don’t we have a shinny interface to hide all the cruft.
You need to study the Unix philosophy to understand why things are done differently.
Linux administration often involves a lot of everchanging tools. How many GUIs would be needed?
And how do you represent a echo foo > bar.cfg (or any other such command) in a GUI? Unfortunately it’s not that easy. :(
What kinds of “various” admin level tasks are we talking about here?
A lot of desktop distros do have these kinds of tools in place. You can create and edit users and groups, set file permissions, create folders and files, download and update packages on your system, view disk usage, etc, etc. Shoot, specialized distros like gparted can be used to partition disks, or live boot a system to repair it.
But for a lot of things, building a GUI for the interface just takes so dang long to do, and takes so much more time and effort to get right than building out text commands, that it just really doesn’t make sense to make it as big of a focus.
OpenSuse has yast, but whenever I try to use it, I feel like I could have done it faster from the terminal.
This… everytime I tried to use yast I just stopped using it (and OpenSUSE) because it’s just frustrating, even if it works.
Webmin is a web-based server management control panel for Unix-like systems. Webmin allows the user to configure operating system internals, such as users, disk quotas, services and configuration files, as well as modify and control open-source apps, such as BIND, Apache HTTP Server, PHP, and MySQL. https://en.wikipedia.org/wiki/Webmin
Wow, I had completely forgotten about this package!