Her sistem yöneticisi hangi programcıyı bilmeli?


20

Bu sorudan esinlenerek , tersine soruyorum: sistem yöneticilerinin programlama hakkında ne kadar bilmesi gerekir? Daha spesifik olarak, bir sistem yöneticisinin sahip olması için hangi programlama araçları yararlıdır?


1
Bu bir SO sorusu olmamalı. Zaten orada zaten sorulmuş olduğunu düşünüyorum.
Tim Matthews


2
Evet, ancak bu soruda belirtildiği gibi, SF ve SO üzerinde iki ayrı topluluk var. Programcıların sistem yöneticilerinin bilmesi gereken programcı şeyleri yerine, sistem yöneticilerinin sistem yöneticilerinin bilmesi gereken programcı şeylerini görmek ilginç olacağını düşünüyorum.
Tim

Yanıtlar:


29
  • Sürüm Kontrolü . Yamalar oluşturabilir, okuyabilir ve uygulayabilir. Havuz geniş sürümlerini sunan bir sürüm kontrol sistemini nasıl kullanacağınızı ve neden istediğinizi öğrenin. Açıklayıcı değişiklik günlüklerini nasıl yazacağınızı ve neden istediğinizi öğrenin. Bir deponun günlüklerinde anahtar sözcükleri ve zaman dilimlerini nasıl arayacağınızı öğrenin.
  • Komut dosyası oluşturma . Bir kez bir şeyler yapın ve yola çıkın. İki veya daha fazla kez yapın, bir kez yapın ve bir senaryo yazın.
  • Hata ayıklama . Yığın izlemenin nasıl okunacağını ve ilgili hataların yazılım destek sorumlusunuza nasıl bildirileceğini öğrenin. Hatayı bulmak güzel ve yararlıdır, ancak nasıl düzeltileceğini bilmek kodu okumak için çok fazla yatırım gerektirebilir. Sizin için kolay olan kısmı yapın ve onlar için kolay olan kısmı yapmalarına izin verin.
  • Test ediliyor . Sürekli izleme ve hataları kaydetme. Sürüm kontrolü ve testiyle birlikte kullanıldığında, neyin yanlış gittiğinde neyin yanlış gittiğine dair güçlü bir fikriniz var. Hem üretimi hem de ön üretimi izleyin.
  • Akran Değerlendirmesi . Üretim sistemlerinde değişiklik önerin ve gözden geçirin. Üretim öncesi testi yapın, ne yapılması gerektiğini tam olarak belirleyin ve hangi hizmetlerin ne kadar süreyle etkilenebileceğini kaydedin. Değişim Yönetiminin bürokratik iktidarın siyasi savaşlarına dönüşmesine izin vermeyin.
  • Kriptografi Çalışması . Modern bir sistem yöneticisi ağ kaynaklarından sorumludur; güvenliği son bir adım olarak eklemek imkansız ve çok pahalı bir teklif arasındadır. Genel anahtar şifrelemesini, parola kullanma uygulamalarını ve genel olarak şifrelemeyi anlamak son derece değerli olacaktır.

Ve senaryo yazamıyorsanız (veya iyi senaryo yazamıyorsanız), bir şeyin ne zaman otomatikleştirileceğini anlayabilmek çok önemlidir.
Eter

Saf bir Windows mağazası için hızlı ve kolay bir sürüm kontrol sistemi nedir?
jftuga

SVN? Yani, bu salak için yeterince iyi görünüyor: codinghorror.com/blog/2008/04/…
jldugger

9

Şununla başlıyorum:

  1. Dil ne olursa olsun en temel komut dosyalarından daha fazla nasıl yazılır. Otomasyon sizin dostunuzdur.
  2. Bir hata ayıklayıcı nasıl çalıştırılır / bir tür kilitlenme raporlarının nasıl okunacağını bilir: bir kilitlenme raporu bulmayı ve kimin ne olduğunu çok daha kolay sormasını sağlar.
  3. Sürüm Kontrolü - sadece kod için değil, geçmiş veya değişiklik kontrolünü korumaya değer her şey için.

7

Sistem yönetimi sadece programlama. Yapılandırma yönetim sistemi tüm altyapınızı dağıtılmış bir makine olarak görmenizi sağlar. Bir sistem yöneticisi olarak işiniz bu makineyi programlamaktır.

Bir metin düzenleyiciyi tanıyın. Genellikle sistem yöneticileri için vi, programcılar için emacs.

Senaryo yazmayı bilir. Bir komut dosyası dili seçin. Perl, kabuk / sed / awk combo gibi çok yıllık bir favori. Ruby ve Python çalışabilir, ancak birçok şey için nesneler yanlış paradigmadır.

Okunabilir belgelerin nasıl yazılacağını bilin.

Sürüm kontrolü. Yapılandırma dosyalarının ve denetim yollarının bakımı için çok önemlidir.

Programlama açısından düşünmeyi öğrenir. Prosedürel, nesne yönelimli ve fonksiyonel programlama paradigmalarını kavrar. Bunlar asla kullanılamaz, ancak bunları bilmek sizi sonsuza dek daha üretken yapar.

Bir hata ayıklayıcı (veya daha fazla) ve günlüğe kaydetmeyi öğrenin.

RDBMS kullanmayı öğrenin. RDBMS'yi doğru kullanarak basitleştirilebilecek birçok veri işleme gereksinimi vardır. Talep üzerine bir DBA rolüne geçebilmek bile harikalar yaratabilir.

Dağıtımdan önce test edin. Test odaklı geliştirme felsefesine bakın.

Çift programlama iyidir. Öğrenmek / tavsiye etmek / düzeltmek için bir başkasının omzunuzun üzerinden bakmasını sağlayın.

En azından bir grup dile aşina olmayı öğrenin. Her yıl yeni bir dil öğrenin.


Gerçek dünyada ... Henüz bunlardan herhangi birini yapan bir sistem yöneticisiyle tanışmadım (biraz doktor yazıp test etmek dışında). Belki de yanlış şirketlerde çalıştım!
PowerApp101

1
Sonra gerçeklik versiyonunuz berbat. İşçilerimin her biri vi'yı tercih ediyor (emacs öğrendim ve bu işkenceden iki kez geçmek istemiyorum); destek amaçlı yüzlerce perl betiği ve bir düzine php web sitemiz var. İzleme için Opsview / nagios çalıştırıyoruz, ki bu gerçekten sadece bazı form testleri sürekli çalışıyor - bir değişiklik yaptığınızda anında geri bildirim. Yine de, web siteleri ve komut dosyaları için daha fazla sürüm kontrolü ve daha iyi denetim parkurları almak istiyorum.
jldugger

Siz Unix yöneticisi misiniz? Windows dünyasında, bu şeylerin çoğu henüz sys yöneticilerinin bilincine girmedi. İnan bana, eğer olsaydı çok isterdim.
PowerApp101

20. yüzyıl çocuğu, Windows yöneticilerimizi bu şeyleri öğrenmeye başladık. Henüz orada değiller, ama burada katıldığımdan daha iyi. Şu anda karşı karşıya olduğumuz en büyük sorunlar, yaşadığımız teknik sorunlardan ziyade politik / yönetim sorunudur.
Devdas

Ayrıca ipucu içeren Windows geliştiricileri de var, bu yüzden aslında bu tür çabaları destekliyorlar.
Devdas

5
  • Nasıl programlanacağını bilir. Evet, bu önemli: bir yorumcunun söylediği gibi, bunu bir kereden fazla yaparsanız, bir senaryo yazın - ve iyi yazın.
  • Standart bir işletim sistemi kurulumunda bulunan araçları öğrenin. UNIX yöneticileri için bu, Korn Shell (ksh) ve Perl ve vi gibi araçlar anlamına gelir. Mevcut Emacs veya Ruby veya Tcl veya C kabuğuna güvenmeyin.
  • Ağı tanıyın. Ethernet paketleri nasıl bir araya getirilir? Bir paket neye benziyor? Farklı paket türleri nelerdir? Tcpdump, wireshark, snoop ve diğerleri gibi araçları tanıyın.
  • Taşınabilir kod yazın. Kod Linux - ve Tru64 - ve Solaris - ve OpenVMS altında çalışacaksa, taşınabilir kod yazın. Yalnızca UNIX'in iki sürümü altında çalışsa bile, taşınabilir yapın. Ancak, taşınabilir olması gerekmiyorsa, fazladan zaman harcamayın.
  • Belgelerin nerede olduğunu bilin. Perl için bu, perldoc, Perl Mongers, perl.org vb. Anlamına gelir. Ksh için bu, man sayfası ve en sevdiğiniz Korn kabuk kitaplarını ifade eder.
  • Doküman, doküman, doküman, doküman! Kodunuzu belgeleyin, kılavuz sayfaları oluşturun, satır içi Perl belgeleri oluşturun ve uygun olan her şeyi yapın. Programı nasıl kullanacağınızı ve neden bu şekilde kodladığınızı açıklayın.
  • Sisteminizin paketleme araçlarını öğrenin. Red Hat veya HP-UX depoları veya Solaris paketleri için RPM oluşturmayı öğrenin: bu, sistemleriniz için paketler oluşturmanıza ve böylece bunları yükleme işlemine entegre etmenize olanak tanır.

3

Komut dosyası yazmak çok önemlidir, ancak bazı "gerçek" dilleri bilmenin kesin bir bonus olduğu yönündeki tavsiyeye ikinciydim. Örneğin, .NET System.DirectoryServices ad alanı ile çok faydalı şeyler yapabilirsiniz.


3

Programcı ve kıdemli yönetici / entegratörüm. Yaptığım yerde çalışmak için aşağıdakileri bilmeniz gerekir:

  • Kabuk betikleri nasıl yazılır (POSIX, Bashizm yok), biraz Perl, biraz Python
  • Temel C (Tek UNIX spesifikasyonu)
  • Derleyici takım zinciri nasıl kurulur
  • Kaynaklardan kütüphaneler ve diğer OSS projeleri nasıl oluşturulur?
  • Ne Valgrind ve bellek sızıntılarını noktaya nasıl kullanılacağı
  • .Rpm ve .deb paketleri nasıl alınır
  • Biz olmasak da gerektirir bunu, biraz PHP ve biraz LISP zarar olmaz

Junior yöneticilerin çoğu programcılarımızdan birine bakabilir ve (yetki ile) diyebilir, evet, doğru bir şekilde kurdum, işte burada bir sızıntı var, bu yüzden ittiğiniz kod kırılıyor. Ya da "Hayır, onun değil MySQL bizim versiyonu, burada sorguya bakmak ..."

Bence biraz farklıyız, yetenekli bir yönetici tuttuğumuzda .. onların (çalışmak için ihtiyaç duydukları şekilde çalışmak için kullandığımız bir şeyi hack etse bile, programlama yollarını bulmalarını yarı yarıya bekliyoruz) .

Özetle, iyi yuvarlanmış olmak size asla zarar vermeyecektir .


1

Yıllar önce (aslında Windows NT 3.1) Yazma hizmetleri ve hatta ara sıra aygıt sürücüsü konusunda uzmanlaşmış bir programcı olarak başladım. Bu, Windows çekirdeğini çok iyi tanıdığınız anlamına gelir. Zamanla programlamadan biraz sıkıldım ve ağ yönetimine geçtim. Programlama konusundaki geçmişimin tekrar tekrar immensley değerli olduğunu gördüm.

Sadece VBScript betikleri yazmak nispeten ağrısız değildir. Windows bağırsaklarının nasıl çalıştığını ve özellikle IP'nin nasıl çalıştığını bilmek, garip sunucu ve ağ sorunlarının çözülmesine büyük ölçüde yardımcı olur. Ayrıca bir zihniyet. Programcılar dokümantasyon ve sürüm kontrolü için kullanılır ve kaç Windows yöneticisinin işe yarayıp yaramadığını görmek için bir şey deneyeceğini ve sonrasında karışıklığı çözmekten endişe duymamı korkutuyor.

Hepsi çok iyi, ama git ve on yıl boyunca programcı olarak çalışmak çok yararlı bir tavsiye değil! Ancak çoğu sysadmins C ++ veya C # gibi "zor" bir dilde programlama deneyimi olması için yardımcı olacağını düşünüyorum. Ve kuruluşunuzda uysal programcılarınız varsa onlarla içmeye gidin!

John Rennie


1

Kötü şeyler olur, kodunuz sandığınızdan daha uzun olacaktır. Yararlı hata mesajlarıyla zarif bir şekilde başarısız olun. Disk, ram, cpu, zaman, vb.

O kadar iyimser olmayın, milyonlarca meselede bir kez tuhaf olan, üretimde çok sık olacaktır.


1

Buradaki tüm açıklamalarla, ben bir sistem yöneticisi olduğumu söylemeyeceğim. Ama birkaç windows / linux sunucusu inşa ettiğim ve yönettiğim için, bir şeyi itiraf etmeliyim:

  • Linux'ta bash komut dosyası bilmek bir zorunluluktur - perl / awk / etc ile nasıl entegre edeceğinizi biliyorsanız, daha iyidir. Birçok görevin bunu kullanarak kolaylaştığını gördüm.

  • C / C ++ 'da program yapmayı bilmek çok yardımcı olur. Bazen bir GNU kaynak kodunu (birini kullanıyorsanız) ihtiyaçlarınıza göre değiştirmeniz gerekir, çünkü bir GNU ürünü olmak, ihtiyacınız olan yardımı her zaman zamanında alacağınızdan emin olmaz - ve çoğu zaman C / C ++ ile yazılır.


0
  • Her şey veritabanlarıyla çalışır
  • Programlama - Dil önemli değil, mantığı ve süreci anladığınız sürece öğrenebilir ve herhangi bir dile adapte olabilirsiniz.
  • DOKÜMAN KODU VE DEĞİŞİKLİKLERİ nasıl yapılır - bu çok büyük. Kaç kere heck'in birisinin bunu yaptığını ve onu değiştirirsek neyi etkileyeceğini anlamaya çalışan bir yapılandırmaya bakıp sıkışmışsınızdır. Bu, kodladığınız veya komut dosyası yaptığınız her şeyin ötesine geçer, bu, X kullanıcısı yağmur yağarken bir Salı öğleden sonra Y alanından e-posta aldığında, bir saçak davasını ele almak için güvenlik duvarı ayarlarında değişiklik yaptığınızda bunu kapsar. Ve siz olmayabilirsiniz, devam edip itand yapmaya karar veren PFY olabilir, sonra her şey iğrenç bir şekilde bozuldu çünkü sizi tatilde saat 2'de çağırmak zorunda.
  • Sistem dilleri - Windows'ta bu, komut dosyası dillerinizin oldukça güçlü kaynaklara bağlanmasına ve bir bilgisayarda herhangi bir şey yapmasına izin veren Powershell ve WMI gibi şeylerdir. Unix / Linux üzerinde konuşmaya uygun olmadığım kendi araçları var.

0

Komut dizisi dilinizde LDAP'nize nasıl bağlanacağınızı ve gerekli bilgileri nasıl alacağınızı bilmek, sorun giderme işleminden çeşitli otomasyon türlerini gerçekten artırmaya (hesap ve kaynak sağlama, kullanıcı veya makine hesaplarında daha akıllı denetimler) kadar her şeyin anahtarıdır.

Temel görünebilir ama millet bu tür bir sistem yönetimi için bir ihtiyaç olduğunu düşünmüyorum ekmek-n-tereyağı dükkanlar gördüm. Çok sayıda yer büyük yönetim araçlarına büyük $$$ harcıyor ve anlayabildiğim kadarıyla, araçları kullandıklarının% 95'i, eğer kimse biliyorsa veya nasıl yapılacağını biliyorsa, birkaç saatlik komut dosyasıyla yapılabilirdi yap.


0

Ben bash, dos toplu iş ve powershell komut dosyası bilmek, herhangi bir popüler sistemde, hemen hemen her şeyi yapmak için bir çerçeve ile bir sistem yöneticisi sağlamak buldum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.