Top 10 (+/-) Linux skills for landing a Linux job
Tags: linux, systems
Published: 2021-05-25 14:07:41

# Introduction

Hey now, you have probably went through numerous job-hunting websites and you memorized all the buzzwords (Junior Sysadmin; Junior Site Reliability Engineer; NOC Engineer; System support; etc.) that can get you in IT with zero experience, or even zero education. Well, let me tell you - you are on the right track! However, there are some insights that a lot of you don't know as you haven't got a real Linux job. Well now, except you are on the right track, you are on the post, as well!

I am going to note down & explain the top 10 Linux skills (in the opinion of a person who had a Linux job as a first) that you should have before rushing into the interview.

# TOP 10 (+/-) Linux skills

> Linux skills? But I know a lot of commands already!

It is not up to the commands you know but the ability to imply them at the right time and know when & what to use.

## Reading logs

You should **always** read logs. Consider logging like the conversation you have with your friend just after you had a fight.

> -Hey man, I am not really sure what happened there.

> -Yeah, there was an error in our communication...

> -What do you mean? Could you be a little bit more specific?

> -Well, when you told me to give you reggs from the fridge I was super confused what does reggs mean.

> -Yeah, sorry man, I meant eggs.

Now lets turn this into a 'Linux logging conversation'

Case:

> You type your Nginx server block but you miss-spell 'root' as 'rot'. You type `nginx -t` and the test fails. However, you don't pay much attention to the test and do a `/etc/init.d/nginx reload` to turn your new website visible. Nginx crashes.

1. Oh sh*t, my Nginx crashed. Better check the web server (Nginx) logs.
2. `ssh root@server_ip`
3. `less /var/log/nginx/error.log`
4. `SHIFT+G` (this takes you to the end of the file when using the `less` command)
5. You will see a line with the following context:

> *2021/05/25 12:28:34 [emerg] 28044#28044: unknown directive "rot" in /etc/nginx/sites-enabled/your.website:3*

6. Oh, I typed 'rot' instead of 'root' in my server block. Alrighty, lets fix that!
7. `nano /etc/nginx/sites-available/your.website`
8. Change 'rot' to 'root'
9. `nginx -t` - all is fine
10. `/etc/init.d/nginx reload` - all is fine

This is a simple example of how the logs can help you. You should always check the logs for each application that you are having a problem with.

Here comes the investigation skills that are of high importance.

## Investigation skills

Okay, you know you have to check logs. However, there is something additional you probably didn't consider. When your application crashes, there is a huge possibility it is going to rely on many different technologies. That is why you should have an arsenal of plans when something crashes. What I usually do is the following:

1. Note down the founding error
2. Google the error
3. Check /var/log/syslog
4. Check /var/log/nginx/error.log (if using Nginx)
5. Make a connection between the Google results + syslog + nginx error log
6. Google if nginx/syslog are related to the founding error
7. Choose a resolution from Google & start working on it

In general, the investigation skills you need are the curiosity to explore in detail. Every small error you bump into, GOOGLE IT!

## Understanding the commands

When you are working with Linux, you will work mainly (if not ONLY) with commands through the terminal. Don't let that scare you but don't be having too much trust in yourself as well.

When typing commands, always google when you are not sure. There are many flags to the commands that do a lot of different stuff and some of them can hurt.

## Checking system resources

Linux is just like any other operating system. It has system resources and these resources can impact the performance of our system. Here are some commands that can help you understand what is happening with your server:

* `top` - This command is the task manager of Linux.
* `free -h` - This command is showing how much memory you have and how much of it is being used.
* `df -h` - This command is showing you how much storage you have left throughout your directories.
* `du -sh` - This command is showing you how much memory your files / directories are taking. An example of using this command is `du -sh /var/log/*`

## Check the history

This is a super short tip - always check the history because somebody before you could have already had the same issue you had. Linux history is a history of the commands used by the user you are logged in with. You simply type the `history` command and you will get an output with line numbers:

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qirt5yh5hfrdb5mr54cq.png)

## Understanding basic directory architecture

In Linux, there are some main directories which are driving the operating system to function. If I try to explain them in a better way than somebody with years of experience, I would probably fail to deliver you the quality of content you need. For this sole purpose, I am teleporting you to the realm of [How To Geek - The Linux Directory Structure, Explained](https://www.howtogeek.com/117435/htg-explains-the-linux-directory-structure-explained/)

# Bonus skills

## Scripting skills

It is always great to have more weapons in your arsenal. Scripting skills can be of high importance when you have a recurring task that you could automate. I personally only know how to script in [BASH](https://en.wikipedia.org/wiki/Bash_(Unix_shell)). And it has been enough for me for 2 years already. However, if you want to step-up your game, you could look at:

* [PERL](https://www.perl.org/)
* [GOLANG](https://golang.org/)
* [Python](https://www.python.org/)

## Most-used Linux Stack

A Linux stack is a stack of technologies working together to deliver a solution. The most used Linux stack is the LAMP stack. it consists of:

* [Linux](https://www.linux.org/)
* [Apache](https://httpd.apache.org/)
* [MySQL](https://www.mysql.com/)
* [PHP](https://www.php.net/)

The first letter of each of these technologies brings us the LAMP abbreviation.

## Monitoring

When working with Linux, mostly when you are a systems administrator, you will have a monitoring system in place to keep track of all the systems you are supporting. Some of the most used monitoring software suits are:

* [Nagios](https://newrelic.com/) (my personal favorite as I started with it)
* [Zabbix](https://www.zabbix.com/)
* [New Relic](https://newrelic.com/)

## Know the distribution differences

Linux has many distributions with [Ubuntu](https://ubuntu.com/), [Debian](https://www.debian.org/), [RHEL](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux) being the most popular ones. Each different distribution has different spelling of some commands and has its own way of working. The best way to understand these differences is to install them separately on a VM and poke around.

# Conclusion

In conclusion, the Linux world is a vast and open ocean where you can dive deeper and deeper each day. Every time you find yourself understanding something, there is more information that comes to light. I hope this post lighted up your interest a little & made you consider raising the bar of your Linux skills.

I wish you all the best & happy exploring!

# About the author

I am Dennis, going by ASCIIden online and I am a junior DevOps engineer. However, I don't like the title of 'DevOps' to identify myself with. I rather consider myself a futurist & huge tech enthusiast.

I am doing IT for about 2 years now and I am learning so much I could not express it with words. I am striving to become a helping hand to all juniors in the industry and I am doing my best to provide good and understanding content for you all to enjoy.

If you want to hit me up for a project or just want to say hi, feel free to do it on any of my social media which you can find in my [Twitter profile](https://twitter.com/asciiden)