Những điều lập trình viên nên mỗi sysadmin biết?


20

Lấy cảm hứng từ câu hỏi này , tôi hỏi ngược lại: các quản trị viên hệ thống cần biết bao nhiêu về lập trình? Cụ thể hơn, những công cụ lập trình nào hữu ích cho một sysadmin có?


1
Đây không phải là một câu hỏi SO. Tôi nghĩ dù sao nó cũng đã được hỏi rồi.
Tim Matthews


2
Có, nhưng như đã lưu ý về câu hỏi đó, tồn tại hai cộng đồng rất riêng biệt trên SF và SO. Tôi nghĩ rằng nó muốn được thú vị để xem những gì trình điều quản trị hệ thống nghĩ rằng quản trị hệ thống nên biết, chứ không phải là những điều các lập trình viên lập trình viên nghĩ rằng quản trị hệ thống nên biết.
Tim

Câu trả lời:


29
  • Kiểm soát phiên bản . Có thể tạo, đọc và áp dụng các bản vá. Biết cách sử dụng hệ thống kiểm soát phiên bản trình bày các phiên bản rộng của kho lưu trữ và lý do bạn muốn một phiên bản. Biết làm thế nào để viết thay đổi mô tả và tại sao bạn muốn chúng. Biết cách tìm kiếm nhật ký của kho lưu trữ cho các từ khóa và khung thời gian.
  • Viết kịch bản . Làm điều gì đó một lần và trên con đường của bạn. Làm hai lần hoặc nhiều hơn, làm một lần rồi viết kịch bản.
  • Gỡ lỗi . Biết cách đọc theo dõi ngăn xếp và cách báo cáo các lỗi có liên quan đến liên hệ hỗ trợ phần mềm của bạn. Tìm lỗi là tốt và hữu ích, nhưng biết cách sửa nó có thể mất rất nhiều đầu tư để đọc mã. Làm phần dễ dàng cho bạn và để họ làm phần dễ với họ.
  • Kiểm tra . Theo dõi liên tục và đăng nhập lỗi. Được sử dụng cùng với kiểm soát phiên bản và thử nghiệm, bạn có một ý tưởng mạnh mẽ về những gì có thể đã sai khi và những gì thay đổi xung quanh sau đó. Giám sát cả sản xuất và tiền sản xuất.
  • Đánh giá ngang hàng . Đề xuất và xem xét thay đổi hệ thống sản xuất. Kiểm tra tiền sản xuất, xác định chính xác những gì cần được thực hiện và ghi lại những dịch vụ có thể bị ảnh hưởng trong bao lâu. Đừng để Quản lý thay đổi xuống cấp trong các trận chiến chính trị của quyền lực quan liêu.
  • Học mật mã . Một quản trị viên hệ thống hiện đại phụ trách tài nguyên mạng; thêm bảo mật như một bước cuối cùng là một nơi nào đó giữa không thể và một đề xuất rất tốn kém. Hiểu về mật mã khóa công khai, thực hành xử lý mật khẩu và mã hóa nói chung sẽ vô cùng quý giá.

Và ngay cả khi bạn không thể viết kịch bản (hoặc kịch bản tốt), để có thể nhận ra khi nào tự động hóa một cái gì đó là rất quan trọng.
Ether

Hệ thống kiểm soát phiên bản nhanh chóng và dễ dàng cho một cửa hàng Windows thuần túy là gì?
jftuga

SVN? Ý tôi là, nó có vẻ đủ tốt cho tên ngốc này: mã hóa kinh dị.com / blog / 2008/04 /
jldugger

9

Tôi sẽ bắt đầu với:

  1. Làm thế nào để viết nhiều hơn các kịch bản cơ bản nhất bất kể ngôn ngữ. Tự động hóa là bạn của bạn.
  2. Làm thế nào để chạy một trình gỡ lỗi / biết cách đọc các báo cáo sự cố thuộc loại nào đó: nó làm cho việc tìm ra một báo cáo sự cố và ai sẽ hỏi những gì về việc giải quyết dễ dàng hơn nhiều.
  3. Kiểm soát phiên bản - không chỉ đối với mã mà còn cho bất kỳ điều gì đáng để lưu lại lịch sử hoặc thay đổi quyền kiểm soát.

7

Quản trị hệ thống chỉ là lập trình. Một hệ thống quản lý cấu hình cho phép bạn xem toàn bộ cơ sở hạ tầng của mình dưới dạng một máy phân tán. Là một sysadmin, công việc của bạn là lập trình máy này.

Biết một trình soạn thảo văn bản. Thông thường vi cho sysadmin, emacs cho lập trình viên.

Biết cách viết kịch bản. Chọn một ngôn ngữ kịch bản. Perl là một yêu thích lâu năm, như là kết hợp shell / sed / awk. Ruby và Python có thể hoạt động, nhưng đối với rất nhiều thứ, các đối tượng là mô hình sai.

Biết cách viết tài liệu dễ đọc.

Kiểm soát phiên bản. Rất quan trọng để duy trì các tập tin cấu hình và đường mòn kiểm toán.

Học cách suy nghĩ trong các điều khoản lập trình. Hiểu các mô hình lập trình thủ tục, hướng đối tượng và chức năng. Chúng có thể không bao giờ được sử dụng, nhưng biết chúng làm cho bạn hiệu quả hơn nhiều.

Tìm hiểu để sử dụng trình gỡ lỗi (hoặc nhiều hơn) và đăng nhập.

Tìm hiểu cách sử dụng RDBMS. Có rất nhiều yêu cầu xử lý dữ liệu có thể được đơn giản hóa bằng cách sử dụng RDBMS chính xác. Ngay cả việc có thể chuyển sang vai trò DBA theo yêu cầu cũng có thể làm nên điều kỳ diệu.

Kiểm tra trước khi triển khai. Xem triết lý phát triển dựa trên thử nghiệm.

Lập trình cặp là tốt. Có người khác trông chừng vai bạn để học / khuyên / sửa.

Học để ít nhất có một sự quen thuộc trôi qua với một loạt các ngôn ngữ. Học một ngôn ngữ mới mỗi năm.


Quay trở lại thế giới thực ... Tôi vẫn chưa gặp một sysadmin nào làm việc này (ngoài việc kiểm tra và viết một chút tài liệu). Có lẽ tôi đã làm việc cho các công ty sai!
PowerApp101

1
Sau đó, phiên bản thực tế của bạn hút. Mọi công nhân của tôi đều thích vi (tôi đã học emacs và không cảm thấy muốn chạy qua sự tra tấn đó hai lần); chúng tôi đã có hàng trăm tập lệnh perl và hàng tá trang web php một lần cho các mục đích hỗ trợ. Chúng tôi chạy Opsview / nagios để theo dõi, đây thực sự chỉ là một số thử nghiệm hình thức chạy liên tục - phản hồi tức thì khi bạn cam kết thay đổi. Tuy nhiên, tôi muốn có thêm quyền kiểm soát phiên bản cho các trang web và tập lệnh và các bản kiểm toán tốt hơn.
jldugger

Các bạn là quản trị viên Unix? Trong thế giới Windows, rất nhiều thứ đó vẫn chưa thấm vào ý thức của các quản trị viên hệ thống. Hãy tin tôi, tôi sẽ thích nó nếu nó đã làm.
PowerApp101

Chàng trai thế kỷ 20, chúng ta đã đá các quản trị viên Windows của mình để học những thứ này. Họ chưa ở đó, nhưng ở đây tốt hơn so với khi tôi tham gia. Những vấn đề lớn hơn mà chúng ta đang phải đối mặt bây giờ là vấn đề chính trị / quản lý, thay vì các vấn đề kỹ thuật chúng ta gặp phải.
Devdas

Ồ, và chúng tôi cũng có các nhà phát triển Windows với một đầu mối, vì vậy họ thực sự ủng hộ những nỗ lực đó.
Devdas

5
  • Biết cách lập trình. Vâng, đó là điều quan trọng: như một nhà bình luận đã nói, nếu bạn làm điều đó nhiều hơn một lần, thì hãy viết một kịch bản - và viết nó thật tốt.
  • Biết các công cụ có trong cài đặt hệ điều hành tiêu chuẩn. Đối với các quản trị viên UNIX, điều này có nghĩa là các công cụ như Korn Shell (ksh) và Perl và vi. Đừng dựa vào vỏ Emacs hoặc Ruby hoặc Tcl hoặc C hiện diện.
  • Biết mạng. Các gói Ethernet được đặt cùng nhau như thế nào? Một gói trông như thế nào? Các loại gói khác nhau là gì? Nhận biết các công cụ như tcpdump, wireshark, snoop và những người khác.
  • Viết mã di động. Nếu mã sẽ chạy trong Linux - và Tru64 - và Solaris - và OpenVMS - thì hãy viết mã di động. Ngay cả khi nó chỉ chạy dưới hai phiên bản UNIX - làm cho nó di động. Nhưng sau đó, nếu nó không cần phải di động, đừng dành thêm thời gian cho nó.
  • Biết tài liệu ở đâu. Đối với Perl, điều này có nghĩa là perldoc, Perl Mongers, perl.org, v.v ... Đối với ksh, điều này có nghĩa là trang người đàn ông và sách vỏ Korn yêu thích của bạn.
  • Tài liệu, tài liệu, tài liệu, tài liệu! Tài liệu mã của bạn, tạo trang man, tạo tài liệu Perl nội tuyến và bất cứ điều gì khác là phù hợp. Giải thích cách sử dụng chương trình và lý do tại sao bạn mã hóa nó theo cách đó.
  • Biết các công cụ đóng gói hệ thống của bạn. Biết cách tạo RPM cho Red Hat, hoặc kho HP-UX hoặc gói Solaris: điều này sẽ cho phép bạn xây dựng các gói cho hệ thống của mình và do đó tích hợp chúng vào quá trình cài đặt.

3

Viết kịch bản là điều cần thiết, nhưng tôi muốn đưa ra lời khuyên rằng việc biết một số ngôn ngữ "thực" là một phần thưởng nhất định. Bạn có thể thực hiện một số điều rất hữu ích với không gian tên .NET System.DirectoryService chẳng hạn.


3

Tôi là một lập trình viên và quản trị viên / tích hợp cao cấp. Để làm việc ở nơi tôi làm, bạn cần biết những điều sau:

  • Cách viết các tập lệnh shell (POSIX, không Bashism), một chút Perl, một chút Python
  • Basic C (Đặc tả UNIX đơn)
  • Cách cài đặt chuỗi công cụ biên dịch
  • Cách xây dựng thư viện và các dự án OSS khác từ nguồn
  • Valgrind là gì và cách sử dụng nó để phát hiện rò rỉ bộ nhớ
  • Cách cuộn các gói .rpm và .deb
  • Mặc dù chúng tôi không yêu cầu nó, một chút PHP và một chút LISP sẽ không bị tổn thương

Hầu hết các quản trị viên cơ sở có thể nhìn vào một trong những lập trình viên của chúng tôi và nói (có thẩm quyền), vâng, tôi đã cài đặt nó một cách chính xác, đây là nơi bạn bị rò rỉ, đó là lý do tại sao mã bạn vừa đẩy bị phá vỡ. Hoặc "Không, đây không phải là phiên bản MySQL của chúng tôi, hãy xem truy vấn của bạn ở đây ..."

Tôi nghĩ chúng ta khác nhau, khi chúng ta thuê một quản trị viên tài năng .. chúng ta nửa mong đợi họ (cuối cùng) sẽ tìm cách lập trình, ngay cả khi nó chỉ hack một thứ gì đó mà chúng ta sử dụng để làm việc theo cách họ cần để làm việc .

Tóm lại, được làm tròn tốt sẽ không bao giờ làm tổn thương bạn.


1

Nhiều năm trước (trên thực tế Windows NT 3.1) tôi khởi nghiệp là một lập trình viên chuyên về dịch vụ viết và thậm chí là trình điều khiển thiết bị không thường xuyên. Điều này có nghĩa là bạn biết rất rõ về nhân Windows. Trong thời gian tôi đã có một chút nhàm chán với lập trình và chuyển sang quản lý mạng. Tôi đã tìm thấy nền tảng lập trình của mình rất nhiều lần có giá trị.

Không chỉ là viết các tập lệnh VBScript tương đối không đau. Biết cách thức hoạt động của Windows, và đặc biệt là cách IP hoạt động, giúp ích rất nhiều cho việc giải quyết các vấn đề về máy chủ và mạng. Ngoài ra đó là một suy nghĩ. Các lập trình viên đã quen với tài liệu và kiểm soát phiên bản, và điều đó làm tôi kinh hoàng khi thấy có bao nhiêu quản trị viên Windows sẽ thử một cái gì đó để xem nó có hoạt động không và lo lắng về việc gỡ rối mớ hỗn độn sau đó.

Tất cả đều rất tốt, nhưng đó không phải là lời khuyên hữu ích để nói đi xa và làm việc như một lập trình viên trong mười năm! Tuy nhiên tôi nghĩ rằng nó sẽ giúp hầu hết các sysadins có một số kinh nghiệm lập trình bằng ngôn ngữ "cứng" như C ++ hoặc C #. Và nếu bạn có những lập trình viên thuần hóa trong tổ chức của bạn hãy đi uống với họ!

John Rennie


1

Những điều tồi tệ xảy ra, mã của bạn sẽ tồn tại lâu hơn bạn nghĩ. Thất bại duyên dáng, với các thông báo lỗi hữu ích. Bạn sẽ hết đĩa, ram, cpu, thời gian, v.v., đối phó với nó.

Đừng quá lạc quan, điều kỳ lạ một lần trong một triệu vấn đề sẽ xảy ra quá thường xuyên trong sản xuất.


1

Với tất cả các mô tả ở đây, tôi sẽ không nói rằng tôi là một sysadmin. Nhưng thực tế là tôi đã xây dựng và quản lý một vài máy chủ windows / linux, tôi phải thừa nhận điều gì đó:

  • trong linux, bash scripting là điều bắt buộc phải biết - nếu bạn biết cách tích hợp nó với perl / awk / etc, thì tốt hơn. Tôi thấy rằng nhiều nhiệm vụ trở nên dễ dàng hơn bằng cách sử dụng nó.

  • Biết lập trình trong C / C ++ giúp ích rất nhiều. Đôi khi bạn phải sửa đổi mã nguồn GNU (nếu bạn sử dụng một mã) cho phù hợp với nhu cầu của mình vì đã trở thành sản phẩm GNU không đảm bảo bạn sẽ luôn nhận được sự giúp đỡ cần thiết đúng giờ - và nhiều lần chúng được viết bằng C / C ++.


0
  • SQL - Mọi thứ đều hoạt động với cơ sở dữ liệu
  • Lập trình - Ngôn ngữ không thành vấn đề, chỉ cần bạn hiểu logic và quy trình bạn có thể học và thích nghi với bất kỳ ngôn ngữ nào.
  • Làm thế nào để TÀI LIỆU MÃ và THAY ĐỔI - cái này rất lớn. Đã bao nhiêu lần bạn bị mắc kẹt khi nhìn vào một cấu hình cố gắng tìm ra lý do tại sao ai đó đã làm điều này và nó sẽ ảnh hưởng gì nếu chúng ta thay đổi nó trở lại. Cái này vượt xa mọi thứ bạn viết mã hoặc tập lệnh, cái này bao gồm khi bạn thay đổi cài đặt tường lửa để xử lý trường hợp bên lề khi người dùng X nhận email từ miền Y vào một buổi chiều thứ ba khi trời mưa. Và đó có thể không phải là bạn, có thể chính PFY là người quyết định đi trước và làm điều đó và sau đó phải gọi bạn dậy lúc 2 giờ sáng trong kỳ nghỉ của bạn vì mọi thứ vỡ òa.
  • Ngôn ngữ hệ thống - Trên Windows, đây là những thứ như Powershell và WMI cho phép các ngôn ngữ kịch bản của bạn kết hợp với một số tài nguyên khá mạnh và làm bất cứ điều gì trên PC. Unix / Linux có bộ công cụ riêng mà tôi không đủ điều kiện để nói.

0

Biết cách liên kết với LDAP của bạn và truy xuất thông tin cần thiết bằng ngôn ngữ kịch bản lựa chọn của bạn là chìa khóa cho mọi thứ từ khắc phục sự cố đến thực sự đẩy mạnh các loại tự động hóa khác nhau (cung cấp tài khoản và tài nguyên, kiểm tra thông minh hơn trên tài khoản người dùng hoặc máy).

Có thể có vẻ cơ bản nhưng tôi đã thấy rất nhiều cửa hàng bánh mì-bơ nơi mọi người không nghĩ rằng họ có nhu cầu quản trị hệ thống kiểu này. Rất nhiều nơi dành $$$ lớn cho các bộ công cụ quản trị lớn và, theo như tôi có thể nói, 95% những gì họ sử dụng các công cụ này có thể đã được thực hiện với một vài giờ kịch bản nếu có ai biết hoặc biết làm đi.


0

Tôi đã thấy rằng việc biết bash, dos batch và powershell scripting cung cấp cho quản trị viên hệ thống khung để làm bất cứ điều gì, trên bất kỳ hệ thống phổ biến nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.