Slashdot Mirror


Basic Required UNIX Skills?

xirlosan writes "I'd like to get a job working in a UNIX environment, be it programming or administrating UNIX machines. My question is this: What skills are absolutly 'must haves' and what other skills are attractive to employers when looking for a job in this field? I have my BS in Computer Science and have a fair amount of experience with Linux and Solaris, so I'm interested in what more I need. I looked for jobs at Monster, and there are so many skills the recommend it's hard to figure out what the most critical are. Any help would be certainly appreciated."

15 of 57 comments (clear)

  1. Have a look at... by .@. · · Score: 3, Informative

    You might want to check out the Unix module to the SAGE certification. The cert was put together by sysadmins, and the junior level test is a good overview of the skills you'd need.

    --
    .@.
    1. Re:Have a look at... by tomhudson · · Score: 3, Interesting
      If you have to ask what skills you'll need, you're at least 3 years behind getting those skills and the necessary experience. So be prepared for a LONG haul. (And 3 years from now, when you're up to "par", the bar will have been moved again).

      Sorry, but that's the way it is.

  2. You need to know everything, not just the OS! by eggstasy · · Score: 5, Informative

    If you want to be a Linux / Unix system administrator, you first have to understand the vagueness of the term. An "administrator" is just someone who "administrates". You can either be behind a bleeding edge distributed system running on a huge server room crammed full of racked blades or you can get an easy job at a small company with 2 or 3 athlons that mostly take care of themselves. Any half-baked MCSE could do that.

    You can have all kinds of sysadmins, really, but being a good one requires a lot more knowledge than just the OS. Of course as a junior admin you'll prolly be handling monkey-work such as backing up stuff to tapes or even CDs and other tedious tasks the real admins dont want to do. You will deal with the lusers whose mail proggy is misconfigured or whose caps lock was left on so that now they can't get in their PC.

    But as you progress in your career, you better get yourself familiarized with all the little /etc files and such things as the SNMP protocol, MIBs, and of course the latest, most buzzword-compliant, administration-facilitating apps...

    You need to understand that you are a handyman. You will be expected to know and do a bit of everything, and to "think outside the box". Even as a Unix admin you will probably need to be skilled in the inner workings of Microsoft software. Most networks are hybrid: The lusers all have MS crapware and Unix will be confined to the servers.

    Solid knowledge of computer networks is a major plus. You need to know how to set up a network, both at the hardware and software level. Bridges, routers, switches, cabling, the works.

    You need to know how to configure routers. Cisco routers are very popular, and books on them are easy to find. Knowledge of routing protocols is a big plus.

    If you're lucky you might even get to play with "legacy" networks that are getting out of mainstream every second. So you better get some training on Novell stuff, and pray that's the worse you'll come across, since there is a whole lot of old stuff out there that should really be in a museum. I'm talking about early IBM hardware running long-forgotten software with manuals that have rotten away ten years ago.

    You probably learned about some of this stuff in college but it wouldnt hurt to take a second look.
    The stuff that you glanced over and thought you would never need to know, in particular. Such as token rings. Everyone has Ethernet right? Wrong.

    Of course you should really focus on what your future employers ask in their ads.
    Certifications are always nice to have. A lot of the stuff you need to know you will NOT learn in any college.

    Really, the subject sums it up. You have to know a bit of everything to be a good sysadmin. I guess the same could be said about a programmer or a doctor or any other person. Knowledge is power!

    1. Re:You need to know everything, not just the OS! by AtariDatacenter · · Score: 3, Interesting

      Absolutely true. The Systems Administrator is the jack of all trades. You are expected to know a little about everything, and what you don't know, you better be willing to look up. As an SA, you get hit from every direction with every problem that is somewhat related to what you do.

      The two big areas that probably help to be knowledgeable in? Programming, and networking.

      What you say about legacy is true, but often it isn't a major issue. I've got FDDI (100mbit fiber running a token-ring protocol) attached to a number of my servers. In the next year or two, it'll be replaced by 100mbit ethernet or gigabit ether.

      Agreed that "knowledge is power". But to go along with that, troubleshooting and the ability to 'figure things out' seems to go a long ways.

      We hired on a guy who wasn't advanced... he learned Linux for himself while he was on a boat that was doing some sort of oil exploration. But it was the willingness to learn and discover new things that caught our eye. Sure enough, he ramped up very quickly and became extremely skilled at systems administration.

      There doesn't seem to be any must-haves, except a lot of positions call for previous experience. That catch-22 thing. I don't think college does a great deal to prepare anyone to be a systems administrator (well, except for the paperwork), but a degree can limit how high you can go in certain companies.

  3. experience in Linux and Solaris? by Circuit+Breaker · · Score: 4, Informative

    You mention a fair amount of experience in Solaris, which is probably the most common "official" (in the trademark sense) Unix out there, and Linux, which is probably the most common "nonofficial" Unix out there. What kind of experience is it? If it's as a workstation user, through KDE, Gnome, CDE etc, then it might come in useful, but don't count it as fair.

    Generally, my experience is that shops hiring Unix people expect them to rival McGyver and connect e.g. the SHINY NEW network management system to the legacy systems THEMSELVES without shelling out money to integrators, using not much more than a few perl scripts and duct tape -- whereas those hiring Windows will more often than not, in my experience, expect their employees to oursource it to someone more qualified (mostly because the duct tape is a COM object with 5000 undocumented methods that no one really knows how to use; Yes, this is from experience).

    Make sure you've mastered all of the standard Unix tools (cron, awk, perl, vi, and friends), Unix-Windows integration stuff (Samba, sun's SMB server whose name eludes me at the moment, OpenLDAP, Cygwin), _basic_ database management (unless you plan to become a DBA, you don't want more than basic but you DO need basic), mail configuration, and _basic_ system administration (unless you are planning to be a sysadmin, in which case basic is not sufficient). Most importantly, the unix philosophy that that everything is a file (or equivalent to it), and that most everything gets done by copying or piping data from one place to the other, possibly transforming it in the process with (ideally) a one-line simple, modular, command.

  4. fscking Microsoft emacs by splattertrousers · · Score: 5, Funny

    You have to be able to react in disgust when someone says they use { vi | emacs } and give a long list of why { emacs | vi } is far superior and anyone who uses { vi | emacs } is an idiot.

    You must cleverly write "fsck" when you mean "fuck".

    You need to be able to roll your eyes when someone says they use a Microsoft or Apple operating system, unless they are talking about a part of the OS that was originally implemented on a Unix OS, in which case you need to be able to smugly slip something into the conversation about how it was first invented in 1902 by RMS or ESR or TMBG.

  5. Since you're just starting out... by trims · · Score: 5, Informative
    I'm going to give you a short summary of the various computer-related professions for someone looking for entry-level work in the UNIX field:
    • Systems Administrator - this is probably what you're thinking of right now. This entails a huge variety of skills, from installing hardware and basic system OS, managing system configurations and upgrades, user management, system troubleshooting, etc. Basically, you're responsible for making sure that the computer systems (usually servers, but sometimes desktops) are up, available, and working properly, and that everyone can access the information on them as appropriate. A little bit of DBA and programmer skills thrown in is a good idea too.
    • Network Administrator is related to SysAdmins, and often shares similar workload and skills. However, the emphasis is on networks - design, troubleshooting, maintaining and configuring network devices (switches, routers, NAT/firewall devices, et al). Typically, both LAN and WAN knowledge is required, and a certificate (or equivalent experience/knowledge) in CCNP is a good idea.
    • Systems Programmer (including Embedded Programmer) these are folks who write systems-level code. That is, drivers, kernel modules, low-level libraries, and in the case of Embedded Programmers, work on devices which aren't quite what most peope think of as a computer (i.e. firewall devices, etc.) Typically, you'll need some very low-level understanding of how software interfaces with hardware, a good bit of hardware knowledge, and primarily C and assembly programming experience. A very good grasp of algorithms is also typically important, as the code produces generally needs to be as efficient and compact as possible.
    • Application Programmer write user-land programs (word processors, order processing/entry systems, inventory tracking systems, etc). This is what people generally think of when they say "programmer". Java and C++ are the dominant languages here. These days, a good understanding of SQL is a good idea too, since most custom apps talk to a DB.
    • Webmaster is more than the stupid morons that have been doing it for the last 3 years. It combines a bit of graphic artist with a modest programming ability (primarily in scripting languages) and a dash of SysAdmin thrown in. In general, a good webmaster has site management tools for deployment and tracking of the website, is concerned with performance and maintainability, and also has a hand in the design and coding of section of the site. Perl, Python, PHP, JavaScript, and Java (for JSP) are good languages to know.
    • Toolsmith is not terribly well known. However, most large organizations need someone like this, which is typically a junior programmer or junior sysadmin detailed to do the work. It involves building common tools for everyone else to use. Typically, this include downloading, compiling, deploying, and maintaining common OSS tools (e.g. keeping a working Perl setup for 6 CPU/OS architectures with all the needed modules). It often also includes work with all the other professions here to find out what they need to do their job, and create it. The person here typically has lots of scripting experience in 4 or 5 script languages, plus decent coding experience in 2 or so "real" lanuages (C, C++, Java, et al), and understands how to write small programs quickly. In essence, the Toolsmith is the person responsible for producing the company's Swiss Army Knife collection of programs.
    • QA / SCM is Quality Assurance (e.g. Testing) and Software Configuration Management. Being a Sr. QA person is a real good way to move into either Toolsmith or Application Programmer, since you gain a whole lot of knowledge about how things work (otherwise, how are you to test it correctly?), and get good at automating test stuff. SCM is often a gateway to SysAdmin, but is different, in that it really is concerned with change management, deployments, and usually builds. Both positions require a good smattering of script language knowledge, some programming experience (enough to read other people's code and tell if it's doing the Right Thing, but not necessarily able to write it from scratch), and a good head for organization.
    • DBA isn't really in this category, but I thought I'd mention it anyway. Most DBAs have a bit of SysAdmin experience on the platform that their DB runs on, but the rest of their knowledge is tied up in the very different field of SQL and Database software.

    I can't give you specifics, because they depend on the field you're looking to enter, and more importantly, the details of the job, which vary widely. I hope the general descriptions above help.

    Contact me directly if you want to talk more.

    -Erik
    Systems Architect

    --
    There are always four sides to every story: your side, their side, the truth, and what really happened.
    1. Re:Since you're just starting out... by mosch · · Score: 5, Insightful
      I'd like to add some more concrete things to the sysadmin skills:
      • be able to use vi. it's the lingua franca, and it'll be on every unix box.
      • be able to use fsck in a manner that's not equivalent to just running fsck -y
      • understand how RAID is implemented on your platforms. for solaris, you should know how to use veritas, and you shouldn't get confused by terms like disks, subdisks, and plexes
      • know how to run extended diagnostics on those sun boxes
      • know how to trace a process and be able to quickly parse the output
      • know enough networking to be able to accurately tell which machine is causing the problem in a multi-machine clusterfuck
      • know how not to kill your boss when he tells you 'yah, that stuff I had you do last week? blow all that work away and do it my way.'
      • know not to be a dick about GPL v BSD or open source versus closed
      • learn to document things. system setups, network setups, you name it, you'll need it at some point.
      • learn how to use a task list. you'll have shitloads of things to do, and if you're like me, you'll forget something if you don't write it down
      • be competent in your use of MS Office. Yes MS is evil, it's also the way people in the business world communicate. Deal with it.
      • Know how to tell if a process is I/O bound, memory bound, or CPU bound.
      • Know where to look for performance tweaks, even if you don't know them by heart
      I'd list more, but I'm already getting quite rambly.
  6. vi by Perdo · · Score: 3, Insightful

    Learn vi.

    It will teach you everything you need to know about why unix is the way it is...

    It will break you of your bad microsoft habits.

    Or it will break any desire you have to learn the rest of unix.

    food for thought:

    unix will never ask you, "are you sure?"

    Unix assumes you never miss a keystroke, that you are perfect and know everything already.

    vi is to ed as pi is to ln

    --

    If voting were effective, it would be illegal by now.

    1. Re:vi by MrResistor · · Score: 3, Insightful

      Agreed.

      I would add, though, that vi is ubiquitous. Emacs is available for every *nix, vi is included with every *nix, and you will encounter situations where, for whatever reason, you won't be allowed to install the apps you would usually use.

      --
      Under capitalism man exploits man. Under communism it's the other way around.
    2. Re:vi by pthisis · · Score: 3, Insightful

      Also, learn ed. You may need it someday. On my system (FreeBSD 4.6), ed is installed as /bin/ed, and vi is installed as /usr/bin/vi

      Definitely.

      Use vi frequently for a while, that vi skill will pay off if you get dropped into ed. Learn enough ed to fix things up and get /usr/bin mounted. And keep a statically linked copy of your favorite small(ish) editor and of sash (and scp/ftp/wget/netcat if you can swing it) on the root partition --libc.so _will_ eventually die on one of your machines, and having sash and vi available for recovery will make you much, much happier.

      Plus, it'll make the local MCSE's head explode if he sees you using it

      Unless he remembers edlin from his DOS days

      Sumner

      --
      rage, rage against the dying of the light
    3. Re:vi by Tim+Macinta · · Score: 3, Funny
      food for thought:
      unix will never ask you, "are you sure?"
      Are you sure about that?
  7. Impossible question by joto · · Score: 3, Interesting

    There is no such thing as a universal skill-set, that will be good enough for any kind of job. You will have to be more specific about what kind of job you want, and work on that skill-set. This is usually simple if you are a nerd, because then you want to work with what you are interested, and refining those skills are you hobby anyway.

    Finally, don't believe some of those job-ads will ever find their ideal candidate. Most of them just lists every three-letter-acronym they've heard about, and expect the ideal candidate to just walk in the door. It will never happen. Use common sense, and decide for yourself whether it would be worth applying for the job you are looking at.

    If you are intelligent, knowledgeable, and a quick learner, you should get a job pretty soon, but the times have made it a lot worse for newly educated to land a good job.

  8. Like my pappy always said. by His+name+cannot+be+s · · Score: 3, Funny

    The Most important skill to have, especially in an IT related field:

    YOU CAN SLIDE FURTHUR ON BULLSHIT, THAN YOU CAN ON CONCRETE

    'nuff said.

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  9. Re:just a few things by MrResistor · · Score: 4, Informative

    That's a great list as long as you only plan to use Debian. Half of the things you list don't apply to the majority of the *nix world. Here is my short-list of apps you will always find:

    ls, cd, cp, mv, mkdir, rm - your basic file system commands. Learn them, love them, they are your lifeblood.

    cat - cat will always be there, usually you will have either more or pg, I wouldn't bet on less or most. If you know how to redirect and use vi you can get by without a paging viewer just fine.

    man - occasionally called something else (QNX calls it use). The ability to derive meaning from man files is extremely important.

    |, > - If you don't know |, you don't know *nix, and > is a close second.

    sh/csh - the vast majority of *nix default to some variant of sh, of which ksh is the most common. If you know sh you can use any of the variants (ksh, bash, etc) and learn the particulars as you go. There are rumors of *nices that default to csh, but I've never encountered one. Regardless, you should be familiar with it just in case.

    vi - emacs is available for every *nix, but vi is included with every *nix. vim is the most popular vi variant because it has lots of nifty features, but don't count on having it. You should be able to navigate vi using only the keys you would find on a standard typewriter.

    find - They say locate is easier, but I've never seen it on a non-Linux system.

    Everything else you list is non-standard or part of something else on my list (except echo, which I don't consider essential). Yeah, you can probably install most of it on any *nix system one way or another, but don't expect it to be there by default.

    --
    Under capitalism man exploits man. Under communism it's the other way around.