Im a web programmer that builds and runs websites. I got into programming when I got fed up with dealing with other programmers who took ages to fix or do anything, so I decided to take their job over.

Now I have similar feelings about my linux admin, that sets up my servers, and makes sure they work.

I want to be able to perform basic tasks such as setting up a dns, ftp, web server, mysql server, memcached, as well as several other tools that I require for my sites (ffmpeg, yamdi, some other off the shelf stuff). I want to be able to maintain these servers, do troubleshooting and basically just make sure that they are serving pages. Some general linux background would be good also, since I dont just want to memorize the "Setting up XYZ Tutorial", and not knowing what to do if I encounter something different.

My knowledge of linux is VERY basic. Can navigate between folders, edit mysql/lighttpd settings, setup cron jobs, restart services, and thats basically it.

Can anyone recommend some good (and short!) readings that will get me on the right path?

  • 6
    While I'm glad to see a programmer take interest in the sysadmin side I suspect that your expectations might be unreasonable. From your question you state "...about my linux admin, that sets up my servers, and makes sure they work". I think you're confused (or you've manage to hamstring your admin). Your sysadmin "owns" the system that you happen to be using (presuming that if it breaks he's responsible to fix it) While I applaud your efforts to learn more about being an admin I'd suggest that you have your manger talk to his manager about his performance.
    – Jim B
    Dec 27, 2009 at 21:36
  • Its not as grand as "my manager talk to his manager". Its me leasing servers from different places, some of which happen to be "managed" by Indian people (no offense to them) who read "Linux for Dummies", or getting un-managed, and bringing in somebody else to set everything up for my needs, and just be 'around' when something goes wrong. Trouble is, they might not always be around.
    – user11350
    Dec 27, 2009 at 21:53
  • 3
    So your problem isn't that you want to be a sysadmin, but rather that you want to have a competent sysadmin (team) you can rely on. Very, very different question.
    – womble
    Dec 27, 2009 at 22:35
  • 1
    @yegor it really sounds like what you need to do is get a managed service provider you can count on (and they are out there) and drop the one you have. Note that with some leasing arangements you still don't get to get things done, you get to train the MSP staff on how to do what you need to get done. If you're leasing a managed box you still don't "own" the system in many cases.
    – Jim B
    Dec 28, 2009 at 1:54
  • 1
    Being a SysAd isn't a job; it's a way of life...
    – gWaldo
    Oct 18, 2010 at 16:05

7 Answers 7


Man, there's plenty of material on this website to gather what you need as an incoming Linux admin:

I have mixed feelings about you coming into the field because you've had bad experiences with 'the other techs' not doing their jobs. I sure hope your expectations aren't too overwhelming for the regular tech folk... in any case, understanding system administration is going to help understand the work it takes to get things done. Hopefully it's just that you've had bad luck, and not that your expectations aren't unreasonable.

Good luck.

  • 1
    + 1 for here, let me do that for you...
    – cop1152
    Dec 27, 2009 at 21:41
  • 1
    All I wanted was for him to keep the server stable that performs 10,000 queries per second on a 60GB database, running on a Celeron with 512mb of ram. Nothing unreasonable. But seriously, my requests were not unreasoanble, and I didn't have a "bad experience" per se, I just want to be able to do some things independently, rather than fire off an email, and wait for a simple task to be done.
    – user11350
    Dec 27, 2009 at 22:02
  • 2
    @Yegor, was that first sentence a joke?
    – rodjek
    Dec 27, 2009 at 23:45
  • 1
    Yes it was. hehe.
    – user11350
    Dec 27, 2009 at 23:50
  • 3
    +1 for beginning an answer about learning linux stuff with the word 'man' Aug 21, 2010 at 0:51

From what I gather from your question, you're asking "How to I become a sysadmin?" Honestly Yegor, this is a complex question, complex enough that there still is no "correct" answer. I would argue that it's even more complex than "How do I become a programmer?"

Two conceptual hurdles that you may face coming from a programming background:

  1. Sysadmin are interrupt driven. Most developers that I know like to sit and think about their problems. Sysadmin don't always have this luxury, something will always be an the verge of failing and you're the only line of defense.

  2. There's a huge piece of disaster recovery and fault management of which many developers aren't exposed. Study this diligently.

Now as far as resources go, serverfault is an excellent start.

Books: What is the single most influential book every sysadmin should read?

Websites: Which websites should a system administrator read?

Cheat Sheats for Sysadmin: Cheat Sheets for System Administrators?

As far as DNS, FTP, etc., etc., you'll need to look to your distribution specific documentation to learn how to set them up.

Also, start a text file or log that documents your actions or configuration changes. It sounds like you'll be dual-hatting this for a while, and it's hard for even dedicated sysadmins to remember what they did the week before.

And finally, you fit into a sub group of sysadmins that call themselves "devops" (developer/operator). They even have their own conference http://www.devopsdays.org/ I'm sure if you troll around on their mailing list and website you'll learn a lot from people with the same background.

Good luck to you!


It'll take you years to learn what you need to know to handle this on your own. This is complicated stuff and there's no brief material.

You're better off finding a decent system administrator - and probably work on your own ability communicate your expectations. Another option would be to pay a hosting company to manage your systems for you (with defined SLAs, upgrade windows, specific versions of software, etc).

If you insist on doing everything yourself, just off the top of my head you'll need to read and understand:

  • All the TCP/IP Illustrated books by Stevens, et al.
  • Firewalls and Internet Security by Cheswick et al.
  • DNS and BIND
  • Awk and Sed
  • Autoconf, automake and libtool
  • Whatever the standard reference for your database of choice is
  • Whatever the standard reference for your kernel/OS is

When you've read all that, you should know enough on how to proceed - or you're always welcomed to ask again.


Sysadmin is a full-time job, and a lot of sysadmins work as engineers. Like it has been said by others, I hope you're not underestimating the job and that you really have a bad sysadmin currently.

See, the main program you're having with your sysadmin is not so much about setting up things like you're asking, but managing them. A sysadmin is not merely someone who builds things, but he also has to monitor them efficiently, and be able to react to unexpected situations.

The job of a sysadmin is best learned by experience. There's no quick guide that I know of, and it's longer (from my experience) to learn to be a sysadmin than a PHP/Perl/Python/Ruby programmer.

You've taught yourself to be a web programmer. You yet have to define what you mean by it, since web programmer goes from editing websites in a graphical tool to writing HTML to managing a CMS to coding websites in Python or even C. Just know that sysadmin is a job just as broad as that of a programmer, and most of the sysadmins I know have their own fields of expertise. I know few who can master the whole thing, and the ones I know have 10+ years experience.

In short, if you wish to be a Linux sysadmin, my recommendations would be:

  • Play with Linux
  • Play with the technologies you wish to master
  • Read Q&A on ServerFault and play with them
  • Learn bash, sed, awk at least, Perl, Python and Ruby a plus

Its not as grand as "my manager talk to his manager". Its me leasing servers from different places, some of which happen to be "managed" by Indian people (no offense to them) who read "Linux for Dummies", or getting un-managed, and bringing in somebody else to set everything up for my needs, and just be 'around' when something goes wrong. Trouble is, they might not always be around. –Yegor

@Yegor, ah... that changes things a bit. Sounds like you want to be hosting your own services, and provide your own support. This has it's ups and downs depending on your knowledge level of each technology you'd like to support. It is understandable that you'd ask how to become a 'better admin' quickly. I can tell you quickly though that it takes time (lol), and the best way to learn about how things worked, how things are working, and how they probably 'should' work is by getting your feet wet right away - the more time you put into practical learning, the (relatively) faster time it's going to take for you to be 'comfortable' with the technology.

What you should ask yourself is: "What services (that you'll be hosting) could be seen as potentially easier to troubleshoot in case something bad happens".


As a long time sysadmin, I came across a book last year that I wish I had when I first started out.

LPI Linux Certification in a Nutshell is a concisely written reference book of how to accomplish many common administration tasks. It is more than just a collection of man pages for command line utilities. It is targeted towards people studying to take the LPIC-1 cert, although the material is very rich and the most useful "admin" book I've bought. I now recommend this book to all new linux admins as it is a great place to start.

Being a sysadmin is more than just setting up services. It is encompasses the end to end managing of a services. This requires an operational approach that is often very different to the mindset attached to software development. Service availability and stability are the core of administration. Metrics gathering, log analysis, change control, redundancy, life cycle management and documentation are the means of achieving high availability.

Based on the thread of comments attached to the original question, it appears that you are concerned with your service providers getting in the way of you getting your work done. If this is the case, finding a more reliable service provider that meets your needs and the level of service that you demand might be a more expedient use of your finances. These higher quality providers usually charge a premium for being more reliable but in many cases the business value is worth the extra cost.


I don't think there's really the sort of material that you would want, only general system administration oriented material which will teach you how to deal with pretty much everything a Linux system has to throw at you.

Depending on what type of distribution you are currently using, chances are it's a RedHat variant or a Debian one. Assuming it's one of these, the most popular packages are available via yum on RedHat variants(RHEL, Fedora, CentOS) and aptitude or apt-get on Debian(Ubuntu) ones. This is a very easy way of doing things and you could simply type something like:

yum install mysql mysql-server mysql-server to install those three packages, as well as any requirements that the system needs to run them. This will give you the version available on the repositories you have installed on the machine, which may not be the latest stable version, though you will be able to use something like yum update... to update a specific package.

This may be an easy way of handling certain things that are available in repositories but for some stuff that isn't very popular or in case you find that the memcached version available is 2 versions behind the latest stable release, you'll most likely have to download it and compile it from source, which is a totally different walk in the park as the requirements won't automatically be downloaded for it like it did with yum.

If you have the time to mess around there's always Google or finding a good book based on Amazon ratings, but I'd advise you to hire a better sysadmin instead, as this is different from writing a PHP script that throws up errors, since you could cause some serious damage to you file system by inputting the wrong command.