Quali cose del programmatore dovrebbe sapere ogni amministratore di sistema?


20

Ispirato da questa domanda , chiedo il contrario: quanto sulla programmazione devono sapere gli amministratori di sistema? Più specificamente, quali strumenti di programmazione sono utili per un amministratore di sistema?


1
Non dovrebbe essere una domanda SO. Penso che sia già stato chiesto lì comunque.
Tim Matthews,


2
Sì, ma come è stato notato su questa domanda, esistono due comunità molto separate su SF e SO. Penso che sarebbe interessante vedere cosa programmatore cose gli amministratori di sistema pensano gli amministratori di sistema dovrebbero sapere, piuttosto che ciò che programmatore cose programmatori pensano gli amministratori di sistema dovrebbero sapere.
Tim

Risposte:


29
  • Controllo versione . Essere in grado di generare, leggere e applicare patch. Sapere come utilizzare un sistema di controllo della versione che presenta versioni ampie del repository e perché lo si desidera. Sapere come scrivere log changelog descrittivi e perché li desideri. Sapere come cercare nei log di un repository parole chiave e intervalli di tempo.
  • Scripting . Fai qualcosa una volta e avviati per la tua strada. Fallo due o più volte, fallo una volta e poi scrivi uno script.
  • Debug . Sapere come leggere una traccia dello stack e come segnalare errori rilevanti al proprio contatto del supporto software. Trovare l'errore è utile e utile, ma sapere come risolverlo può richiedere molti investimenti nella lettura del codice. Fai la parte che è facile per te e lascia che facciano la parte che è facile per loro.
  • Test . Monitorare continuamente e registrare gli errori. Utilizzato insieme al controllo e al test della versione, hai una forte idea di cosa potrebbe essere andato storto quando e cosa è cambiato in quel momento. Monitorare sia la produzione che la pre-produzione.
  • Peer Review . Proporre e rivedere le modifiche ai sistemi di produzione. Test sulla pre-produzione, determinare esattamente cosa deve essere fatto e registrare quali servizi potrebbero essere interessati per quanto tempo. Non lasciare che il Change Management si degrada in battaglie politiche di potere burocratico.
  • Studia la crittografia . Un moderno amministratore di sistema è responsabile delle risorse di rete; l'aggiunta di sicurezza come passaggio finale è un punto tra l'impossibile e una proposta molto costosa. Comprendere la crittografia a chiave pubblica, le pratiche di gestione delle password e la crittografia in generale sarà estremamente prezioso.

E anche se non puoi script (o script bene), essere in grado di riconoscere quando automatizzare qualcosa è molto importante.
Ether

Che cos'è un sistema di controllo versione rapido e semplice per un negozio Windows puro?
jftuga,

SVN? Voglio dire, sembra abbastanza buono per questo idiota: codinghorror.com/blog/2008/04/…
jldugger

9

Vorrei iniziare con:

  1. Come scrivere più degli script più elementari indipendentemente dalla lingua. L'automazione è tua amica.
  2. Come eseguire un debugger / sapere come leggere i rapporti sugli arresti anomali di qualche tipo: consente di capire un rapporto sugli arresti anomali e a chi chiedere cosa sia molto più facile.
  3. Controllo versione - non solo per il codice ma per qualsiasi cosa che valga la pena conservare una cronologia o cambiare il controllo.

7

L'amministrazione del sistema è solo programmazione. Un sistema di gestione della configurazione consente di vedere l'intera infrastruttura come una macchina distribuita. Come amministratore di sistema, il tuo compito è programmare questa macchina.

Conosci un editor di testo. Di solito vi per amministratori di sistema, emacs per programmatori.

Impara a scrivere. Scegli un linguaggio di scripting. Perl è un favorito perenne, così come la combinazione shell / sed / awk. Ruby e Python possono funzionare, ma per molte cose gli oggetti sono il paradigma sbagliato.

Sapere come scrivere documentazione leggibile.

Controllo della versione. Fondamentale per la manutenzione dei file di configurazione e delle piste di controllo.

Impara a pensare in termini di programmazione. Comprendere i paradigmi di programmazione procedurale, orientata agli oggetti e funzionale. Questi non possono mai essere usati, ma conoscerli ti rende infinitamente più produttivo.

Scopri come utilizzare un debugger (o più) e la registrazione.

Impara a usare un RDBMS. Esistono numerosi requisiti di elaborazione dei dati che possono essere semplificati utilizzando correttamente un RDBMS. Anche essere in grado di passare a un ruolo DBA su richiesta può fare meraviglie.

Test prima della distribuzione. Vedi la filosofia di sviluppo guidata dai test.

La programmazione delle coppie è buona. Chiedi a qualcun altro di guardarti alle spalle per imparare / consigliare / correggere.

Impara almeno a familiarizzare con un sacco di lingue. Impara una nuova lingua ogni anno.


Di nuovo nel mondo reale ... Devo ancora incontrare un amministratore di sistema che fa tutto questo (a parte testare e scrivere un po 'di doc). Forse ho lavorato per aziende sbagliate!
PowerApp101,

1
Quindi la tua versione della realtà fa schifo. Ognuno dei miei lavoratori preferisce vi (ho imparato emacs e non ho voglia di correre due volte quella tortura); abbiamo centinaia di script perl e una dozzina di siti Web PHP una tantum a scopo di supporto. Eseguiamo Opsview / nagios per il monitoraggio, che in realtà è solo un test di forma eseguito continuamente - feedback istantaneo quando si commette una modifica. Tuttavia, vorrei ottenere un maggiore controllo della versione per siti Web e script e migliori percorsi di controllo.
jldugger,

Ragazzi siete amministratori Unix? Nel mondo di Windows, molte di queste cose devono ancora penetrare nella coscienza degli amministratori di sistema. Credetemi, mi piacerebbe se lo facesse.
PowerApp101,

Ragazzo del 20 ° secolo, abbiamo spinto i nostri amministratori di Windows a imparare queste cose. Non ci sono ancora, ma qui è meglio di quando mi sono iscritto. I maggiori problemi che stiamo affrontando ora sono quelli politici / gestionali, piuttosto che quelli tecnici che abbiamo avuto.
Devdas,

Oh, e abbiamo anche gli sviluppatori di Windows con un indizio, quindi in realtà supportano tali sforzi.
Devdas,

5
  • Sapere come programmare. Sì, è importante: come ha detto un commentatore, se lo fai più di una volta, scrivi una sceneggiatura e scrivila bene.
  • Conoscere gli strumenti inclusi in un'installazione standard del sistema operativo. Per gli amministratori UNIX, questo significa strumenti come Korn Shell (ksh) e Perl e vi. Non fare affidamento sulla presenza di shell Emacs o Ruby o Tcl o C.
  • Conosci la rete. Come vengono messi insieme i pacchetti Ethernet? Che aspetto ha un pacchetto? Quali sono i diversi tipi di pacchetti? Scopri strumenti come tcpdump, WireShark, snoop e altri.
  • Scrivi un codice portatile. Se il codice verrà eseguito su Linux - e Tru64 - e Solaris - e OpenVMS - quindi scrivere codice portatile. Anche se verrà eseguito solo con due versioni di UNIX: rendilo portatile. Ma poi, se non ha bisogno di essere portatile, non spendere altro tempo su di esso.
  • Sapere dove si trova la documentazione. Per Perl, questo significa perldoc, Perl Mongers, perl.org, ecc. Per ksh, questo significa la pagina man e i tuoi libri preferiti sulla shell Korn.
  • Documento, documento, documento, documento! Documenta il tuo codice, crea pagine man, crea documentazione Perl in linea e quant'altro sia appropriato. Spiega come usare il programma e perché lo hai codificato in quel modo.
  • Conosci gli strumenti di packaging del tuo sistema. Sapere come creare RPM per Red Hat, depot HP-UX o pacchetti Solaris: questo ti permetterà di creare pacchetti per i tuoi sistemi e quindi integrarli nel processo di installazione.

3

Lo scripting è essenziale, ma secondo il consiglio che conoscere alcune lingue "reali" è un vantaggio decisivo. Ad esempio, puoi fare alcune cose molto utili con lo spazio dei nomi .NET System.DirectoryServices.


3

Sono programmatore e amministratore / integratore senior. Per lavorare dove faccio, devi sapere le seguenti cose:

  • Come scrivere script di shell (POSIX, no Bashisms), un po 'di Perl, un po' di Python
  • Base C (specifica UNIX singola)
  • Come installare una catena di strumenti del compilatore
  • Come costruire librerie e altri progetti OSS dalla fonte
  • Che cos'è Valgrind e come utilizzarlo per individuare perdite di memoria
  • Come distribuire i pacchetti .rpm e .deb
  • Anche se non lo richiediamo , un po 'di PHP e un po' di LISP non fanno male

La maggior parte degli amministratori junior può guardare uno dei nostri programmatori e dire (con autorità), sì, l'ho installato correttamente, ecco dove hai una perdita, motivo per cui il codice che hai appena spinto si sta rompendo. Oppure "No, non è la nostra versione di MySQL, guarda la tua query qui ..."

Penso che siamo un po 'diversi, quando assumiamo un amministratore di talento .. ci aspettiamo a metà di che (alla fine) trovino la loro strada per la programmazione, anche se è solo hackerare qualcosa che usiamo per funzionare nel modo in cui ne hanno bisogno per funzionare .

In sintesi, essere ben arrotondati non ti farà mai del male.


1

Molti, molti anni fa (Windows NT 3.1 in effetti) ho iniziato come programmatore specializzato in servizi di scrittura e persino il driver di dispositivo occasionale. Questo significa che conosci molto bene il kernel di Windows. Col tempo mi sono annoiato un po 'con la programmazione e sono passato alla gestione della rete. Ho scoperto che il mio background nella programmazione è stato immensamente prezioso ancora e ancora.

Non è solo che scrivere script VBScript è relativamente indolore. Sapere come funzionano le viscere di Windows, e in particolare come funziona l'IP, aiuta notevolmente a districare i problemi del server e della rete. Inoltre è una mentalità. I programmatori sono abituati alla documentazione e al controllo della versione, e mi fa orrore nel vedere quanti amministratori di Windows proveranno semplicemente a vedere se funziona e si preoccupano di districare il disordine in seguito.

Tutto molto bene, ma non è un consiglio molto utile dire andare via e lavorare come programmatore per dieci anni! Tuttavia, penso che aiuterebbe la maggior parte dei amministratori di sistema ad avere una certa esperienza di programmazione in un linguaggio "difficile" come C ++ o C #. E se hai programmatori addomesticati nella tua organizzazione vai a bere con loro!

John Rennie


1

Accadono cose brutte, il tuo codice sarà più lungo di quanto pensi. Fallire con garbo, con utili messaggi di errore. Sarai a corto di disco, RAM, CPU, tempo, ecc., Ti occuperai di esso.

Non essere così ottimista, che in produzione succederà una cosa strana una volta ogni milione.


1

Con tutte le descrizioni qui, non dirò che sono un amministratore di sistema. Ma il fatto che ho creato e gestito un paio di server Windows / Linux, devo ammettere qualcosa:

  • in linux, lo script bash è un must da sapere - se sai come integrarlo con perl / awk / etc, è meglio. Ho scoperto che molti compiti sono diventati più facili usandolo.

  • Conoscere di programmare in C / C ++ aiuta molto. A volte devi modificare un codice sorgente GNU (se ne usi uno) per soddisfare le tue esigenze perché diventato un prodotto GNU non garantisce che otterrai sempre l'aiuto di cui hai bisogno in tempo - e molte volte sono scritte in C / C ++.


0
  • SQL: tutto funziona con i database
  • Programmazione - La lingua non ha importanza, basta che capisca la logica e il processo che puoi imparare e adattarti a qualsiasi lingua.
  • Come DOCUMENTARE CODICE e MODIFICHE - questo è enorme. Quante volte sei rimasto bloccato guardando una configurazione cercando di capire perché diavolo qualcuno ha fatto questo e che effetto avrà se lo cambiassimo indietro. Questo va oltre tutto ciò che codice o script, questo copre quando si apportano modifiche alle impostazioni del firewall per gestire un caso marginale quando l'utente X riceve e-mail dal dominio Y in un martedì pomeriggio quando piove. E potresti non essere tu, potrebbe essere il PFY che decide di andare avanti e farlo e poi deve chiamarti alle 2 del mattino in vacanza perché tutto si è rotto in modo orribile.
  • Linguaggi di sistema - Su Windows si tratta di cose come Powershell e WMI che consentono ai linguaggi di scripting di collegarsi ad alcune risorse piuttosto potenti e fare qualsiasi cosa su un PC. Unix / Linux ha il proprio set di strumenti su cui non sono qualificato per parlare.

0

Saper legare al tuo LDAP e recuperare le informazioni necessarie nel tuo linguaggio di scripting preferito è la chiave di tutto, dalla risoluzione dei problemi al potenziamento reale di vari tipi di automazione (provisioning di account e risorse, controlli più intelligenti sugli account degli utenti o dei computer).

Può sembrare semplice ma ho visto molti negozi bread-n-butter in cui la gente non pensa di avere bisogno di questo tipo di amministrazione del sistema. Un sacco di posti spendono un sacco di soldi in grosse serie di strumenti amministrativi e, per quanto posso dire, il 95% di ciò per cui usano gli strumenti avrebbe potuto essere fatto con poche ore di scripting se qualcuno lo sapesse o sapesse come fallo.


0

Ho scoperto che la conoscenza degli script bash, dos batch e powershell fornisce a un amministratore di sistema il framework per fare qualsiasi cosa, su qualsiasi sistema popolare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.