OMFG, I F%$@^# hate Command Line Interface!!!!

Overmind One

GateFans Gatemaster
Staff member
Im sorry for all the fans of CLI, but I hate it. I am using it about 50% of the time now, more than ever before because I am administering Linux servers for the first time on the enterprise level. I am okay with our CentOS servers because they are basic installs of software or getting information, and all I really need to do is create and configure the servers and not work with them. The developers do that.

My hate is for the Command Line Interface. :icon_mad: Linux purists and old-school geeks like to use it because:

"Oh, it is so much faster than a GUI!"
"The GUI takes up space"
"Real Linux guys use only the CLI"
"X sessions are unsafe"

REALLY???? It is not faster if you dont know every effing command, and even the old school guys don't know them all. I see them looking up strings and pasting them into the CLI. The GUI takes up space? :) If you have 500gb or so on a CentOS machine or a Windows machine, space is not an issue. Real Linux guys use a CLI? Im a real Linux guy who likes the effing GUI better. WTF is a "real Linux guy"? :facepalm:

The reality is that the original "Linux guys" did not even have a choice in the beginning. The closest thing to a GUI was some cleverly designed pages which look like a GUI, made with clever uses of dashes and slashes and colors. Like Yast on Suse. But now, we have KDE, Gnome, Unity, LXDE...there is no need to use a clunky effing CLI. It feels like 1995! Just because it is a "tradition" to use the CLI does not mean that it has to stay that way, and it will not...not if Linux wants to replace Windows Server in the enterprise environment...

which brings me to the reason I posted this...

Microsoft Windows Server 2012 install media now has the Core Server (without GUI) as the first choice on the install media. If you dont watch it, you get the Core install and a freakin command line interface. Windows Server is already sucky. I just did this by accident. :( Imagine it with only a CLI to work with :facepalm:. You can install the GUI later, by inputting these simple commands:

Get-ExecutionPolicy
Set-ExecutionPolicy –ExecutionPolicy Unrestricted
Set-ExecutionPolicy –Force RemoteSigned
Install-WindowsFeature Server-GUI-Mgmt-Infra,Server-GUI-Shell –Restart –Source wim:<path>:<index>
Install-WindowsFeature Server-GUI-Mgmt-Infra,Server-GUI-Shell -Restart –Source wim:D:\sources\install.wim:2

:facepalm::facepalm::smiley_talktothehand::smiley-white-flag::icon_mad::icon_mad::icon_mad:

If you have 45min to an hour to just putz around in the damned CLI, this is only a "bad" problem. But when you have almost 200 servers to manage, it is a major headache. Plus, I am doing this over an iLO (integrated lights out) connection with a trial license so it times out after 30 seconds. :facepalm:

CLI is way WAY overrated! It reminds me of drivers who "prefer" a manual transmission because it gives "a better feel for the road". HUH? I can give you a better feel for the road by dragging you behind the damned car, okay?
 

Bluce Ree

Tech Admin / Council Member
I came from a Windows environment when I started on Linux. So, GUI guy here. It took me no time to learn the Linux CLI and it is, in fact, far more powerful than what the GUI can provide in terms of administration.

What you're going through is frustration brought on by a presumption about command line interfaces to begin with even before having gotten to it.

I'm not a CLI advocate nor a fanboi. It's simply much more flexible and powerful than waddling through a GUI interface, Anything and everything can be automated and scripted in Linux, allowing the kind of unprecedented control over your system through simple interfaces, including a web interface and even remotely control a device via SSH without having to drag a remote desktop across the net. I can configure a full website via CLI over SSH before you even complete logging in locally at the keyboard.

If you're configuring servers remotely via CLI and are using anything other than SSH then you've been sold a bridge. Configuring multiple servers can be easily automated, especially when configurations are merely cloned.

CLI has nothing to do with being a "real Linux guy". Anyone quoting that bullshit needs to move out of their mother's basement and get a life, maybe even get laid.
 

Overmind One

GateFans Gatemaster
Staff member
I came from a Windows environment when I started on Linux. So, GUI guy here. It took me no time to learn the Linux CLI and it is, in fact, far more powerful than what the GUI can provide in terms of administration.

What you're going through is frustration brought on by a presumption about command line interfaces to begin with even before having gotten to it.

I'm not a CLI advocate nor a fanboi. It's simply much more flexible and powerful than waddling through a GUI interface, Anything and everything can be automated and scripted in Linux, allowing the kind of unprecedented control over your system through simple interfaces, including a web interface and even remotely control a device via SSH without having to drag a remote desktop across the net. I can configure a full website via CLI over SSH before you even complete logging in locally at the keyboard.

If you're configuring servers remotely via CLI and are using anything other than SSH then you've been sold a bridge. Configuring multiple servers can be easily automated, especially when configurations are merely cloned.

CLI has nothing to do with being a "real Linux guy". Anyone quoting that bullshit needs to move out of their mother's basement and get a life, maybe even get laid.

Yeah, Im a newbie in it (on this level), so it is kinda a hassle. I have to use it to install libraries and such, when they are not included in the prerequisites (its a Dev environment). I can handle installs, updates, compiling, untarring and the usual shit...but using the tools for me is a freakin hassle. You cannot monitor performance in REAL TIME like you can in a GUI performance manager. I like the visual cues you get in a GUI. For instance, polling free space on hard drives will give you a percentage full and used space and such...but the Performance tab in Linux's System Monitor is way more useful to me. I do like using SSH to do some of this stuff...but not detailed work. I hate the vim editor, I hate the CLI version of Yast, I hate copying and moving and converting files with the CLI.

Ill get used to it. Im only two weeks in! Im whining. :)
 

Overmind One

GateFans Gatemaster
Staff member
BTW, I should mention that ALL of these servers with the exception of the bare metal machines (the problem child I have right now) are being created, cloned, snapped and accessed via ESXi, which means using vmmanager (both the client and the web interface) My frustration comes from having to go into a particular machine to install a custom repo from internal sources, then manually installing dependencies...not a lot of these, but a few so far. I am not alone on the team so that is great. :) But I feel somehow less effective because of the extra time needed to look up CLI command I am unfamiliar with at the moment. :) But it's smoothing out.

The trigger for this post was mistakenly installing the Windows Server 2012 Core install instead of the GUI install, and it is a major headache. Not since Windows NT was Windows so foreign to me. Who the hell can remember the commands in Powershell to enable Remote Desktop and create firewall exceptions? :facepalm:. The client wants the GUI, and so do I. :) Unfortunately, the iLO license I have to work with right now is only a trial and it times out the remote console in 30 seconds before you have to reconnect. :(
 

Bluce Ree

Tech Admin / Council Member
Yeah, Im a newbie in it (on this level), so it is kinda a hassle. I have to use it to install libraries and such, when they are not included in the prerequisites (its a Dev environment). I can handle installs, updates, compiling, untarring and the usual shit...but using the tools for me is a freakin hassle.
You cannot monitor performance in REAL TIME like you can in a GUI performance manager.

Yes, you can. There are several tools, like "top", "iostat", "lsof", "vmstat", "tcpdump" just to name a few. These are called by the GUI tools. If you're staring at a screen to monitor performance then the GUI is fine. However, if you need to diagnose issues remotely, GUI is an impediment.

I like the visual cues you get in a GUI. For instance, polling free space on hard drives will give you a percentage full and used space and such...

root # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 430G 6.0G 424G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 1.9G 4.0K 1.9G 1% /dev
tmpfs 384M 1.4M 383M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.9G 740K 1.9G 1% /run/shm
none 100M 12K 100M 1% /run/user
/dev/sda7 495M 98M 397M 20% /boot


Drive usage and performance:

root # iostat 1
Linux 2.6.32-279.22.1.el6.x86_64 (veriswitch.com) 08/04/2014 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
7.53 0.00 5.21 3.51 0.00 83.75

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sdb 3.93 9.12 142.19 68175614 1062802096
sda 253.79 744.92 19200.44 5567889834 143512895826


iostat will show you disk usage stats. The "1" means update every second. If you use the "watch" command, it will call a particular command and refresh its output according to the interval you set and place the output at the top of the screen.

i.e. watch -n 1 iostat - will call "iostat" every second

but the Performance tab in Linux's System Monitor is way more useful to me. I do like using SSH to do some of this stuff...but not detailed work. I hate the vim editor, I hate the CLI version of Yast, I hate copying and moving and converting files with the CLI.

Ill get used to it. Im only two weeks in! Im whining. :)

YaST?? You guys are using SuSE on the back end?

Why not just write a script with everything you need to do, send it to each server and automate the damned thing? :icon_lol: Create a cron job on each server that checks a particular folder for the presence of a script, run it then delete it. There are better ways to achieve this but this is the simplest.
 

Bluce Ree

Tech Admin / Council Member
BTW, I should mention that ALL of these servers with the exception of the bare metal machines (the problem child I have right now) are being created, cloned, snapped and accessed via ESXi, which means using vmmanager (both the client and the web interface) My frustration comes from having to go into a particular machine to install a custom repo from internal sources, then manually installing dependencies...not a lot of these, but a few so far. I am not alone on the team so that is great. :) But I feel somehow less effective because of the extra time needed to look up CLI command I am unfamiliar with at the moment. :) But it's smoothing out.

The trigger for this post was mistakenly installing the Windows Server 2012 Core install instead of the GUI install, and it is a major headache. Not since Windows NT was Windows so foreign to me. Who the hell can remember the commands in Powershell to enable Remote Desktop and create firewall exceptions? :facepalm:. The client wants the GUI, and so do I. :) Unfortunately, the iLO license I have to work with right now is only a trial and it times out the remote console in 30 seconds before you have to reconnect. :(

Manually installing dependencies?? What version of Linux are you using? Dependency management has been all but perfected in YUM and APT. And why are you using iLO instead of just SSH'ing directly in? You're dragging a GUI for a CLI, which defeats the purpose of a remote CLI.
 

Overmind One

GateFans Gatemaster
Staff member
You cannot monitor performance in REAL TIME like you can in a GUI performance manager.

Yes, you can. There are several tools, like "top", "iostat", "lsof", "vmstat", "tcpdump" just to name a few. These are called by the GUI tools. If you're staring at a screen to monitor performance then the GUI is fine. However, if you need to diagnose issues remotely, GUI is an impediment.



root # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 430G 6.0G 424G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 1.9G 4.0K 1.9G 1% /dev
tmpfs 384M 1.4M 383M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.9G 740K 1.9G 1% /run/shm
none 100M 12K 100M 1% /run/user
/dev/sda7 495M 98M 397M 20% /boot


Drive usage and performance:

root # iostat 1
Linux 2.6.32-279.22.1.el6.x86_64 (veriswitch.com) 08/04/2014 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
7.53 0.00 5.21 3.51 0.00 83.75

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sdb 3.93 9.12 142.19 68175614 1062802096
sda 253.79 744.92 19200.44 5567889834 143512895826


iostat will show you disk usage stats. The "1" means update every second. If you use the "watch" command, it will call a particular command and refresh its output according to the interval you set and place the output at the top of the screen.

i.e. watch -n 1 iostat - will call "iostat" every second



YaST?? You guys are using SuSE on the back end?

Why not just write a script with everything you need to do, send it to each server and automate the damned thing? :icon_lol: Create a cron job on each server that checks a particular folder for the presence of a script, run it then delete it. There are better ways to achieve this but this is the simplest.

We are talking about 200 servers (at the moment). :) Some are older like Suse, others are Fedora, a few real RH machines and some Debian and other rarer flavors. Most are CentOS 6 and 7. The clients determine that. The back end is ESXi or KVM. It's a Dev environment so these machines are being used to create and test applications. When I started two weeks ago, there were 183 of these, including about 12 bare metal machines with Windows Server on them and Hyper-V. Once those servers are created (virtually or bare metal), they are issued to the client or developer and they do the other shit on them. :)

As far as iLO, on a Sandybridge HP SL270s, you cannot ssh into it to access the iLO (maybe you can, but why would anybody want to?). And you have to use that iLO since that particular server does not have video, USB or console (you have to use an SUV cable, that does not come with it). That machine costs almost $15K, and does not freakin come with even a console port!
 

Bluce Ree

Tech Admin / Council Member
We are talking about 200 servers (at the moment). :) Some are older like Suse, others are Fedora, a few real RH machines and some Debian and other rarer flavors. Most are CentOS 6 and 7. The clients determine that. The back end is ESXi or KVM. It's a Dev environment so these machines are being used to create and test applications. When I started two weeks ago, there were 183 of these, including about 12 bare metal machines with Windows Server on them and Hyper-V. Once those servers are created (virtually or bare metal), they are issued to the client or developer and they do the other shit on them. :)

Check out "htop". It's a text mode taskmanager.

You should still be able to automate tasks for groups of servers with the same flavor OS.
 

Overmind One

GateFans Gatemaster
Staff member
Check out "htop". It's a text mode taskmanager.

You should still be able to automate tasks for groups of servers with the same flavor OS.

There are scripted tasks in place. I do not write them. Some update the iso files in the Datastore, others run updates to the custom internal repos, and others rsync stuff elsewhere. I dont run the entire show, I am the guy who creates and manages the Dev machines but detailed stuff is done by the Dev who requested the VM. :)
 

Bluce Ree

Tech Admin / Council Member

Overmind One

GateFans Gatemaster
Staff member

Its efficient and accurate and all, but this is what that looks like:

Top-Command.jpg


I still like this better:

Selection_016.png


Selection_015.png


I am not saying that the CLI is less as efficient or as powerful as a GUI. In fact, I know the CLI is more powerful. :) Im just saying that I hate it. It isnt pleasant to work with, especially repetitively. You have to type a lot more. The "screens" are boring and familiar. :( Thing is, most of the clients feel the same way. :) Nobody is going to develop a consumer or even an enterprise application with a command line interface. It just seems like something of the past to me.

This is DOS:

FreeDOS_Beta_9_pre-release5_(command_line_interface)_on_Bochs_sshot20040912.png


This is the latest Centos7 CLI with no GUI:

image56.png


BORING! :)
 

Bluce Ree

Tech Admin / Council Member
Its efficient and accurate and all, but this is what that looks like:

View attachment 30198

I still like this better:

View attachment 30199

View attachment 30201

I am not saying that the CLI is less as efficient or as powerful as a GUI. In fact, I know the CLI is more powerful. :) Im just saying that I hate it. It isnt pleasant to work with, especially repetitively. You have to type a lot more. The "screens" are boring and familiar. :( Thing is, most of the clients feel the same way. :) Nobody is going to develop a consumer or even an enterprise application with a command line interface. It just seems like something of the past to me.

This is DOS:

View attachment 30202

This is the latest Centos7 CLI with no GUI:

View attachment 30203

BORING! :)

This is htop:

htop-3.jpg


Remember, these tools are more useful for remote management because they are light on the network. The only time someone is physically in front of a server is when something physically needs to be changed or it requires salvaging because the OS has gone to shit and is no longer reachable.

Also, these tools can dump information upon request using scripts that can then use this information to compile summary reports to be emailed periodically or upon triggering some event. Administering a server remotely using a GUI is slow, clunky and inefficient.

The speed at which things can be done on a machine remotely via SSH is not comparable to remotely dragging a GUI across a network. It takes some getting used to but, when you do get the hang of it, it becomes an indispensable tool in your toolbox. You really can't draw a straight comparison between CLI and GUI. They each have their uses but one is far better suited for remote work.
 

Bluce Ree

Tech Admin / Council Member
Some of the CLI tools are quite useful. Nethogs lets you watch bandwidth usage by each process. You can use iotop to watch disk i/o per process to see what's hogging your i/o.
 

Overmind One

GateFans Gatemaster
Staff member
Some of the CLI tools are quite useful. Nethogs lets you watch bandwidth usage by each process. You can use iotop to watch disk i/o per process to see what's hogging your i/o.

Yep, like I said, the CLI is more powerful I realize. I just dont like working with it. Fortunately, I dont really have to about half the time. I am getting the most used commands easily. The monitoring of performance and other resources is handled by the vSphere vmmanager which has a nice GUI. It displays information on several machines, as well as provides a graphical network map which shows cluster structure, load, balancers virtual switches and routers, etc. However, some of these machines are using custom repos written by others, and many of the Dev programs do not call the dependencies (or they are not written in the code yet). I have to go in and add the repo, then install any dependencies that dont get called by the code. That is when I have to use the CLI. I have to use it in Suse when a samba share needs to be created (none of the Suse machines have a GUI). The non-GUI version of Yast is horrible, but that is only because I know what the GUI version looks like.

I would imagine that the Deva use all these tools, as most of them seem to prefer the stupid CLI. :) Im just whining...I know it is better (supposedly).
 

Bluce Ree

Tech Admin / Council Member
Yep, like I said, the CLI is more powerful I realize. I just dont like working with it. Fortunately, I dont really have to about half the time. I am getting the most used commands easily. The monitoring of performance and other resources is handled by the vSphere vmmanager which has a nice GUI. It displays information on several machines, as well as provides a graphical network map which shows cluster structure, load, balancers virtual switches and routers, etc. However, some of these machines are using custom repos written by others, and many of the Dev programs do not call the dependencies (or they are not written in the code yet). I have to go in and add the repo, then install any dependencies that dont get called by the code. That is when I have to use the CLI. I have to use it in Suse when a samba share needs to be created (none of the Suse machines have a GUI). The non-GUI version of Yast is horrible, but that is only because I know what the GUI version looks like.

I would imagine that the Deva use all these tools, as most of them seem to prefer the stupid CLI. :) Im just whining...I know it is better (supposedly).

It isn't "better", it's better suited to certain tasks. When I'm using my Linux laptop, I'll descend to the CLI only for certain things just because they turn out to be faster that way but the GUI tools are just as good for the average user. When I'm managing my server network remotely, though, it's 100% CLI over SSH.

You remember when I would go into Gatefans and beg you for SSH access? I was getting frustrated using that stupid cPanel thing that not only limited how certain things can be done but would also take me 10x longer to do as well. :icon_lol:

For the record, I don't use VIM or any other archaic CLI editor to code. I use VIM only when I need to edit config files remotely. For writing code, I use Kate on my local machine then synchronize the sources with the remote server(s) for compilation.
 
Top