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."
If you understand how to get around in UNIX, compile new packages, read (not necessarily write) shell script and have a basic understanding of Perl, that's about all you need.
The devil is in the details of course, you should have a basic understanding of TCP/IP, and standard programs such as sendmail, apache, etc.
/* TODO: Spawn child process, interest child in technology, have child write a new sig */
ls, ps, cd, cat, less, vim or emacs or pico, grep, tar, gunzip, chmod, chown, chgrp, ./configure, make, make install, exit
ability to reade readme files and follow them...
-h flag
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.
.@.
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.
/etc files and such things as the SNMP protocol, MIBs, and of course the latest, most buzzword-compliant, administration-facilitating apps...
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
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!
ls
:)
man
cat
pipe "|"
more, less, and most
#!/bin/bash -- to test your ideas
export
echo
vim
lynx (to get to google to search for help)
xchat-text (to pester people in search of help)
and, of course, apt-get
I'd say with those (and fewer if you know something about something) you can figure out how to do just about any job (and then do it)
What comes first, finding a teacher or becoming a student?
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.
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.
Apparently all you need to be a sysAdmin for the DoD is to be a mammal. I'm sitting next to an MCSE that is here as a Unix SysAdmin and he just asked how to set the time and date on his SGI. The bastard was looking for a friggin GUI.
*LOL* I'm going to torture him with vi and emacs now. hee hee... no sorry buddy, no notepad for you!
OMG: He's already got root. Who's the idiot who gave him root already. shyte!
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.
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.
- Good problem solving techniques
- A proclivity for reading documentation and surfing archived email lists in the wee hours
- patience
- perseverance
After you have achieved such, your system administrative abitities will be tripled.Enoch
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.
On a more practical level, learning how to configure and run the following applications, which you can do at home on a small Linux network, will give you a solid grounding in many Unix admin principles & relevant protocols even if you then take a job where some or all of them are irrelevant:
(Note: You will make many mistakes while setting these up. The methods and means by which you debug these errors will be the measure of you as a sysadmin. Research and use the tools you have well. Do not give in to the dark side, Luke... wait, wrong movie.)
Good luck with your well-chosen career.
Ade_
/
Big Bubbles (no troubles) - what sucks, who sucks and you suck
Start growing the beard now!
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..."
Now, I'm confused... e^{j pi) = -1, therefore j pi = ln(-1), therefore jvi = ed(-1), but my man pages don't have a -1 section.
Everything I learned about getting around OSes, I learned here .
In terms of core Unix skills, I'd suggest there are three: vi (the One True Text Editor), Bash (the One True Shell), and Perl (the One True not-just-a-scripting-Language).
After that, the best advice has to be go with what interests you: you'll learn faster and be more productive. If you really enjoy networking, you'll want to find out how to use all the tools around that subject. Same goes for programming, webservers, security, e-mail...whatever floats your boat. It's all good, and you will pick up whatever else you need along the way.
"Well, put a stake in my heart and drag me into sunlight."
Every *nix administrator needs a solid understanding of basic shell commands. Probably the two most important to completely understand are rm and dd because they are the most dangerous.
/
Here's a couple of commands to NEVER issue (unless a complete reinstall is in order):
rm -rf
dd if=/dev/random of=/dev/hda
Using either command willy-nilly without understanding what they are doing is a recipe for disaster.
Give me my freedom, and I'll take care of my own security, thank you.
You need to be able to grok everything in "The Unix Programming Environment" by Kernighan & Pike.
Tats in addition to just about everything else listed here.
1) Brains faster than hands. You don't have to be absolutely fast on thinking, but you must be able to think before doing.
2) Ability to read manuals. Start by man man
Being a proficient *NIX administrator really only requires a desire to learn and a modicum of common sense. *NIX isn't rocket science, although when compiling a new kernel, I sometimes wish I had Robert Goddard's brains...
Don't become a UN*X developer until you've learned how to deal with the environment you'll be working in, be it Linux, Solaris, whatever. There are few things more irritating than a "Senior Developer" who doesn't know how to set his PATH, but expects root access to your machines so he can piddle with his applications.
sh is the one true shell
If you know sh, all else will follow from there my son...
this is in no way a complete list, but here are some basic tools that you should/need-to know... even if it's basic knowledge.
editors:
vi, emacs, and maybe know some ancient editor like 'ed'. pfft.
test manip:
perl, sed, awk - and more the merrier
core unix utilities:
grab UNIX in a nutshell by O'Reilly, you should know pretty much the whole book. typically, i use ls, touch, mkdir, rmdir, rm, echo, su, rlogin, source, grep, finger, who, ping, set
programmers utilities:
top, ldd, dbx, make
regular expressions (skill):
for any unix guru, you need to know your regular expressions. virtually all text tools allow you to use regex. so grab Mastering Regular Expressions by Oreilly
as i mentioned. this is not a complete list. get to know these, and just keep on expanding your knowledge! the good thing about unix is that there's about a 100 ways to do something and you just need to choose what's right for you.
# unzip ; strip ; touch ; finger ; mount ; fsck ; more ; yes ; umount ; sleep
Skiers and Riders -- http://www.snowjournal.com