LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (https://www.linuxquestions.org/questions/linux-general-1/)
-   -   Need some advice from Linux SysAdmins: where is the best place to start? (https://www.linuxquestions.org/questions/linux-general-1/need-some-advice-from-linux-sysadmins-where-is-the-best-place-to-start-4175478268/)

slacker_ 09-23-2013 06:40 PM

Need some advice from Linux SysAdmins: where is the best place to start?
 
So I may be getting hired at this company which will offer me more experience with Linux networking and system administrating, as well as large scale virtualization and cloud storage.

I have linux experience with home desktop use but I've not done much in the way of servers or networking. I understand some of the basics, but I have been told I'll be working with services like Untangled, FOG, and FreeNAS. I've never heard of any of these until he mentioned them, and I have very limited linux networking/security experience. I have been reading through wikipedia and the sites for those utils, but it's not enough.

So, my question to you sysadmins:

Where would be the best place to start looking into all of this and getting acquainted enough to understand the conversations I'll be having with the master tech?
Thank you for your input

sag47 09-23-2013 08:09 PM

Before you begin, check out this man2pdf script. Convert the man pages of the utility you want to learn about to PDF and read it on the go.

First you should start with the Linux System Administrator's Guide. It's not all encompassing but it's a start. You should definitely learn a shell scripting language. My recommendation is Bash as it's on most *nix systems (see Bash Beginner's Guide and Advanced Bash Guide). You should print out (or print to PDF) the bash man page as it has a whole bunch of tips and tricks which are completely awesome and not covered in most guides. Reading the coreutils package manual will introduce you to many often used command line utilities.

Many systems you'll be working with will likely be headless (i.e. no graphical environment). That being said you should learn a CLI text editor. I recommend you learning two. The two I recommend is nano (which is more simple and less learning curve) and vim.

Once you've learned a little bit about the Linux system, shell scripting, and cli editing you should start learning a few scripting languages (Python, Ruby, Perl, Awk). Two I highly recommend is Python and Awk. When you're scripting you should make use of option parsing libraries for handling arguments. That includes using getopt for bash scripts. You'll find as you get more experience doing terminal one liners and one off scripts that there is no end all language. Some tools are better for some jobs.

You should familiarize yourself with the standard coreutils tool set. You should get to know network tools such as tcpdump, nmap, telnet, openssl s_client, openssl x509, netstat, and dig. You should learn about iptables firewall (the man page is a great resource) as it is used by RedHat (RHEL 5/6 use iptables and RHEL 7 will use firewalld which is a daemonized wrapper for iptables) and Ubuntu (ufw is a wrapper for iptables). Other useful utilities include vmstat, iostat, dstat (basically a combination of the previous three), ps, top, strace, lspci, dmesg, the list goes on. If you're able to master what I've mentioned then you're well on your way to being a good sysadmin. Take advantage of cron and even inode events for launching scripts. You should learn to be lazy. Preemptive strikes are always better than putting out fires as they ignite.

Bonus:
I have handy little sysadmin scripts and bits in my git repository. Check out the bin directory.

You'll likely encounter source version control at your new job as there are many different kinds (distributed vs centrally managed) and softwares for it (git, mercurial, subversion, CVS, etc.). I highly recommend learning git (distributed source code management) and finding yourself a good workflow (I recommend gitflow or you can mix and match with other types of workflow). Source control can be used for more than just source code. It's useful for checking in system configurations as well.

You should familiarize yourself with real time system monitoring (e.g. Icinga/Nagios, OpenNMS, Zabbix). My recommendation is to learn Icinga. It is better than Nagios in my opinion and knowledge translates directly into Nagios since it is a fork (and Nagios dominates the monitoring market). You might also want to familiarize yourself with system trending (cacti, PNP4Nagios, munin-monitoring). It compliments real time system monitoring well.

Learn more about the logging transports in Linux (syslog, rsyslog, syslog-ng, logstash, splunk). You might also want to check out how logging can be centralized using syslog-ng and syslog/rsyslog as clients. Go a step further by having logstash eat those centralized logs. Logstash is like splunk but without having to sell your family to afford it. Splunk may be better for large setups processing large amounts of log data which need support (such as my corporate environment).

Learn about continuous integration (e.g. Jenkins/Hudson is one example). It can be used for automated deployments through your infrastructure as well. You can even get fancy and set up git hooks which automatically build and/or deploy upon each commit.

Learn about centralized configuration management (salt, puppet, chef).

Familiarize yourself with different types of storage (know most common RAID levels). Be aware of isilon, netapp, and 3par.

Learn about backups, disaster recovery, snapshot vs copy, etc. If you know C then understanding these concepts will be a no brainer.

netnix99 09-23-2013 08:14 PM

I don't know what your time frame is, but keep in mind that Rome wasn't built in a day. In a matter of weeks, you won't be able to keep up with someone who has been doing this for a living for decades.

My advice: Groundwork

Try to learn definitions and uses of the technologies. Even if you had been doing this for years, you would still need to be taught how THESE people handle their networks, users, and security. If you at least understand the definitions of the technologies they are talking about, it will help you piece together the bigger picture.

Brush up on your command line skills and shell scripting. Be able to perform small tasks with little direction. They shouldn't expect you to come in and run the place unless you way OVER-EMBELISHED your resume to some horrible degree... and even then, there would be a learning curve to running their systems THEIR way.

And finally, as with any job, listen and learn! The master tech has a wealth of information to teach you. Learn!! They will be much more willing to teach if you are willing and able to listen and learn.

Good Luck!!

slacker_ 09-23-2013 10:12 PM

Quote:

Originally Posted by sag47 (Post 5033506)
Before you begin ... [insert wall of useful info here]

That is the most useful response I've ever gotten from a "where do I start" question. Thank you so much! I've got a lot of reading and learning ahead of me, but I'm looking forward to it. Thank you once more.

One quick question though, I don't know C but it's on my list of langs to learn. Do you know of a good source for learning C?

Quote:

Originally Posted by netnix99 (Post 5033507)
I don't know what your time frame is, but keep in mind that Rome wasn't built in a day. In a matter of weeks, you won't be able to keep up with someone who has been doing this for a living for decades.

My advice: Groundwork

[Very useful and good advice here]

Good Luck!!

That's really helpful, thank you!

Thing is, I didn't necessarily embellish, however I did generalize just enough to seem like I know a lot. I mean, I do know a good bit, but I feel like I will always need to know more. I dunno, I can always explain/elaborate on my first meeting.

sag47 09-24-2013 08:02 AM

In my opinion the best resource for learning C is from the guys who invented the language. Kernighan and Ritchie wrote The C Programming Language and are also the inventors of C. You can find it in PDF format everywhere. A good book to compliment that is The Practice of Programming by Kernighan and Pike. It covers good coding practices in C which apply to every coding language. There are PDF copies of that floating around as well and it is available at most book stores.

Kernighan & Pike, The Practice of Programming, Addison-Wesley, 1999, ISBN 020161586X

SAbhi 09-24-2013 11:09 AM

One cant learn linux by just reading .... i will suggest if you really want to learn install a distro like centos and while you read things or come across them try it on your system .. see what is the output ..check teh man page of the command you are using and then try different switches , this will give an idea what does what, how and why ? the most important thing to learn is to start doing it, dont really rely on books to guide you and make you something.. make your own way .. thats it ..


Enjoy

slacker_ 09-24-2013 01:27 PM

Quote:

Originally Posted by SAbhi (Post 5033940)
One cant learn linux by just reading .... i will suggest if you really want to learn install a distro like centos and while you read things or come across them try it on your system .. see what is the output ..check teh man page of the command you are using and then try different switches , this will give an idea what does what, how and why ? the most important thing to learn is to start doing it, dont really rely on books to guide you and make you something.. make your own way .. thats it ..


Enjoy


Thanks for your input. I run linux primarily, but never tried any enterprise OS. I think I'll give that a try today.

Quote:

Originally Posted by sag47 (Post 5033786)
In my opinion the best resource for learning C is from the guys who invented the language. Kernighan and Ritchie wrote The C Programming Language and are also the inventors of C. You can find it in PDF format everywhere. A good book to compliment that is The Practice of Programming by Kernighan and Pike. It covers good coding practices in C which apply to every coding language. There are PDF copies of that floating around as well and it is available at most book stores.

Kernighan & Pike, The Practice of Programming, Addison-Wesley, 1999, ISBN 020161586X


Thank you very much for that. I'm going to dive into that over the coming weeks.

sag47 03-13-2015 07:49 AM

I've created an advanced git training video if you want to make use of it for furthering your git education.

slacker_ 03-13-2015 04:08 PM

Thanks! Looks helpful!

onebuck 03-18-2015 12:08 PM

Member response
 
Hi,

Maybe some of the following may be of help;
Quote:

Just a few links to aid you to gaining some understanding;



1 Linux Documentation Project
2 Rute Tutorial & Exposition
3 Linux Command Guide
4 Bash Beginners Guide
5 Bash Reference Manual
6 Advanced Bash-Scripting Guide
7 Linux Newbie Admin Guide
8 LinuxSelfHelp
9 Utimate Linux Newbie Guide
10 Linux Home Networking
11 Virtualization- Top 10

The above links and others can be found at 'Slackware-Links'. More than just SlackwareŽ links!Be sure to look at 'RUTE' tutorial link above. Plus the Tutorials section of SlackwareŽ-Links will be very useful.


Hands on will win out for gaining experience with Gnu/Linux. I use Slackware since it is UNIX-like and provides good ground work for anyone wanting to learn Admin.
Hope this helps.
Have fun & enjoy!
:hattip:

slacker_ 03-19-2015 06:40 PM

Quote:

Originally Posted by onebuck (Post 5334179)
Hi,

Maybe some of the following may be of help;

Thanks very much, this all looks great. One concern, you have suggested looking through rute, but it is from 15 years ago... how is such a thing still as valuable as something from say 1 or 2 years ago, what with the rapid progression of technological change and such?

Now that I'm looking closer, a lot of these things are 6+ years old... Will these really help me with passing, for example, the LPIC certs, or knowing what really goes into a modern linux system?

onebuck 03-19-2015 09:17 PM

Member response
 
Hi,
Quote:

Originally Posted by slacker_ (Post 5334883)
Thanks very much, this all looks great. One concern, you have suggested looking through rute, but it is from 15 years ago... how is such a thing still as valuable as something from say 1 or 2 years ago, what with the rapid progression of technological change and such?

Now that I'm looking closer, a lot of these things are 6+ years old... Will these really help me with passing, for example, the LPIC certs, or knowing what really goes into a modern linux system?

RUTE is still a valuable resource even today. Basics are something everyone should learn. Some may be dated but still relative information that is applicable today. Try it!

sag47 06-14-2015 10:29 AM

It's been a couple years since this thread was initially opened and it seems fairly popular. It would be neat if you could give a progress report. What is really deceiving about my first post in this thread is it took me a couple years to learn it. It wasn't a quick epiphany.

So I ask this, slacker_, how did/does your job go? How much of my post was actually useful for you? What worked and what didn't? It would be really neat if you could give a 2 year touch point. Even if you didn't do any of it; it would still be useful to know. I could follow up with a new post for next steps to learn if you're interested in taking your skills to the next level because I've grown these past two years as well.

sundialsvcs 06-14-2015 08:02 PM

Congratulations on your progress thus-far in the interview process, and we all hope for your success!

As for "where to go from here," you obviously should strive to "do your homework" about the various technologies that have been thus-far described to you, but, "don't bluff(!)" And, "don't feel that you actually have to." No one knows everything. Every new job/engagement is more-or-less "a sip from the firehose," and I guess that's part of the fun of it. :hattip:

What you should, instead, be very, very careful to do ... is to be scrupulously honest: "Here's what I do know right now, and here's what I don't." "Here's where I am coming-from right now, therefore here's what I can sort-of think-I relate to, and here's where my mind is completely blank."

Then, express a genuine interest and willingness to learn.

If you get hired, express humility. Don't remotely-pretend that you know anything that you are not, in fact, absolutely certain of. "Err on the side of 'politely asking, and then carefully listening.'"

E-v-e-r-y-o-n-e that you may encounter ... that you may work with, and that you may work for ... "knows the rules of this game." (Knows them better than you do, at this point.) Therefore, "you are among friends." All of us started where you are. All of us understand, intimately, what it means to be there. (And, from time to time, you betcha, "we're there again, too!") :D

"Welcome to the crazy profession."

slacker_ 08-21-2015 12:24 AM

Quote:

Originally Posted by sag47 (Post 5376993)
It's been a couple years since this thread was initially opened and [...] it would be neat if you could give a progress report. So I ask this, slacker_, how did/does your job go?

Progress report for that job: total dud. The 'mentor' gave little to no support in the way of teaching or mentoring. It was much like being thrown in the deep end without a swim lesson. Told me to configure a couple security/firewall appliances using a platform I had at that point never heard of (Untangle, nice piece of software once I learned it), prepare a cost analysis of deploying them, and research 2 other security based distros for him (pfsense and security onion). All in the first 2 days. I was give zero time to study what Untangle was, or how to use it, and expected to know way more than I did. All in all it was a bad experience.

Quote:

Originally Posted by sag47 (Post 5376993)
How much of my post was actually useful for you? What worked and what didn't? It would be really neat if you could give a 2 year touch point. Even if you didn't do any of it; it would still be useful to know. I could follow up with a new post for next steps to learn if you're interested in taking your skills to the next level because I've grown these past two years as well.

Your post has actually been incredibly useful. I have stuck with learning as often as I can, but I've wound up in many sticky situations along the way which derailed and often set back my learning: losing my job, my car, a family member, and being hit with a couple high bills (since reconciled), losing my home, moving across the country, all along these last 2 years. But I never stopped trying to learn. I've picked up bash and awk fairly well, still not great with them but I can manage. Beefed up my python abilities a bit as well. I haven't had much opportunity to practice with the continuous integration or the real time system monitory utilities you mentioned, but with my recent move across country I've been afforded more time for studying/training, as well as a great market for proper entry level I.T. jobs and internships to really get hands on with things. I'm rather surprised looking back at where I was when I made this post and seeing that I actually have made a good deal of progress in my learning, but I have no illusions of grandeur; I know I still have a very long way to go. I have set up a small home lab (now that I have the stability to do so) with a couple laptops, old desktop, and a switch, so I hope to really get some better experience with things that were before impossible to do on my own at home.

At this point I'm thinking I'm going to be focusing at first primarily on solidifying my basic scripting skills, brushing up on the coreutils tools and network tools you mentioned again, as well as dive into real time system monitoring. Unless you had some better advice or focus at this point?

Thanks again for all the advice sag. It's been really appreciated.


All times are GMT -5. The time now is 04:35 AM.