Are you new here? Subscribe to my RSS feed. Thanks for visiting!
Landing a Linux job really doesn’t have much to do with your school qualifications or what your resume says. With Linux, it’s all about experience. What you actually know will determine how far you get with a Linux job. Now, I’m not declaring that you must know everything listed in this article, but it’s important to be well versed in all aspects of Linux. Besides, if you plan to make Linux a part of your career, why not learn everything you can? In this document I will present you with Linux applications and what you should know about them at the very least. I then will present you with some outside links for further reading so that you can indulge and become more familiar with each Linux application listed.
If you’re looking to land a Linux job you must be familiar with these Linux applications or daemons.
Apache
Apache is the Apache HyperText Transfer Protocol (HTTP) server program. A large portion of the Internet web sites you visit run Apache on the server the site is hosted on to serve your web pages. If you don’t know apache I suggest you learn the basics. Most Linux jobs will require you to at least dip your feet in some sort of apache administration.
At the Least, You Should Know:
How to install Apache.
How to configure Apache.
How to view Apache logs.
Must reads for Apache:
Official Apache HTTP Server Documentation
apt-get
apt-get is the command-line tool for handling packages, and may be considered the user’s “back-end” to other tools using the APT library. apt-get is used mainly on Debian and Ubuntu but is cross-platform and the actual APT library has many different front-ends built for it. Apt-get is a pretty simple tool to use, so theres not much to learn here, but you should still be familiar with how it works.
At the Least, You Should Know:
How to install a package.
How to remove a package.
Must reads for apt-get:
Bash - GNU Bourne-Again SHell
Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh).
It’s important to know how to program in Bash. There are a million ways to save time and energy if you can whip up a little bash script that automates something on the command line for you.
At the Least, You Should Know:
How to write a basic Bash script.
How to configure Bash to execute jobs during login or logout.
Must reads for Bash:
chmod
chmod changes the permissions of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new permissions.
Chmod is vital to any Linux user. If you don’t understand how to change permissions on files then you really shouldn’t be using Linux.
At the Least, You Should Know:
How to set file and folder permissions with chmod.
Must reads for chmod:
Crontab
crontab is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron. Each user can have their own crontab, and though these are files in /var/spool/cron/crontabs, they are not intended to be edited directly.
Crontab is important to know if you want to execute a sort of “scheduled task” command that cron manages.
At the Least, You Should Know:
How to schedule tasks with crontab.
How to edit each users crontab.
How to allow and disallow users to use crontab.
Crontab format.
Must reads for Crontab:
Understanding Cron Jobs in 5 Minutes
Find
GNU find searches the directory tree rooted at each given file name by evaluating the given expression from left to right, according to the rules of precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and operations, true for or), at which point find moves on to the next file name.
Using find is crucial to saving time and energy on the Linux command line. You’ll find that the more you know about the awesome capabilities of find, the better off you are.
At the Least, You Should Know:
How to find files throughout the whole system.
How to find only directories.
How to find files owned by a certain user.
Must reads for Find:
CLI Magic: Searching with Find
10 Useful uses of the find command
Iptables
Iptables is used to set up, maintain, and inspect the tables of IP packet filter rules in the Linux kernel. Several different tables may be defined. Each table contains a number of built-in chains and may also contain user-defined chains.
With iptables you have the ability to create firewall rules on your Linux computer to allow or restrict access in and out through each network interface.
At the Least, You Should Know:
How to list iptables rules.
How to filter an IP from hitting your interface.
How to remove rules.
Must reads for iptables:
Linux Firewalls using iptables
Designing a firewall using Iptables for the home user
MySQL
mysql is a simple SQL shell (with GNU readline capabilities). It supports interactive and non-interactive use. When used interactively, query results are presented in an ASCII-table format. When used non-interactively (for example, as a filter), the result is presented in tab-separated format. The output format can be changed using command options.
As a Linux user looking to land a Linux job, there is a strong possibility that you will be working in an environment that uses Linux-Apache-MySQL-PHP (LAMP). You should be familiar with administrating a mysql server.
At the Least, You Should Know:
How to install MySQL.
How to configure MySQL.
How to view MySQL error logs.
How To Add and Remove MySQL users.
Must reads for MySQL:
OpenSSH and SSH
Ssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote machine. You’ll probably find yourself using SSH on a daily basis if you land a Linux job.
At the Least, You Should Know:
How to connect to a server with SSH.
How to set up key based authentication for SSH.
Perl
Perl is a language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It’s also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).
You’ll find administration tasks that you can create Perl scripts for will save you a ton of work in the long run if you know Perl.
At the Least, You Should Know:
How to execute a perl script.
How to troubleshoot perl errors.
Must reads for Perl:
Postfix
Postfix is a mail transfer agent (MTA) used on Linux as an alternative to Qmail and Sendmail. It handles the routing and delivery of email. Chances are you’ll run into some sort of postfix work in your Linux career, so why not learn what you can?
At the Least, You Should Know:
How to configure the postfix main.cf and master.cf files.
How to troubleshoot postfix errors and issues.
Must reads for Postfix:
Official Postfix Documentation
PHP
PHP (recursive acronym for “PHP: Hypertext Preprocessor”) is a widely-used Open Source general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. Learning a bit about PHP as well as Apache and MySQL is essential to your Linux career and landing that Linux job.
At the Least, You Should Know:
How to install and configure PHP on Linux.
How to debug and troubleshoot a PHP error.
Must reads for PHP:
Qmail
Qmail is a secure, reliable, efficient, simple message transfer agent. If your Linux job isn’t running Postfix or Sendmail, you’re probably going to need to know Qmail.
At the Least, You Should Know:
How to Install and Configure Qmail.
How to find and interpret the Qmail log files.
How to debug and troubleshoot Qmail errors.
Must reads for Qmail:
The Qmail Documentation Project
RPM
rpm is a powerful Package Manager, which can be used to build, install, query, verify, update, and erase individual software packages. If you’re trying to land a Linux job with a large corporation, theres a good chance they run Red Hat, which uses RPM as it’s default package manager.
At the Least, You Should Know:
How to install RPM packages.
How to remove RPM packages.
How to check for RPM dependencies.
Must reads for RPM:
rsync
rsync uses the rsync remote-update protocol to greatly speed up file transfers when the destination file is being updated. Rsync basically only copies the diffs of files that have been changed.
Rsync is great for backing up files to another Linux host. If you plan on landing a Linux job you’ll definitely need to know rsync.
At the Least, You Should Know:
The syntax of using rsync to copy files to another host machine.
Must reads for rsync:
Samba
The Samba software suite is a collection of programs that implements the Server Message Block (commonly abbreviated as SMB) protocol for UNIX systems. This protocol is sometimes also referred to as the Common Internet File System (CIFS). For a more thorough description, see http://www.ubiqx.org/cifs/. Samba also implements the NetBIOS protocol in nmbd.
Most large companies that run a Linux and Windows environment use Samba to share files across the network. You should be familiar with Samba as much as possible.
At the Least, You Should Know:
How to install and configure Samba.
How to set up Samba users.
How to set up Samba shares.
Must reads for Samba:
SCP
scp copies files between hosts on a network. It uses ssh for data transfer, and uses the same authentication and provides the same security as ssh. scp will ask for passwords or passphrases if they are needed for authentication.
SCP is important to know if you need to copy files between Linux hosts over a public or private network with security in mind.
At the Least, You Should Know:
The syntax for copying a file from one host to another host.
Must reads for SCP:
Sendmail
Sendmail is another Mail Transfer Agent, similar to Qmail and Postfix, that sends a message to one or more recipients, routing the message over whatever networks are necessary. Sendmail does internetwork forwarding as necessary to deliver the message to the correct place. A majoriy of servers run Sendmail as their MTA so it’s important to know.
At the Least, You Should Know:
How to Install Sendmail.
How to configure Sendmail to send and receive Email.
How to view Sendmail logs.
Must reads for Sendmail:
Official Sendmail Documentation
Tar
Tar is an archiving program designed to store and extract files from an archive file known as a tarfile. You most defenitley need to know tar if you plan on landing any Linux job.
At the Least, You Should Know:
How to extract a tarball and tar/gzip file.
How to create a tar file.
Must reads for Tar:
VI/Vim
Vim is a text editor that is upwards compatible to Vi. It can be used to edit all kinds of plain text. It is especially useful for editing programs.
It’s important to know vim because it is the one text editor that is almost always available by default on most Linux distributions. You can’t say the same for the simpler editors like pico and nano. Learn vim!
At the Least, You Should Know:
How to open a file and make a change.
How to save a file.
How to exit vim.
Must reads for Vim:
Vim Graphical Cheat Sheet based Tutorial
vsftpd
vsftpd is the Very Secure File Transfer Protocol Daemon. Most Linux servers that run an FTP daemon use vsftpd.
At the Least, You Should Know:
How to install vsftpd.
How to configure vsftpd.
How to view vsftpd logs and troubleshoot issues.
Must Reads for vsftpd:
I’ve covered all the applications I believe you should be familiar with if you’re trying to land a Linux job. You may not use all of them in an everyday Linux job, but these applications are the most widely used with Linux administration and Linux engineering jobs.
Do you have any other applications you feel should be on this list? Let us know by leaving a comment below.
Popularity: 100% [?]
Sponsors


23 Comments
grep is definitely also a must know. Can’t believe I left that out. I’ll have to update the list. Thanks!
Happy LAMPing ….
I resent that someone stumbled this site and that i came across it. Shame on all the like minded script kiddies that think that this is a useful post. Perhaps your next post can be the applications you *must* be familiar with for a windows job (notepad, filling in the search dialog, using advanced features like clicking the start button…)
While I appreciate your comment on the article, I question if you’ve ever looked on any popular job sites at qualifications and required skills necessary for a Linux job? I have. Let me present you with a few links I randomly found on Monster. Lets take a look at the average skill sets required for a *typical* (ie. administration, networking) Linux job.
http://tinyurl.com/2ajqqc - Here is a Sr. Linux Network Administrator position. Skills required? Linux Network Administration, Nagios, Cacti, SNMP Monitoring, Debian/GNU, 50+ Linux Machine Environments, Scripting Language (PERL/BASH/TCL/etc), Debian Packages, Large-Scale Linux Deployments, People Management.
…I see a few of my examples on this list, yet none of yours.
http://tinyurl.com/2ofhw5 - Here is a Sr. Linux Systems Administrator position. Skills required? Strong scripting/programming skills with experience in Perl, Python, Bash or other scripting languages. PostgreSQL, mysql, Oracle.
.. Again.
http://tinyurl.com/3786bs - Here is a Linux Systems Administrator position. Skills required? Experience with UNIX services (DNS, NFS, Samba, SSH, etc) Web/HTML experience, including Apache preferred. Firewall and router experience a plus.
.. Again.
I never stated that everything on this list is concrete and that you can forget anything *not* listed. As a matter of fact, if you read the opening paragraph, you’ll see I use the words “if you plan to make Linux a part of your career, why not learn everything you can?”.
Further, if you read the closing sentence, I stated “Do you have any other applications you feel should be on this list? Let us know by leaving a comment below.”. I thank you for doing so and letting the other readers know what you feel should be known, but I despise your ignorance in thinking that you need to ignore LAMP and basic programming knowledge like Perl and Bash to land a “real Linux job” as you so eloquently put it.
Thanks for the idea on the Windows post!
Cheers!
That was helpful
Kernel compilation, software compilation in general, or knowledge of a fully-fledged programming language can be helpful, but are not killer skills for administrators.
Regards,
Houser
USA, TX
http://www.ip-monitor.com.ar
man
a couple of real? comments:
awk?? awk??? just go sloppy with cut (seriously you should probably be able to use both)
I found a good general question for entry level linux admins at my old job was:
How would you get an error message flagged with “ERROR” from /var/log on server[01-40].production servers for user “me” with keys pushed?
heck, if you can answer that smoothly without writing it down thats a level two admin most times
bonus points if you can tell me how to separate out the Xth field and sort it by occurrences.
after all you can’t fix the problem without knowing what it is…anything else is pretty much site knowledge anyway.
as for Bender…totally right (if I were an elitist prick who didn’t know what I was talking about. seriously know kernel development/databases/programming??? one might think that they have ohhh database teams, programmers, and systems engineering or development teams at most companies, but obviously not necessary for Benders company, and did he cast a vote for Java, I hate Java, as I am sure does any linux admin *)
oh yeah and Python sucks I don’t care what xkcd.com says…reading xkcd.com is also a requirement of a linux admin
I actually do recommend Perl over Python for the following reasons
Its thread safe
It has better documentation
It is the duct tape of the linux universe
Above all the mighty power of reg ex!!!! (when the python documentation says “now provides perl style regex” that pretty much says it all”)
and last but not least flexibility (my junk 17 liners are just as convenient to create as my production scripts are to document)
*fine it is occasionally useful
I appreciate the info as it at minimum gives me an idea of what to begin to shoot for *not a noob in IT, just the deeper meat and potatoes of administration).
Anyway, my point is: GJ and thnx.
RZ
The best way to get a “Linux” job in my opinion is to use a logical selection of utilities and approaches to actually accomplish something like putting together some kind of Linux server intended for a very specific purpose. Concentrate on those things a business might care about, like economy, scalability, RoI (in terms of hardware and time), quality of design and architecture documentation, etc. No-one cares what you use in general, as long as you can justify your choices and make a convincing case for your design decisions.
You don’t need to do something perfect, but you do need to show how you got from the requirements to the implementation so you can provide a real demonstration of what kind of technical problem-solver you are. Don’t waste your time and effort trying to become competent on someone’s favorite list of utilities. It’s like concentrating on the ‘top ten’ keywords in order to land a programming job.
More Python to the word! Python is must, not only for Linux, but for every advance user!
Linux is the kernel and drivers - a Linux job is working with Linux, surely. You need to know toolchains, bootloaders and root file systems, how libraries work etc… You need to understand hardware.
You are thinking of Un*x OS admin jobs.
From the job description of system support, I believe that for the other mentioed tools, let me say that if that tool is in wide use, then continue with it. And when you are in a shop with mysql, then you need to know how to support mysql operationally.
As to one programming language over the other. When the only tool you have is a hammer, every think looks like an nail. One should acquire several skills, be it python, pearl, etc.
And one should also cultivate friends with some of the skills that you require. A friend with certain skills could provide a solution in minutes, instead of your two day research.
And never stop learning…
Pingback & Trackback
Random Post
Leave Your Comments Below