web-dev-qa-db-ja.com

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

この質問 に触発されて、私は逆の質問をします。システム管理者はプログラミングについてどれだけ知る必要がありますか?より具体的には、システム管理者が持つのに役立つプログラミングツールは何ですか。

20
Tim
  • バージョン管理。パッチを生成、読み取り、適用できる。リポジトリ全体のバージョンを表示するバージョン管理システムの使用方法と、なぜ必要なのかを理解してください。説明的な変更ログの書き方と、なぜそれが必要なのかを理解してください。リポジトリのログでキーワードと時間枠を検索する方法を知っています。
  • スクリプト。一度何かをして、あなたの道に行きます。 2回以上実行し、1回実行してからスクリプトを記述します。
  • デバッグ。スタックトレースを読み取る方法と、ソフトウェアサポートの連絡先に関連するエラーを報告する方法を理解します。エラーを見つけることは素晴らしくて便利ですが、どのように修正するかを知っていると、コードを読むのに多大な投資が必要になります。自分にとって簡単な部分を実行し、簡単な部分を彼らに任せましょう。
  • テスト。継続的に監視し、エラーをログに記録します。バージョン管理やテストと組み合わせて使用​​すると、何がいつ問題を起こしたのか、そのときに何が変わったのかについての強い考えがあります。運用と運用前の両方を監視します。
  • ピアレビュー。本番システムへの変更を提案して確認します。運用前にテストし、何を実行する必要があるかを正確に決定し、どのサービスがどのくらい影響を受けるかを記録します。チェンジマネジメントを官僚的権力の政治的戦いに陥らせないでください。
  • Study Cryptography。最新のシステム管理者がネットワークリソースを担当しています。最終ステップとしてセキュリティを追加することは、不可能と非常に高額な提案の間のどこかです。公開鍵暗号、パスワード処理の実践、および暗号化全般を理解することは非常に貴重です。
29
jldugger

私はまず始めます:

  1. 言語に関係なく、最も基本的なスクリプト以外の記述方法。自動化はあなたの友達です。
  2. デバッガーを実行する方法/何らかのクラッシュレポートの読み方を理解する:クラッシュレポートを理解し、誰が何を求めているかを簡単に確認できます。
  3. バージョン管理-コードだけでなく、履歴や変更管理を維持する価値のあるもののために。
9
Chealion

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

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

スクリプトを作成する方法を知っています。スクリプト言語を選択します。 Perlは、Shell/sed/awkコンボと同じように、根強い人気があります。 RubyおよびPythonは機能しますが、多くの場合、オブジェクトは間違ったパラダイムです。

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

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

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

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

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

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

ペアプログラミングは良いです。他の人にあなたの肩越しに見てもらい、学び、助言、訂正してもらいます。

少なくとも一連の言語に精通していることを学びます。毎年新しい言語を学びましょう。

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

スクリプティングは不可欠ですが、いくつかの「実際の」言語を知ることは間違いなくおまけです。たとえば、.NET System.DirectoryServices名前空間を使用すると、非常に便利なことができます。

3
Maximus Minimus

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

  • シェルスクリプト(POSIX、非Bashisms)、小さなPerl、小さなPythonの書き方
  • 基本C(単一UNIX仕様)
  • コンパイラツールチェーンのインストール方法
  • ソースからライブラリやその他のOSSプロジェクトを構築する方法
  • Valgrind とは何か、それを使用してメモリリークを特定する方法
  • .rpmおよび.debパッケージをロールする方法
  • 私たちはそれを要求しませんが、少しPHPと少しのLISPは傷つけません

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

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

要約すると、よく丸められていると決して傷つけることはありません。

3
Tim Post

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

100万回に1回の奇妙な問題が本番環境で頻繁に発生するほど楽観的ではありません。

1
Ronald Pottol

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

  • linuxでは、bashスクリプトは知っておく必要があります。Perl/ awk/etcと統合する方法を知っている場合は、その方が適しています。それを使うことで多くの作業が楽になることがわかりました。

  • C/C++でプログラミングすることを知っていることは、多くの助けになります。 GNU製品になると、常に入手できるとは限らないため、GNUソースコード(使用する場合))を必要に応じて変更する必要がある場合がありますあなたが時間通りに必要とする助け-そして多くの場合、それらはC/C++で書かれています。

1
Mario Patty Fc

何年も前(実際にはWindows NT 3.1)に私は、サービスの書き込みと、場合によってはデバイスドライバーさえも専門にするプログラマーとしてスタートしました。これは、Windowsカーネルをよく理解していることを意味します。やがて、プログラミングに少し飽きて、ネットワーク管理に切り替えました。プログラミングのバックグラウンドは何度も何度も貴重なものでした。

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

結構なことですが、10年間プログラマーとして働いて仕事を辞めるのはあまり役に立ちません。ただし、C++やC#などの「ハード」言語でプログラミングした経験があると、ほとんどのシステム管理者にとって役立つと思います。そして、もしあなたの組織に飼いならされたプログラマーがいるなら、彼らと飲みに行きます!

ジョン・レニー

1
John Rennie

私は、bash、dos batch、およびpowershellスクリプトを理解することで、システム管理者に、一般的なシステムでほとんど何でもできるフレームワークを提供することを発見しました。

0
Beep beep