Linux Applications You Must Be Familiar With If You Plan on Landing a Linux Job

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 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 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:

Apt-get Man Page

How to use 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:

Bash Man Page

Bash Guide for Beginners

Advanced Bash Scripting

Bash by Example

Bash Tutorial


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:

Chmod Man Page

Linux File Permissions


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:

Crontab Man Page

Understanding Cron Jobs in 5 Minutes

Crontab: Scheduling Tasks


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:

Study of Find

CLI Magic: Searching with Find

10 Useful uses of the find command


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:

Iptables Man Page

Linux Firewalls using iptables

Designing a firewall using Iptables for the home user

Using iptables


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:

MySQL Man Page

Official MySQL Documentation

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 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:

Perl Man Page

Official Perl Documentation

Simple Perl Scripts


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 and files.

How to troubleshoot postfix errors and issues.

Must reads for Postfix:

Postfix Man Page

Official Postfix Documentation

Postfix Wiki

Postfix config How To


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:

Official PHP Documentation

How To Write PHP Scripts


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:

Qmail Man Page

The Qmail Documentation Project

Qmail HowTo

Life With Qmail


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:

RPM Man Page

Official RPM Documentation


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:

rsync Documentation

rsync Tips and Tricks

Using rsync and SSH


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 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:

Samba Man Page

Official Samba Documentation

Samba Setup Guide for Linux


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:

SCP Man Page

SCP Tricks


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:

Sendmail Man Page

Official Sendmail Documentation


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:

Tar Man Page

GNU tar Documentation


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:

Vi/Vim Man Page

Official Vim Documentation

The Vim Commands Cheat Sheet

Vim Graphical Cheat Sheet based Tutorial


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:

Vsftpd.conf Man Page

A vsftpd Guide

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.

Subscribe to the RSS feed!

44 thoughts on “Linux Applications You Must Be Familiar With If You Plan on Landing a Linux Job

  1. Good list, but one of the most important things in linux world is to learn AWK for parsing text.

    Happy LAMPing ….

  2. A linux job? This looks more like the resume of a 2 bit script kiddie web ‘designer’. Surely for a real linux job you would need to know how to compile the kernel, customizing the startup, how to setup parallel processing, how to install something other than mysql (there are other *ahem* better database systems out there). What about knowing a real programming language such as C or Java, one would think that if your applying for a ‘linux job’ its because you know more than php (php does work on other platforms you know).

    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…)

  3. @Bender,

    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. – 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. – 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. – 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!


  4. I only question the part about apt-get. Redhat (which you mention as being common) uses YUM by default.

  5. Yeah, good list. Grep HAS to be on it, though, and with it comes the syntax of regular expressions, of course, which will be useful in many many other situations, too. For networking purposes, tcpdump/wireshark and nmap are also essential, and if you go wireless, consider the aircrack-ng suite.
    Kernel compilation, software compilation in general, or knowledge of a fully-fledged programming language can be helpful, but are not killer skills for administrators.

  6. You should be booted for not including the single most important command every admin should know:


    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 says…reading 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

  7. Good list. Gives something to shoot for. I am a nooblet in the IT field in that I “aspire” yet have not achieved a *nix job as of yet. Nothing wrong with MS (in my book) I just preffer the Unix/Linux type os for my hopeful deeper future in IT.
    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.

  8. I never understand these. I don’t think the world works like this at all. You can’t cherry-pick utility applications out of the air and declare them as the secret sauce in the Linux job market. Employers aren’t really concerned by your understanding of a limited pallet of “standard” applications. They are interested in how you use the utilities you are familiar with to solve problems. Of course there are certain applications that carry favor, but these tend to differ between one employer and the next and according to whatever happens to be in fashion. Everyone who’s worked in more than one environment has learned that things are very different from one place to the next.

    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.

  9. Gosh. 20 years ago we just had vi and grep ( and a smattering of SQL). You kids have it easy with all the helper apps. ;)

  10. I’m afraid I agree with Bender and Paul Dorman. While I think there are somethings that are crucial and every linux user/worker ought to know about, they don’t include things like MySQL and vsftpd (I’ve never used/heard of the last one). They do include things like find, xargs, grep, using pipes, redirection, etc. This is more of a list of some linux tools, some commonly run services/programing languages and some important programs. Not really what I was expecting is all I guess.

  11. Pingback: Security News - Tools - Tutorials and more … » Blog Archive » Warning: Hardy Heron May Cause Linux Addiction

  12. php and perl? what is it 1980? these to languages have seen better days and since they don’t evolve soon enough they will be forgoten :)
    More Python to the word! Python is must, not only for Linux, but for every advance user!

  13. None of these have much to do with Linux, except SAMBA which needs Linux help.
    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.

  14. I’ve read the blog, and agree that grep should have been in the list. Second to grep should be awk.

    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…

  15. I think the article is generally helpful. First, it’s at least a general introduction to the tools we often use (or used to) in working in a Linux environment. It also could function as an “am I there yet?” gut check for someone thinking that they’re pretty Linux savvy; however, there are Linux jobs that require much more and there are Linux jobs that don’t even require all of what’s on this list. I think, though, that if we apply for a job that says “familiarity with Linux a plus” or “Linux required”–that the skills in the article, whether they are native to Linux itself or common to Linux because of its heritage, are a good starting point as a measure. That said, one doesn’t learn how to make a bluebird box by studying the tools found in the toolbox. You learn about the tools by making the box. While you do, you try the different tools finding some to be no help at all while others are quite handy. It’s not the list of tools that matter so much as the experience gained in becoming familiar with them. So I wouldn’t run out and try to learn about each of these tools thinking that’s the way to be a Linux star. Go work on a snazzy site with lots of bells and whistles and host it on a Linux server. Disclaimer: Chain saws are an exception. Read the printed material first.

  16. bender is a prick. I can’t stand people who leave useless, rude comments on blogs. also, the anti-mysql bs has got to stop. what’re you going to use? postgres? postgres is too complicated, and mysql does pretty much everything postgres does, including scaling. any other reasons beside the fact that you are just a snobby prick, bender?

    I agree there should be other tools on this post. Pipes, awk, sed, vi, basic understanding of filesystems, using fdisk(or sfdisk), network booting, backups, man pages, etc are also helpful, but won’t prevent you from getting a ‘linux’ job.

    thanks for the post tho!

  17. In spite of the rather critical comments, I like this list pointing to a general direction. I also like a lot of the insightful comments.

    The whole cheesy Oprah-like “n Things You Have To Do” is very entertaining. Keep it up.

  18. Hah ! Sendmail !

    The only thing you need to know about sendmail is how to UN-install it and install the qmail replacement.

    This is a rather arbitrary list. There is so much that has been left off and plenty in there that you may never use. For instance, you are unlikely to use both RPM and apt-get in the same job.

    You may end up in a web design shop that uses Python, PostGres and Lighttpd. In which case PHP, MySQL and Apache will all be useless.

    However, in learning about all of these examples you will learn the true skills a Linux/Unix Sysadmin needs: critical thinking, bug finding, how to wear both a belt AND braces and a familiarity with both the tools and the layout of a Unix/Linux system.

    I do like the way you have linked the man page and a tutorial for each one however. That makes the list useful, even if it is arbitrary.

  19. Pingback: Articles Collection of Apr’08 « Dako-Tux

  20. Most job postings are placed by HR people who really don’t know know much about computers, let alone Linux. If someone came to me knowing only that stuff they’d be assigned to level 1 help desk.

  21. I think that a better title for this post might be “*NIX Life Skills,” or “Necessary Survival Skills When Confronted by a Eunuch.” This is a great list of introductory skills for anyone aiming to swim, rather than sink, in the world of the command line, and the articles you’ve referenced are all pretty damned good introductions. Additionally, anyone who boned up on the tried-and-trues listed above would easily make it through at least the initial phone screening at my company.

    Any attempts at an exhaustive list are, of course, futile, but the recommendations so far– grep, awk, tcpdump and nmap– are good. I’d also add ps, sed, xargs (oh xargs, you treat me so well, and I treat you so badly), mounting and unmounting most any file system, and the basics of configuring and installing a program from source code. In this day and age, it’s also helpful to know the basics of VMware, VLANning, gdb or truss, clustered computing and storage technologies, and (maybe most importantly) how to leverage Google to figure out all the other junk that you don’t know.

    Because really, the list goes on, and on, and on, and on…

  22. Nice links but..

    The most important skill a *nix admin must have is to be able to learn a tool or software in a very short time.

    Also, you completely forgot hardware skills. Net-Installing a system, lvm or raid a system in different levels. Programming in C and Python (at least the basics) and being able to learn and understand other languages.

    Best regards Yusuf

  23. linux job sounds too much for this.
    if u really must include a linux job, u’ll need a little more advance terms than these.

  24. This is a good start on such a list, but it is not (nor could it ever be) a ‘final’ listing. The ‘deal’ for a Linux admin is to learn quickly, read voraciously, and always, always, always protect the data before trying out anything new.

  25. though i disagree with the approach bender took, i would have to agree that the title of this article is a bit misleading. bender is correct, to land a linux job, you do need to know a good bit more than what you posted.

    and then to follow his comment with a counter showing jobs for sys admin’s? c’mon, thats not linux, thats scripting..

    now if you said linux applications you must be familiar with if you plan on landing a LAMP admin job, i would whole-heartedly agree, but you did specify only linux

    anywho, you have a great list here, and from what i see of most comments, you did forget GREP :P … oops, must of had a momentary brain fart.

    i would also add svn or git or csv to that list, and possibly trac

  26. Its interesting to know that you have to have a varied of learning and experience to land a Linux job. I was wondering back in 2004 that how about taking a class in COMPTIA + certification and pass the test. I took the class and still am learning the administration part of the Linux. You think taking the exam and passing would enable to get a job in linux!. Any thought.

  27. Pingback: Read This Link » Linux Applications You Must Be Familiar With If You Plan on

  28. While this list is not complete, it is a good starting point for someone trying to develop a bit hes/her skills in Unix OS (as someone stated before).
    Something that i would add to the list is aslo Asterisk. I’ve been asked about it in 2 of 3 jobs interviews, even if was not listed in the job description when i applyed.
    Well.. and i enjoy using mutt to read my emails.
    Grep, cat and chown commands may also be usefull.
    I’m an junior linux admin. I don’t pretend to know much (hell.. i still struggle with bash and perl) so.. this list is good to have it as a reminder of the basics i still have to learn.
    Good job mate :)

  29. Wow…I love that posts like this stir the pot so much! I actually have a “Linux Job” I suppose…SysAdmin for a hosting company. Obviously Apache/MySQL/PHP are important. For every day tasks though, the most common commands that I run are grep, crontab, and vi. I use xargs all the time too. Piping other commands through xargs is super helpful!

    That being said, no command can compare to the power of scripting. Writing bash scripts or small programs in C/C++ and then automating those scripts using cron is what makes doing my job possible! Learn to write code…It is far more valuable than any command that is built into a Linux system!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>