어떤 도구가 있는지 알고
당신은 미리 모든 것을 알 수 없습니다 . 그러나 무엇을 다루어야하는지 알 수 있습니다 . 더 많은 도구를 알수록 더 많이 사용할 수 있습니다. 도구의 기능, 기능 및 도구에 대한 자세한 정보를 찾을 수있는 위치를 알고 있다면 시작하기에 충분합니다.
man페이지에 익숙해 지십시오 . 암기 할 필요는 없지만 원하는 것을 찾을 수있는 곳을 알아야합니다. man주어진 시스템에 설치된 페이지는보고있는 시스템에 해당하는 다양한 특성 또는 버전 별 정보를 반영하므로 페이지는 구문 세부 사항을 찾는 데 Google보다 낫습니다.
apache많이 사용 하는 경우 아파치 구성 구문을 배우는 것이 좋습니다. nginx대신에 사용한다면 그 대신에 배우십시오. 그러나 어느 쪽이든, 당신은 둘 다 무엇이고 어떻게 다른지 알아야합니다.
시스템 도구
어떤 유형의 sysadmin 작업을 수행하든 도움이되는 몇 가지 도구가 있습니다. 당신이 기초를 알고 가정 등 chmod, mount등, 여기에 몇 가지 관리자가 충분히 이해하지 못하는 몇 가지 매우 유용한 도구는 다음과 같습니다 :
- rsync
- sar / 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
보다? 그렇게 나쁘지 않았습니다. sysadmin은이 작업을 수행하는 방법을 알고 있어야합니다.