すべてのシステム管理者が知っておくべきプログラマーのことは何ですか?


20

この質問に触発され、私は逆に尋ねます:システム管理者はプログラミングについてどのくらい知る必要がありますか?具体的には、システム管理者にとって便利なプログラミングツールは何ですか?


1
これはSOの質問ではありません。とにかくそこに既に質問されていると思います。
ティムマシューズ


2
はい。ただし、その質問で指摘したように、SFとSOには2つの非常に別個のコミュニティが存在します。プログラマーがシステム管理者が知っているべきだと思うものよりも、システム管理者がシステム管理者が知っているべきだと思うものを見るのは面白いと思います。
ティム

回答:


29
  • バージョン管理。パッチを生成、読み取り、適用できます。リポジトリ全体のバージョンを表示するバージョン管理システムの使用方法と、それが必要な理由を理解します。記述的な変更ログの書き方と、その理由を知ってください。リポジトリのログでキーワードと時間枠を検索する方法を知ってください。
  • スクリプティング。一度何かをして、あなたの方法にあります。2回以上実行し、1回実行してからスクリプトを作成します。
  • デバッグ。スタックトレースの読み方と、関連するエラーをソフトウェアサポートの連絡先に報告する方法を知ってください。エラーを見つけることは便利で便利ですが、その修正方法を知ることはコードの読み取りに多大な投資を要する可能性があります。あなたにとって簡単な部分を行い、彼らにとって彼らにとって簡単な部分をさせてください。
  • テスト。継続的に監視し、エラーを記録します。バージョン管理とテストと組み合わせて使用​​すると、その時点で何が間違っていたのか、何が変わったのかをしっかりと把握できます。実動と実動前の両方をモニターします。
  • ピアレビュー。本番システムへの変更を提案および確認します。運用前にテストし、実行する必要があるものを正確に判断し、どのサービスがどのくらいの期間影響を受ける可能性があるかを記録します。変更管理を官僚的な権力の政治的戦いに分解させないでください。
  • 研究暗号。最新のシステム管理者がネットワークリソースを担当しています。最終ステップとしてセキュリティを追加することは、不可能と非常に高価な提案の間のどこかにあります。公開鍵暗号法、パスワード処理方法、および暗号化全般を理解することは非常に価値があります。

また、スクリプトを作成できない場合(または適切にスクリプトを作成できる場合)でも、何かを自動化するタイミングを認識できるようにすることは非常に重要です。
エーテル

純粋なWindowsショップ向けの迅速で簡単なバージョン管理システムとは何ですか?
jftuga

SVN?私が意味する、それがこの馬鹿のために十分良いようだ:codinghorror.com/blog/2008/04/...
jldugger

9

私は次のことから始めます:

  1. 言語に関係なく、最も基本的なスクリプトよりも多くを書く方法。オートメーションはあなたの友達です。
  2. デバッガーの実行方法/何らかのクラッシュレポートの読み方を知る:クラッシュレポートを把握し、誰に何を依頼するかが簡単になります。
  3. バージョン管理-コードだけでなく、履歴を保持したり、管理を変更したりする価値のあるもの。

7

システム管理はプログラミングのみです。構成管理システムを使用すると、インフラストラクチャ全体を分散マシンとして見ることができます。システム管理者としての仕事は、このマシンをプログラムすることです。

1つのテキストエディターを知っています。通常、システム管理者のvi、プログラマのemacs。

スクリプトの作成方法を知ってください。スクリプト言語を選択します。Perlは、shell / sed / awkコンボと同様、多年生のお気に入りです。RubyとPythonは動作しますが、多くの場合、オブジェクトは間違ったパラダイムです。

読みやすいドキュメントの書き方を知ってください。

バージョン管理。構成ファイルと監査証跡を維持するために重要です。

プログラミング用語で考えることを学ぶ。手続き型、オブジェクト指向、関数型プログラミングのパラダイムを理解します。これらは決して使用されることはありませんが、それらを知っていると、生産性が無限に高まります。

デバッガー(またはそれ以上)とロギングの使用方法を学びます。

RDBMSの使用方法を学びます。RDBMSを正しく使用することで簡素化できるデータ処理要件がたくさんあります。オンデマンドでDBAロールに切り替えることができたとしても、不思議なことがあります。

展開前にテストします。テスト駆動開発哲学をご覧ください。

ペアプログラミングは良いです。他の人に肩越しに見てもらい、学習/アドバイス/修正してもらいます。

少なくとも、多くの言語について十分な知識があることを学んでください。毎年新しい言語を学びます。


現実の世界に戻って...私はまだこれを行うシステム管理者に会ったことがありません(少しのドキュメントのテストと執筆は別として)。たぶん私は間違った会社で働いたことがあります!
PowerApp101 2009年

1
それからあなたの現実のバージョンは吸う。私の労働者は皆viを好みます(emacsを学んだので、その拷問を2回実行する気はありません)。サポートのために、数百のperlスクリプトと1ダースの1回限りのphp Webサイトがあります。監視のためにOpsview / nagiosを実行しますが、これは実際には継続的に実行されるいくつかの形式のテストであり、変更をコミットするときの瞬時のフィードバックです。それでも、Webサイトとスクリプトのバージョン管理を強化し、監査証跡を改善したいと考えています。
jldugger

あなたはUnixの管理者ですか?Windowsの世界では、それらの多くはまだシステム管理者の意識に浸透していません。私を信じて、もしそうなら私はそれを愛するでしょう。
PowerApp101 2009年

20世紀の少年、私たちはWindows管理者にこのようなことを学ばせました。彼らはまだそこにいませんが、私が参加したときよりもここのほうがいいです。現在直面している大きな問題は、技術的な問題ではなく、政治/管理の問題です。
Devdas

ああ、Windows開発者にも手がかりがあるので、実際にそのような努力を支持しています。
Devdas

5
  • プログラム方法を知ってください。 はい、それは重要です。1人のコメンターが言ったように、2回以上行う場合は、スクリプトを記述し、適切に記述してください。
  • 標準のオペレーティングシステムのインストールに含まれるツールを理解します。 UNIX管理者にとって、これはKorn Shell(ksh)やPerlおよびviなどのツールを意味します。Emacs、Ruby、Tcl、Cシェルが存在することに依存しないでください。
  • ネットワークを知る。イーサネットパケットはどのように組み立てられますか?パケットはどのように見えますか?異なるパケットタイプは何ですか?tcpdump、wireshark、snoopなどのツールを理解してください。
  • ポータブルコードを記述します。 コードをLinux(およびTru64)、Solaris(およびOpenVMS)で実行する場合は、移植可能なコードを作成します。UNIXの2つのバージョンのみで実行される場合でも、移植可能にします。ただし、ポータブルである必要がない場合は、余分な時間を費やさないでください。
  • ドキュメントがどこにあるかを知る。Perlの場合、これはperldoc、Perl Mongers、perl.orgなどを意味します。kshの場合、これはmanページとお気に入りのKornシェルブックを意味します。
  • ドキュメント、ドキュメント、ドキュメント、ドキュメント!コードをドキュメント化し、manページを作成し、インラインPerlドキュメントを作成します。プログラムの使用方法と、そのようにコーディングした理由を説明します。
  • システムのパッケージツールを理解します。Red Hat、HP-UXデポ、またはSolarisパッケージ用のRPMの作成方法を理解します。これにより、システム用のパッケージを構築し、インストールプロセスに統合できます。

3

スクリプティングは不可欠ですが、いくつかの「本物の」言語を知ることは明確なボーナスであるというアドバイスが2番目にあります。たとえば、.NET System.DirectoryServices名前空間を使用すると、非常に便利なことができます。


3

私はプログラマーであり、上級管理者/インテグレーターです。私が働いている場所で仕事をするには、次のことを知る必要があります。

  • シェルスクリプト(POSIX、Bashismなし)、小さなPerl、小さなPythonの書き方
  • Basic C(単一のUNIX仕様)
  • コンパイラツールチェーンのインストール方法
  • ソースからライブラリおよびその他のOSSプロジェクトをビルドする方法
  • Valgrindとは何か、それを使用してメモリリークを見つける方法
  • .rpmおよび.debパッケージをロールする方法
  • 必要ではありません、小さなPHPと小さなLISPで問題はありません

ほとんどのジュニア管理者はプログラマーの1人を見て、(権限付きで)はい、正しくインストールしました。ここにリークがあり、プッシュしたコードが壊れているのはこのためです。または「いいえ、MySQLのバージョンでありません。ここでクエリを見てください...」

才能のある管理者を雇うとき、私たちはちょっと違うと思う..彼らが必要な方法で働くために使用するものをハッキングするだけでも、彼らが(最終的に)プログラミングへの道を見つけることを半分期待している。

要約すると、丸みを帯びていてもあなたを傷つけることはありません。


1

何年も前(実際にはWindows NT 3.1)、私はサービスを書くことに特化したプログラマーとして、時にはデバイスドライバーでさえ始めました。これは、Windowsカーネルを非常によく理解することを意味します。やがて、プログラミングに少し飽きて、ネットワーク管理に切り替えました。私はプログラミングのバックグラウンドが何度も貴重なものであることに気付きました。

VBScriptスクリプトの作成が比較的簡単であるというだけではありません。Windowsの内臓がどのように機能するか、特にIPがどのように機能するかを知ることは、奇妙なサーバーとネットワークの問題を解決するのに大いに役立ちます。また、それは考え方です。プログラマーはドキュメンテーションとバージョン管理に慣れており、それが機能するかどうかを確認するためにWindows管理者が何人か試して、後で混乱を解くのを心配するのを見るのは怖いです。

すべてうまくいきましたが、10年間プログラマーとして仕事を辞めることはあまり有益なアドバイスではありません!ただし、ほとんどのシステム管理者がC ++やC#のような「ハード」言語でプログラミングの経験を積むのに役立つと思います。そして、あなたの組織に馴れたプログラマーがいるなら、彼らと一緒に飲みに行きましょう!

ジョン・レニー


1

悪いことが起こります。あなたのコードは思っているよりも長くなります。有用なエラーメッセージを表示して、正常に失敗します。ディスク、RAM、CPU、時間などが不足し、対処します。

それほど楽観的になってはいけません。100万回に1回の頻度で発生する奇妙な現象が、本番環境で頻繁に発生します。


1

ここにすべての説明がありますが、私はシステム管理者であると言うつもりはありません。しかし、いくつかのWindows / Linuxサーバーを構築および管理しているという事実から、私は何かを認めなければなりません。

  • Linuxでは、bashスクリプトを知っておく必要があります-perl / awk / etcと統合する方法を知っているなら、それはより良い方法です。それを使用することで、多くのタスクが簡単になることがわかりました。

  • C / C ++でプログラミングすることを知っていると、とても役立ちます。GNU製品になったからといって、必要なヘルプが時間通りに常に得られるとは限らないため、GNUソースコード(使用する場合)を変更する必要がある場合があります。多くの場合、C / C ++で書かれています。


0
  • SQL-すべてがデータベースで機能する
  • プログラミング-言語は問題ではありません。ロジックとプロセスを理解している限り、あらゆる言語に習得して適応できます。
  • コードと変更を文書化する方法-これは巨大です。なぜ誰かがこれを行ったのか、それを元に戻すと何が影響するのかを理解しようとして、構成を見続けているのは何回ですか。これは、コーディングやスクリプトを超えて、ユーザーXが雨が降る火曜日の午後にドメインYからのメールを受信した場合にフリンジケースを処理するためにファイアウォール設定を変更する場合を扱います。そして、それはあなたではないかもしれません。すべてを恐ろしい形で壊したので、先に進んでそれを行うことを決めたPFYが休暇中に午前2時に電話をかけなければなりません。
  • システム言語-Windowsでは、PowershellやWMIのようなもので、スクリプト言語を非常に強力なリソースに結び付けて、PC上で何でもできます。Unix / Linuxには、私が話す資格のない独自のツールセットがあります。

0

LDAPにバインドし、選択したスクリプト言語で必要な情報を取得する方法を知ることは、トラブルシューティングからさまざまなタイプの自動化(アカウントとリソースのプロビジョニング、ユーザーアカウントまたはマシンアカウントのよりインテリジェントなチェック)を実際に強化するすべての鍵となります。

基本的なように見えるかもしれませんが、この種のシステム管理が必要だとは思わない、たくさんのパンとバターの店を見てきました。多くの場所では、管理ツールの大きなセットに大きな$$$$を費やしており、私が知る限り、ツールの使用目的の95%は、誰かがそれを知っていたり、方法を知っていれば、数時間のスクリプトで行うことができましたやる


0

私は、bash、dos batch、およびpowershellスクリプトを知っていると、システム管理者が一般的なシステム上でほぼすべてを行うためのフレームワークを提供することがわかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.