The role of Linux Administrator is a complex one and the journey can be challenging as well. It’s important to notice that the sysadmin role is also in constant evolution concerning the skills and knowledge needed in the field.
Last year I interviewed several candidates for Linux Administrator role. But some of them were struggling with the basics. Thus, I am listing down 10 useful pointers that are meant to help those who want to build a solid Linux foundation for the emerging cloud technology.
Disclaimer: I’m not saying anything new, just putting my perspective gained through my experience. Some of you may relate to and even benefit from this, while some may have a different opinion.
-
- Rome was not built in a day, Take it module by module
Linux is an ocean. No matter how much you learn, chances are you will still find yourself near the coast. But that shouldn’t turn you off. Linux is very interesting and fun to learn, whether you are a coder, system administrator, cloud engineer or even a sound artist. It is used everywhere and learning it for a good foundation would be really helpful.
Start with basics. Whatever suits you, online lectures, Youtube video/Udemy class, offline classes or even a book (I learnt with a book, link given at the bottom), just do it!
Divide your learning in modules, make a point that you finish each module every week, including its practical. There is no point, just learning Linux theory. (More about this point ahead)
Start with learning basics: installation, taking login (off the server or using a ssh/putty session), file & directory management, navigation between directories, Linux file system hierarchy, user management etc. I would recommend learning Linux LVM and mastering it. Basically it’s the one thing on which your OS is installed, so knowing it thoroughly would go a long way in mastering Linux. - Get a Linux machine for yourself
One of the advantages of Linux is that it’s freely available to download and use. Think about other Unix OSes, they may have subscription dependency or might be running only on specific hardware (think Solaris/Aix). Unlike these, Linux has hundreds of distros freely available to use. While all of them are customized and have been built for specific needs, one can use almost all of them to learn the basics of Linux. Though I would recommend sticking to only one when it comes to learning. For example, Redhat.inc has a market share of 33% in Linux servers, so it makes sense to learn Redhat Linux or Centos, a free version of Redhat.
https://www.redhat.com/en/blog/red-hat-leading-enterprise-linux-server-market
Speaking of myself, I have been using Ubuntu for the last 10 years. I have also installed Virtual box so that I can install and test multiple linux servers and distros.I have done many projects like installing ldap server, dns, cluster servers for self-learning, right on my Ubuntu laptop!
o those who don’t have a laptop with sufficient memory or cpu power they can always go for cloud services like AWS, Azure, Google Cloud, Oracle Cloud etc. There are always free options with limited compute power or a limited period that one can try. - Learn two linux commands every day
What kitchen tools are to a chef, Unix commands are the same for administrators. Knowing commands and also when to use them properly can go a great length in becoming an expert.
But Learning a command means learning everything about it. Unix has beautiful manuals (called: man pages) for almost all the commands. Reading man page is the best way to learn about a command, as it’s not just the command but its syntaxes are also important.
For example, using ‘rm’ command with ‘-rf’ comes really handy as it will quickly delete files and folders. But if used carelessly it can delete your entire OS or valuable client data in seconds.
I always give the following example to understand how important it is to carefully use the command syntaxes:
Will you use a kitchen knife to cut vegetables or a Samurai sword instead? Using the ‘rm’ command with ‘-rf’ syntax is like cutting vegetables with a sword. It’s more damaging than doing any good so use it only when necessary and with utmost caution. - Learn the secrets of trade
Once you get the hang of Linux, the next step would be to become a power user. Small things help in achieving proficiency, speed and confidence. Knowing linux shortcuts for routine jobs helps in achieving speed and agility.
For example, using ‘cd – ‘to navigate to the previous directory, using ‘cd./././’ to go up previous three directories, using ‘ls -l |grep drw’ to list out only directories. You can even save your most used commands as aliases in your profile. For example, I have saved the above command as ‘lsdw’ on my personal laptop. The possibilities are endless and the more you can use such tricks the faster your work gets completed.
How to alias routine linux commands: https://phoenixnap.com/kb/linux-alias-command - Know your ‘grep|awk|cut|sort|find|echo’
When it comes to unix, there will be many times you will need to find some string, or a character from multiple files. There would be data that you will need to find, sort, arrange, and cut in a specific way. So knowing commands like ‘grep,awk,cut,sort,find’ is really necessary. I have seen many people using just the modest commands and then struggling to get the desired result from a query.
For example, grep command is a go to command to find strings from a single or multiple files. Knowing many of its syntaxes would help in retrieving data quickly. Grep command has many features, like printing lines before and after matching string lines. Giving a line count, showing colour for matched string etc.
Similarly, ‘find’ command is very beneficial especially because you can then run operations on the found files or directories, like moving, deleting the files in bulk.
Awk, sort, cut and echo help in formatting output data and printing out to standard output or to a file.
Learning these commands would be a boost to becoming an expert in Linux/Unix.
Linux 101 Hacks: http://langevin.univ-tln.fr/cours/UPS/extra/Linux-101-Hacks.pdf - Learn that Vi editor
With the advent of bash, using a command line interface (CLI) has become very easy. With everyone using the ‘up arrow’ key on the keyboard to return to the previous command, I still tend to use ‘esc, k’ keys for the same. It’s the same for ‘j’ and ‘k’ keys to scroll back up and down for commands on CLI. This would not normally work in your shell unless you have not set the editor. Use ‘set -o vi’ to get the vi editor-like functionality to your shell. I bet people have stopped using this or even not knowing this.
Setting the vi editor for the shell is one thing and actually using it like a power tool is one thing. Refer this link and get efficient in vi editor. In today’s world where maybe ‘nano’ editor is everyone’s favourite, but vi editor still stays on business servers where it’s the default editor.
Vi editor cheat sheets: https://www.atmos.albany.edu/daes/atmclasses/atm350/vi_cheat_sheet.pdf
https://www.thegeekdiary.com/basic-vi-commands-cheat-sheet/ - With great power comes great responsibility!
One of the things I love about Linux is, quoting dialogues from one of my favourite movies.
There are chances you must have seen this message while doing ‘sudo’ to the root user.
Being a unix administrator for most of my life, I know how being a root user feels like. It gives a sense of power but at the same time there is its responsibility. As explained in previous examples, root users can make a system or even break a system as well.
I always ask my team to verify at least twice before running any commands. If there are any operations commands to be run like ‘rm’ etc., make sure to have someone doing a ‘checker’ part. Also it would be best to have a clear understanding of what you are doing. It kind of makes sense to go slow, understand each command that you are running and then do it thoughtfully instead of later going through hours in finding out what went wrong.
Gradually one picks up speed and efficiency is achieved. It then becomes second nature working on a command line. The moment you login to a putty session one should feel like home, that’s what I tell my team. - Learn troubleshooting skills
One of the major skills that a linux/unix administrator should have is troubleshooting. Because you would not just be creating servers or upgrading them but even would work on resolving issues. As the number of servers grows in an organization, so are the problems per server. Although most of the time a linux box should work without any issue, issues do occur.
Troubleshooting skills get developed over time. To a more seasoned administrator troubleshooting an issue would be second nature due to his understanding in tech and experience of years.
However, the basic rules remain the same. Understand the issue, read the error message, see if it can be simulated, ask the right questions, understand the impact etc.
Build your troubleshooting skills and at the same time don’t forget to document issues, so errors can be quickly resolved when a similar issue occurs. I always strive to maintain a KEDB (Known Error Database) within my team so that no one wastes time on researching solutions on already documented issues. - Automate/Learn bash scripting
The Unix command line is a powerful tool. Not only can all of the tasks be done using CLI (Command Line Interface), it can also be automated with its powerful shell i.e. bash.
My advice to all the newbies who want to get most of the linux is to learn bash scripting. For an administrator it’s the best help one can get to automate repetitive tasks. Any job which requires firing the same command more than 10 times, one should write a script to automate the same. This is the rule I follow and encourage my team as well.
For some who find difficulty in writing logic or understanding bash, I would advise persistence is the key. If you are not able to understand scripting once, try to re-learn again and again. Chances are maybe on the 3rd attempt you would finally start seeing sense in that. That’s what exactly happened to me, by the way. 😀
Use little problems as projects to create your own scripts, in my opinion that’s the best way to learn any computer language. Projects like, writing prime numbers, multiplication tables, pingtest to check internet connectivity, the list is endless by which you can learn scripting.
I would recommend using notepad++, sublime, even vi editor to learn scripting. It takes care of syntaxes and all you have to focus on is the logic of your script. - Sharpen the Saw
Now that you have become an expert in Linux, it’s time to sharpen the saw.
Learning unix is a continuous process and never should be stopped. Keep yourself constantly updated and at par by reading tech articles, linux newsletters, attending webinars, be a part of unix communities, teaching what you know, helping others to learn and master, all these things help in re-learning yourselves.
Conclusion
Becoming an expert in linux is not impossible provided enough actions are taken persistently into the right direction.
With cloud and digital’s ingress, it becomes clear that having an in-depth understanding in unix terminology also helps in riding these new tides. Once you have mastered Linux, learning cloud technology becomes easier and thus securing a job in cloud related positions also becomes possible.
Useful Resources/References
RHEL-7 cert guide: https://www.pdfdrive.com/red-hat-rhcsarhce-7-cert-guide-red-hat-enterprise-linux-7-e44621005.html
The Linux command line: https://linuxcommand.org/tlcl.php
How to alias routine linux commands: https://phoenixnap.com/kb/linux-alias-command
Vi editor cheat sheet: https://www.atmos.albany.edu/daes/atmclasses/atm350/vi_cheat_sheet.pdf
Vi editor: https://www.thegeekdiary.com/basic-vi-commands-cheat-sheet/
Linux 101 Hacks: http://langevin.univ-tln.fr/cours/UPS/extra/Linux-101-Hacks.pdf - Rome was not built in a day, Take it module by module