สิ่งที่โปรแกรมเมอร์ทุกคนควรดูแลระบบรู้?


20

โดยได้รับแรงบันดาลใจจากคำถามนี้ฉันถามสิ่งที่ตรงกันข้าม: ผู้บริหารระบบจำเป็นต้องรู้เกี่ยวกับการเขียนโปรแกรมมากแค่ไหน? โดยเฉพาะอย่างยิ่งเครื่องมือการเขียนโปรแกรมใดที่มีประโยชน์สำหรับดูแลระบบที่จะมี?


1
นี่ไม่ควรเป็นคำถาม SO ฉันคิดว่ามันถูกถามแล้ว
ทิมแมตทิว


2
ใช่ แต่อย่างที่ได้รับการบันทึกไว้ในคำถามนั้นมีสองชุมชนที่แยกจากกันมากใน SF และ SO ผมคิดว่ามันจะเป็นที่น่าสนใจเพื่อดูสิ่งที่โปรแกรมเมอร์สิ่งsysadminsคิด sysadmins ควรรู้มากกว่าสิ่งที่โปรแกรมเมอร์โปรแกรมเมอร์สิ่งที่คิดว่า sysadmins ควรรู้
ทิม

คำตอบ:


29
  • การควบคุมเวอร์ชัน สามารถสร้างอ่านและใช้งานแพตช์ได้ รู้วิธีใช้ระบบควบคุมเวอร์ชันที่นำเสนอเวอร์ชั่นพื้นที่เก็บข้อมูลกว้างและสาเหตุที่คุณต้องการ รู้วิธีเขียน changelog เชิงอธิบายและสาเหตุที่คุณต้องการ รู้วิธีค้นหาบันทึกของที่เก็บสำหรับคำหลักและกรอบเวลา
  • การเขียนสคริปต์ ทำอะไรสักอย่างและไปตามทางของคุณ ทำสองครั้งหรือมากกว่าทำครั้งเดียวแล้วเขียนสคริปต์
  • แก้จุดบกพร่อง รู้วิธีอ่านการติดตามสแต็กและวิธีรายงานข้อผิดพลาดที่เกี่ยวข้องไปยังผู้ติดต่อฝ่ายสนับสนุนซอฟต์แวร์ของคุณ การค้นหาข้อผิดพลาดนั้นดีและเป็นประโยชน์ แต่การรู้วิธีการแก้ไขนั้นอาจต้องใช้เวลาจำนวนมากในการอ่านโค้ด ทำส่วนที่ง่ายสำหรับคุณและให้พวกเขาทำส่วนที่ง่ายสำหรับพวกเขา
  • การทดสอบ ตรวจสอบอย่างต่อเนื่องและบันทึกข้อผิดพลาด ใช้ร่วมกับการควบคุมเวอร์ชันและการทดสอบคุณมีความคิดที่ชัดเจนว่าสิ่งใดที่ผิดพลาดไปเมื่อใดและเปลี่ยนแปลงไปมากน้อยเพียงใด ตรวจสอบทั้งการผลิตและการผลิตล่วงหน้า
  • งาน peer Review เสนอและตรวจสอบการเปลี่ยนแปลงในระบบการผลิต ทดสอบก่อนการผลิตกำหนดสิ่งที่ต้องทำและบันทึกบริการที่อาจได้รับผลกระทบนานเท่าไหร่ อย่าปล่อยให้การบริหารการเปลี่ยนแปลงลดน้อยลงไปสู่การต่อสู้ทางการเมืองที่มีอำนาจรัฐ
  • การศึกษาการเข้ารหัส ผู้ดูแลระบบสมัยใหม่รับผิดชอบทรัพยากรเครือข่าย การเพิ่มความปลอดภัยเป็นขั้นตอนสุดท้ายเป็นเรื่องที่เป็นไปไม่ได้และเป็นเรื่องที่แพงมาก การทำความเข้าใจกับการเข้ารหัสคีย์สาธารณะวิธีการจัดการรหัสผ่านและการเข้ารหัสโดยทั่วไปจะมีค่าอย่างยิ่ง

และแม้ว่าคุณจะไม่สามารถสคริปต์ (หรือสคริปต์ดี) เพื่อให้สามารถจดจำได้ว่าเมื่อใดที่จะทำให้บางสิ่งเป็นสิ่งสำคัญโดยอัตโนมัติ
Ether

ระบบควบคุมเวอร์ชันที่ง่ายและรวดเร็วสำหรับร้าน Windows ล้วน ๆ คืออะไร?
jftuga

SVN? ฉันหมายความว่ามันดูดีพอสำหรับคนบ้าคนนี้: codinghorror.com/blog/2008/04/…
jldugger

9

ฉันจะเริ่มต้นด้วย:

  1. วิธีเขียนมากกว่าสคริปต์พื้นฐานที่สุดไม่ว่าจะเป็นภาษาใด ระบบอัตโนมัติคือเพื่อนของคุณ
  2. วิธีเรียกใช้ดีบักเกอร์ / รู้วิธีอ่านรายงานข้อขัดข้องบางประเภท: ทำให้การค้นหารายงานข้อขัดข้องและผู้ที่ถามว่าผีตัวใดทำได้ง่ายกว่ามาก
  3. การควบคุมเวอร์ชัน - ไม่เพียง แต่สำหรับโค้ดเท่านั้น

7

การบริหารระบบเป็นเพียงการเขียนโปรแกรม ระบบการจัดการการกำหนดค่าช่วยให้คุณเห็นโครงสร้างพื้นฐานทั้งหมดของคุณเป็นเครื่องกระจาย ในฐานะผู้ดูแลระบบงานของคุณคือตั้งโปรแกรมเครื่องนี้

รู้จักโปรแกรมแก้ไขข้อความหนึ่งรายการ โดยปกติแล้ว vi สำหรับ sysadmins, emacs สำหรับโปรแกรมเมอร์

รู้วิธีสคริปต์ เลือกภาษาสคริปต์ Perl เป็นรายการโปรดตลอดกาลเช่นเดียวกับคำสั่งผสมเชลล์ / sed / awk Ruby และ Python สามารถทำงานได้ แต่สำหรับวัตถุหลายอย่างนั้นเป็นกระบวนทัศน์ที่ผิด

รู้วิธีการเขียนเอกสารที่อ่านได้

การควบคุมเวอร์ชัน สิ่งสำคัญสำหรับการบำรุงรักษาไฟล์กำหนดค่าและหลักฐานการตรวจสอบ

เรียนรู้ที่จะคิดในแง่การเขียนโปรแกรม ทำความเข้าใจเกี่ยวกับกระบวนทัศน์การโปรแกรมเชิงวัตถุและการทำงาน สิ่งเหล่านี้อาจไม่เคยถูกใช้งาน แต่การรู้ว่าสิ่งเหล่านี้ทำให้คุณมีประสิทธิผลมากขึ้น

เรียนรู้การใช้ดีบักเกอร์ (หรือมากกว่า) และการบันทึก

เรียนรู้การใช้ RDBMS มีข้อกำหนดการประมวลผลข้อมูลมากมายซึ่งสามารถทำให้ง่ายขึ้นโดยใช้ RDBMS อย่างถูกต้อง แม้ความสามารถในการเปลี่ยนไปใช้บทบาท DBA ตามความต้องการสามารถทำสิ่งมหัศจรรย์ได้

ทดสอบก่อนการปรับใช้ ดูปรัชญาการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ

การเขียนโปรแกรมคู่เป็นสิ่งที่ดี ให้คนอื่นเฝ้าไหล่ของคุณเพื่อเรียนรู้ / แนะนำ / แก้ไข

เรียนรู้ที่จะมีความคุ้นเคยในการใช้ภาษาเป็นจำนวนมาก เรียนรู้ภาษาใหม่ทุกปี


ย้อนกลับไปในโลกแห่งความเป็นจริง ... ฉันยังไม่ได้พบกับผู้ดูแลระบบที่ทำสิ่งนี้ (นอกเหนือจากการทดสอบและการเขียนเอกสารสักหน่อย) บางทีฉันอาจทำงานให้กับ บริษัท ที่ไม่ถูกต้อง!
PowerApp101

1
จากนั้นรุ่นความเป็นจริงของคุณก็จะแย่ลง คนงานทุกคนของฉันชอบ vi (ฉันเรียนรู้ emacs และไม่รู้สึกอยากวิ่งผ่านการทรมานนั้นสองครั้ง); เรามีสคริปต์ Perl หลายร้อยรายการและเว็บไซต์ PHP หนึ่งครั้งสำหรับการสนับสนุน เราเรียกใช้ Opsview / nagios เพื่อตรวจสอบซึ่งเป็นเพียงการทดสอบรูปแบบบางอย่างที่ทำงานอย่างต่อเนื่อง - ข้อเสนอแนะทันทีเมื่อคุณทำการเปลี่ยนแปลง ยังฉันต้องการได้รับการควบคุมเวอร์ชันเพิ่มเติมสำหรับเว็บไซต์และสคริปต์และเส้นทางการตรวจสอบที่ดีขึ้น
jldugger

พวกคุณเป็นผู้ดูแลระบบ Unix เหรอ? ในโลกของ Windows สิ่งต่าง ๆ มากมายที่ยังไม่ได้ซึมซับจิตสำนึกของผู้ดูแลระบบ เชื่อฉันฉันจะรักถ้ามันได้
PowerApp101

เด็กชายศตวรรษที่ 20 เราเตะผู้ดูแลระบบ Windows ของเราในการเรียนรู้สิ่งนี้ พวกเขายังอยู่ที่นั่น แต่มันก็ยังดีกว่าที่ฉันเข้าร่วม ปัญหาใหญ่ที่เราเผชิญอยู่ในขณะนี้คือปัญหาทางการเมือง / การจัดการมากกว่าปัญหาทางเทคนิคที่เรามี
Devdas

โอ้และเรายังมีนักพัฒนา Windows ที่มีเงื่อนงำดังนั้นพวกเขาจึงสนับสนุนความพยายามดังกล่าว
Devdas

5
  • รู้วิธีการโปรแกรม ใช่นั่นเป็นสิ่งสำคัญ: อย่างที่ผู้วิจารณ์คนหนึ่งพูดว่าถ้าคุณทำมากกว่าหนึ่งครั้งให้เขียนสคริปต์ - และเขียนให้ดี
  • รู้จักเครื่องมือต่าง ๆ ที่รวมอยู่ในการติดตั้งระบบปฏิบัติการมาตรฐาน สำหรับผู้ดูแลระบบ UNIX หมายถึงเครื่องมือต่าง ๆ เช่น Korn Shell (ksh) และ Perl และ vi อย่าพึ่งพา Emacs หรือ Ruby หรือ Tcl หรือ C เชลล์ที่มีอยู่
  • รู้จักเครือข่าย แพ็กเก็ต Ethernet ประกอบกันอย่างไร แพ็คเก็ตมีลักษณะอย่างไร แพคเก็ตชนิดต่างกันคืออะไร ทำความรู้จักกับเครื่องมือเช่น tcpdump, wireshark, snoop และอื่น ๆ
  • เขียนรหัสพกพา หากรหัสจะทำงานภายใต้ Linux - และ Tru64 - และ Solaris - และ OpenVMS - จากนั้นเขียนรหัสพกพา แม้ว่ามันจะทำงานภายใต้ UNIX สองรุ่นเท่านั้น - ทำให้พกพาได้ แต่ถ้าไม่จำเป็นต้องพกพาอย่าใช้เวลาเพิ่ม
  • รู้ว่าเอกสารอยู่ที่ไหน สำหรับ Perl นี่หมายถึง perldoc, Perl Mongers, perl.org และอื่น ๆ สำหรับ ksh หมายถึง man page และ Korn เชลล์หนังสือเล่มโปรดของคุณ
  • เอกสารเอกสารเอกสารเอกสาร! เอกสารรหัสของคุณสร้างหน้าคนสร้างเอกสารอินไลน์ Perl และสิ่งอื่นที่เหมาะสม อธิบายวิธีใช้โปรแกรมและสาเหตุที่คุณใช้รหัสในวิธีนั้น
  • รู้จักเครื่องมือบรรจุภัณฑ์ของระบบของคุณ รู้วิธีสร้าง RPMs สำหรับ Red Hat หรือคลังเก็บ HP-UX หรือแพ็คเกจ Solaris: สิ่งนี้จะช่วยให้คุณสร้างแพ็คเกจสำหรับระบบของคุณและรวมเข้ากับกระบวนการติดตั้ง

3

การเขียนสคริปต์เป็นสิ่งจำเป็น แต่ฉันขอแนะนำให้รู้ว่าการรู้ภาษา "ของจริง" บางอย่างเป็นโบนัสที่แน่นอน คุณสามารถทำสิ่งที่มีประโยชน์มากได้ด้วยเนมสเปซ. NET System.DirectoryServices


3

ฉันเป็นโปรแกรมเมอร์และผู้ดูแลระบบ / ผู้ประสานงานระดับสูง ในการทำงานที่ฉันทำคุณต้องรู้สิ่งต่อไปนี้:

  • วิธีเขียนเชลล์สคริปต์ (POSIX, Bashisms), Perl เล็กน้อย, Python เล็กน้อย
  • Basic C (ข้อมูลจำเพาะ UNIX เดียว)
  • วิธีการติดตั้งเครื่องมือคอมไพเลอร์โซ่
  • วิธีสร้างไลบรารีและโครงการ OSS อื่น ๆ จากแหล่งที่มา
  • Valgrindคืออะไรและจะใช้เพื่อตรวจหารอยรั่วของหน่วยความจำได้อย่างไร
  • วิธีการหมุน. rpm และ. deb แพ็คเกจ
  • ในขณะที่เราไม่ต้องการมัน PHP ตัวเล็ก ๆ และ LISP ตัวเล็ก ๆ

ผู้ดูแลระบบส่วนใหญ่สามารถดูหนึ่งในโปรแกรมเมอร์ของเราและพูดว่า (ด้วยสิทธิ์) ใช่ฉันติดตั้งอย่างถูกต้องที่นี่คือที่ที่คุณมีการรั่วไหลซึ่งเป็นสาเหตุที่รหัสที่คุณเพิ่งผลักถูกทำลาย หรือ "ไม่ไม่ใช่รุ่น MySQL ของเราดูคำถามของคุณที่นี่ ... "

ฉันคิดว่าเราแตกต่างกันเมื่อเราจ้างผู้ดูแลระบบที่มีพรสวรรค์ .. เราครึ่งทางคาดหวังให้พวกเขา (ในที่สุด) หาวิธีในการเขียนโปรแกรมแม้ว่ามันจะเป็นการแฮ็คสิ่งที่เราใช้ในการทำงานตามที่พวกเขาต้องการ .

โดยสรุปแล้วการมีความโค้งมนจะไม่ทำให้คุณเจ็บปวด


1

หลายปีที่ผ่านมา (ที่จริงแล้ว Windows NT 3.1) ฉันเริ่มจากการเป็นโปรแกรมเมอร์ที่เชี่ยวชาญในการเขียนบริการและแม้แต่ไดรเวอร์อุปกรณ์เป็นครั้งคราว ซึ่งหมายความว่าคุณจะได้รู้จักเคอร์เนลของ Windows เป็นอย่างดี ในเวลาที่ฉันเบื่อกับการเขียนโปรแกรมและเปลี่ยนเป็นการจัดการเครือข่าย ฉันพบว่าพื้นหลังของฉันในการเขียนโปรแกรมนั้นมีคุณค่ามากขึ้นเรื่อย ๆ

ไม่ใช่แค่การเขียนสคริปต์ VBScript นั้นค่อนข้างเจ็บปวด การรู้ว่าระบบของ Windows ทำงานอย่างไรและโดยเฉพาะอย่างยิ่งวิธีการทำงานของ IP จะช่วยได้อย่างมากในการแยกแยะปัญหาเซิร์ฟเวอร์และเครือข่าย นอกจากนี้ยังเป็นความคิด โปรแกรมเมอร์ใช้สำหรับการควบคุมเอกสารและเวอร์ชันและมันทำให้ฉันตกใจเมื่อเห็นว่าผู้ดูแลระบบ Windows จำนวนมากจะลองทำอะไรบางอย่างเพื่อดูว่ามันใช้งานได้หรือไม่

ทุกอย่างดีมาก แต่มันไม่มีคำแนะนำที่มีประโยชน์มากที่จะบอกว่าไปให้พ้นและทำงานเป็นโปรแกรมเมอร์มาสิบปีแล้ว! อย่างไรก็ตามฉันคิดว่ามันจะช่วยให้ผู้ดูแลระบบส่วนใหญ่มีประสบการณ์การเขียนโปรแกรมในภาษา "ยาก" เช่น C ++ หรือ C # และถ้าคุณมีโปรแกรมเมอร์เชื่องในองค์กรของคุณไปดื่มกับพวกเขา!

จอห์นเรนนี่


1

สิ่งเลวร้ายเกิดขึ้นรหัสของคุณจะยาวกว่าที่คุณคิด ล้มเหลวอย่างสง่างามพร้อมข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์ คุณจะหมดดิสก์, RAM, cpu, เวลา ฯลฯ จัดการกับมัน

อย่ามองโลกในแง่ดีจนแปลก ๆ ครั้งหนึ่งในล้านประเด็นที่จะเกิดขึ้นบ่อยครั้งในการผลิต


1

ด้วยคำอธิบายทั้งหมดที่นี่ฉันจะไม่บอกว่าฉันเป็นผู้ดูแลระบบ แต่ความจริงที่ว่าฉันสร้างและจัดการเซิร์ฟเวอร์ windows / linux สองตัวฉันต้องยอมรับบางสิ่ง:

  • ใน linux, สคริปต์ bash เป็นสิ่งที่ต้องรู้ - ถ้าคุณรู้วิธีรวมมันเข้ากับ Perl / awk / etc, มันจะดีกว่า ฉันพบว่างานหลายอย่างง่ายขึ้นด้วยการใช้งาน

  • การรู้จักโปรแกรมใน C / C ++ ช่วยได้มาก บางครั้งคุณต้องแก้ไขซอร์สโค้ด GNU (ถ้าคุณใช้) เพื่อให้เหมาะกับความต้องการของคุณเนื่องจากการเป็นผลิตภัณฑ์ GNU ไม่แน่ใจว่าคุณจะได้รับความช่วยเหลือที่คุณต้องการตรงเวลาเสมอและหลาย ๆ ครั้งเขียนด้วยภาษา C / C ++


0
  • SQL - ทุกอย่างทำงานกับฐานข้อมูล
  • การเขียนโปรแกรม - ภาษาไม่สำคัญตราบใดที่คุณเข้าใจตรรกะและกระบวนการที่คุณสามารถเรียนรู้และปรับให้เข้ากับภาษาใด ๆ
  • วิธีเปลี่ยนรหัสและรหัส - เอกสารนี้มีขนาดใหญ่มาก มีกี่ครั้งที่คุณมองไปที่การกำหนดค่าพยายามที่จะคิดออกว่าทำไมคนทำแบบนี้และสิ่งที่มันจะมีผลถ้าเราเปลี่ยนกลับ อันนี้นอกเหนือไปจากรหัสหรือสคริปต์ของคุณสิ่งนี้ครอบคลุมเมื่อคุณทำการเปลี่ยนแปลงในการตั้งค่าไฟร์วอลล์เพื่อจัดการกับกรณีที่ผู้ใช้ X ได้รับอีเมลจากโดเมน Y ในบ่ายวันอังคารเมื่อฝนตก และอาจไม่ใช่คุณมันอาจเป็น PFY ที่ตัดสินใจไปข้างหน้าและทำมันและจากนั้นจะต้องโทรหาคุณตอนตีสองในวันหยุดของคุณเพราะทุกอย่างพังทลายน่าเกลียด
  • ภาษาของระบบ - บน Windows นี่คือสิ่งต่าง ๆ เช่น Powershell และ WMI ที่ให้ภาษาสคริปต์ของคุณเชื่อมโยงกับทรัพยากรที่ทรงพลังและทำอะไรก็ได้บนพีซี Unix / Linux มีชุดเครื่องมือของตัวเองที่ฉันไม่ผ่านการรับรอง

0

การรู้วิธีผูกเข้ากับ LDAP ของคุณและดึงข้อมูลที่จำเป็นในภาษาสคริปต์ที่คุณเลือกเป็นกุญแจสำคัญสำหรับทุกสิ่งตั้งแต่การแก้ไขปัญหาไปจนถึงการเพิ่มความอัตโนมัติในรูปแบบต่าง ๆ (การจัดสรรบัญชีและทรัพยากรการตรวจสอบบัญชีผู้ใช้

อาจดูธรรมดา แต่ฉันเห็นร้านขนมปัง - เนยจำนวนมากซึ่งผู้คนไม่คิดว่าพวกเขามีความต้องการการบริหารระบบประเภทนี้ มีสถานที่มากมายให้ใช้จ่ายเงินจำนวนมาก $$$ บนชุดเครื่องมือการดูแลระบบขนาดใหญ่และเท่าที่ฉันสามารถบอกได้ 95% ของสิ่งที่พวกเขาใช้เครื่องมือนี้สามารถทำได้ด้วยการใช้สคริปต์สองสามชั่วโมงถ้าใครรู้หรือรู้วิธีการ ทำมัน.


0

ฉันพบว่าการรู้ bash, dos batch, และการเขียนสคริปต์ powershell ทำให้ผู้ดูแลระบบมีกรอบที่จะทำอะไรก็ได้ในระบบที่ได้รับความนิยม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.