Linux 관리자가 머리로 알아야 할 것은 무엇입니까?

Linux 관리자가 머리로 알아야 할 것은 무엇입니까?

저는 시스템 관리자는 아니지만 Linux, Unix, Windows 및 하드웨어에 대한 지식이 풍부합니다.

Linux 관리자가 암기해야 하는 가장 필요한 주제는 무엇입니까(최대한 설명서를 읽지 않고도 수정, 설정, 작업이 가능한 시점, 모든 배포판에 공통적인 매뉴얼 페이지 확인) )?

그만큼집중하다나는 이것을 회사 네트워크에서 서버 관리에 이르기까지 설정하고 싶습니다. 동일한 기능을 가질 수 있지만 대부분의 경우 다른 기능도 있을 것입니다. 예를 들어 회사 서버의 경우 FTP 서버가 항상 표시되는 것은 아니지만 Samba는 대부분 볼 수 있습니다.

"반드시 읽어야 할 책"이나 그런 것을 말하는 것이 아니라 Linux 관리자로서 일상 생활에 필요할 가장 필요한 기능을 의미했습니다.

좋다:

  1. 커널, iptables
  2. 센드메일, 포스트픽스, 큐메일, 엑심
  3. 오징어, 삼바, NFS, LDAP
  4. 아파치, ngxix, lighthttpd
  5. vsftpd, proftpd
  6. 묶다
  7. 매일 직면하는 문제
  8. 하루 중 가장 많이 사용한 기능은 무엇인가요?

이것은 순서대로 나열한 목록도 아니고 가장 필요한 목록도 아닙니다. 그것은 단지 내 머리에 떠오른 것을 명명하는 것뿐입니다.

추신: 이미 기본 지식은 갖추고 있지만 현장에서 매일 경험해 본 적은 없습니다. 나는 서버를 갖고 있고, 네트워크를 만드는 등의 일을 해왔습니다. 게다가 나는 그것의 일부에 대해 깊은 지식을 가지고 있습니다. 나는 단지 이것을 여기서 업데이트하고 싶었습니다. 제가 말했듯이 이것은 Linux 시스템 관리자 생활의 일일 목록에 가깝습니다.

여러분이 주제를 나열하고 예를 들어 그 안의 어떤 필드가 가장 많이 사용되거나 기억해야 할 중요한 것인지 나열해 주시면 감사하겠습니다.

내 질문이 부적절하다고 생각하시면 알려주시면 제가 직접 삭제하겠습니다. 또는 적합하다고 생각하지만 더 재작업이 필요한 경우 알려주시면 최선을 다하겠습니다.

답변1

당신은 정말로 일상적인 일에 관심을 갖고 있습니까? 개인적으로 외워두어야 할 것들은 뭔가 망가졌을 때 해야 할 일들이고, 모두가 네트워크를 복구하기 위해 숨을 죽이고 있다고 생각합니다. 일상적인 일은 Linux 상자가 네트워크에서 수행하는 작업에 따라 달라지는 경향이 있습니다.

꽤 중요한 몇 가지 기술이 있다고 생각합니다.

  • ifconfig, Route 및 ip와 같은 CLI 도구만 사용하여 네트워크를 구성할 수 있어야 합니다.

    • 고객이 Linux 상자에 오류가 발생했다고 몇 번 전화했습니다. 나는 그들에게 livecd를 부팅하게 했습니다. 그러나 서버는 DHCP가 없는 네트워크에 있었습니다(DHCP였습니다). 시스템이 부팅되면 네트워크와 SSH를 시작하는 과정을 안내하여 원격으로 연결하여 손상된 부분을 진단하고 수정하도록 도와야 합니다.
    • 인터넷에 접속할 수 없는 상황에 있을 수 있으므로 온라인에 접속하는 방법을 알아야 합니다.
  • tar, rsync 또는 dd를 사용하여 시스템 전체 백업을 수행하는 방법을 알아야 한다고 생각합니다. 백업 및 복원 방법을 모른다면 거의 확실하게 시스템을 건드리지 말아야 합니다. 또한 시스템을 변경하기 전에 실제로 백업이 이루어졌는지 확인해야 합니다.

  • 내 생각에는 서버의 livecd에서 파일 시스템에 액세스하는 방법을 알아야 할 것 같습니다. 즉, LVM 및 소프트웨어 RAID 기반 드라이브를 활성화하고, 파티션 정보에 액세스하고, 파일 시스템을 마운트하는 방법을 알아야 합니다.

    • 서버를 부팅할 수 없는 경우 파일 시스템에 액세스하여 문제를 해결해야 할 수도 있습니다. 비상시에 실제로 물건을 장착하는 방법을 알아내려고 노력하는 것은 꽤 고통스러울 것입니다. 미리 준비하십시오.
  • 부팅 시 내용을 변경할 수 있으려면 부팅 프로세스에 충분히 익숙해져야 합니다. 대부분의 시스템은 GRUB를 사용하지만 LILO가 발생할 수 있습니다.
    • 중요한 것은 단일 사용자와 같은 다양한 실행 수준으로 부팅하는 방법을 알아야 한다는 것입니다.
  • 나는 최소한 tcpdump를 사용하여 몇 가지 기본 캡처를 수행하고 결과를 읽을 수 있는 방법에 대한 실무 지식이 있어야 한다고 생각합니다. Wireshark의 멋진 GUI 기능은 모두 훌륭하지만, 문제가 발생하면 실제로 Wireshark에 액세스하지 못할 수도 있습니다.
    • tcpdump를 실행하는 것만으로도 신속하게 식별하고 해결할 수 있었던 네트워킹 문제가 많이 있습니다.

답변2

어떤 도구를 가지고 있는지 알아보세요

넌 절대 모를 거야모든 것미리. 하지만 당신은~할 수 있다당신이 무엇을 가지고 일해야 하는지 알아라. 더 많은 도구를 알수록 더 많은 것을 사용할 수 있습니다. 도구가 무엇인지, 무엇을 하는지, 도구에 대한 추가 정보를 어디서 찾을 수 있는지 알고 있다면 그것만으로도 충분합니다.

페이지 에 익숙해지세요 man. 그것들을 외울 필요는 없지만, 찾고 있는 것을 어디서 찾을 수 있는지 알아야 합니다. man특정 시스템에 설치된 페이지는 현재 보고 있는 시스템에 해당하는 다양한 특징이나 버전별 정보를 반영하기 때문에 구문 세부정보를 찾는 데는 Google보다 페이지가 더 좋습니다.

apache많이 사용한다면 Apache 구성 구문을 배우는 것이 좋습니다. 대신 사용하는 경우 nginx대신 배우십시오. 하지만 어느 쪽이든 둘 다 무엇이고 어떻게 다른지 알아야 합니다.

시스템 도구

수행 중인 시스템 관리자 작업 유형에 관계없이 도움이 되는 몇 가지 도구가 있습니다. chmod, 등과 같은 기본 사항을 알고 있다고 가정할 때 mount일부 관리자가 충분히 이해하지 못하는 몇 가지 매우 유용한 도구는 다음과 같습니다.

  • 재동기화
  • 사르 / iostat(sysstat 패키지의 일부)
  • setfacl / getfacl(대부분의 관리자는 chmod/chown만 사용하면 된다고 생각합니다)
  • 컬 및/또는 wget
  • iptables
  • 누구 / 마지막 / w

명령줄 닌자

쉘 스크립팅에 대한 확실한 이해는 어려운 일을 빠르고 쉽게 만드는 데 놀라운 역할을 한다고 말하고 싶습니다. 구문을 찾아야 한다면 전혀 검색하지 않을 가능성이 높으므로 미리 아는 것이 중요합니다.

mysqldump예를 들어, 각각 서버로 가져와야 하는 데이터베이스를 나타내는 ".sql" 파일 로 가득 찬 디렉터리가 있다고 가정해 보겠습니다 . 35개 항목을 모두 수동으로 가져오나요? 쉘 스크립팅에 익숙하다면 명령 하나만 입력하고 커피를 마시러 가는 것이 정말 빠르고 쉽습니다.

참고: 가독성을 위해 여러 줄로 나누었습니다. 세미콜론을 그대로 두면 한 줄에 모두 넣을 수 있습니다. 그렇지 않으면 각 줄 끝에 세미콜론이 필요하지 않습니다.

 for FILE in *.sql; do 
   NAME=${FILE%.sql}; 
   mysql -e "create database $NAME"; 
   mysql $NAME < $FILE; 
 done

또한 sed. 어디에서나 정규식을 적용할 수 있는 방법이라고 생각하세요.http://www.grymoire.com/Unix/Sed.html

전화번호를 변경했고 그에 따라 모든 웹페이지를 업데이트해야 한다고 가정해 보겠습니다. (그리고 문제가 발생할 경우를 대비해 백업 복사본을 저장하세요.)

sed -i.bak 's/555-1234/555-4321/' *.html

새로운 작업을 수행하기 위해 기존 도구를 적절하게 연결하는 방법을 아는 것도 정말 도움이 될 수 있습니다. 위와 동일한 작업을 수행해야 하지만 하위 디렉토리 내부도 검색해야 한다고 가정해 보겠습니다.

find public_html -name '*.html' -print0 | xargs -0 sed -i.bak 's/555-1234/555-4321/'

에 대한 경험을 갖는 것도 유용합니다 perl. 이 프로그램을 사용하여 심각한 프로그램을 작성할 필요는 없지만, 많은 작업을 수행 sed하고 awk수행하는 작업을 좀 더 유연하게 수행하도록 설계되었습니다.

Perl은 옵션을 사용하여 명령줄 마법을 수행하는 데 사용할 수 있습니다 -e. -p, -n및 를 사용하면 -i간단한 필터를 빠르게 작성하여 정말 유용한 작업을 수행할 수 있습니다. 예를 들어, 9월에 "/admin.php"에 액세스한 모든 사람의 IP 주소를 찾아야 한다고 가정해 보겠습니다.

perl -ne '
  /([^ ]+).*\[..\/Sep\/2010.*\] "GET \/admin.php / and print "$1\n"' < access_log

보다? 그다지 나쁘지는 않았습니다. 시스템 관리자로서 귀하는 이 작업을 수행하는 방법을 알고 있어야 합니다.

답변3

저는 Linux를 조금 다루는 Windows 관리자이므로 질문에 직접적으로 답변할 수는 없습니다. 그러나 제 생각에는 기본 사항을 제대로 이해한 후에는 OS에 관계없이 관리자가 알아야 할 가장 중요한 한 가지는 다음과 같습니다.어디그리고어떻게답을 찾기 위해.

답변4

당신이 꼭 알아야 할 몇 가지 사항이 있습니다.

쉘에 대해 잘 이해해야 합니다(인수를 구문 분석하는 방법, 와일드카드를 확장하는 방법, 사소한 경우가 있는 경우).

X11을 실행하지 않고도 파일을 편집할 수 있어야 합니다.

파일 시스템을 마운트하고 마운트 해제할 수 있어야 합니다.

새로운 정보를 빠르게 흡수하는 능력이 있어야 합니다. 이는 회사 전체의 서버 팜이 중단되고 조잡한 콘솔 서버(직렬 포트의 "콘솔") 및/또는 매우 느린 VPN 연결(X11 기반 방식도 가능)을 통해서만 액세스할 수 있을 때 필요한 기술이기 때문입니다. 괴로운). 그리고 그런 일이 일어날 것이므로 계획을 세우십시오.

관련 정보