만화로 배우는 리눅스 시스템 관리 1 - Piro 지음, 서수환 옮김/길벗 |
만화로 되어 있어서 가독성이 매우 좋았다.
그래서 기술적인 내용이 나와도 큰 어려움 없이 이해할 수 있었다.
명령어에 익숙해지는 것은 리눅스를 더 만져봐야겠지만
이 책으로 인해 리눅스에 자신감이 생긴 것은 확실하다.
한권이 더 있는데, 그것도 추후에 마져 봐야겠다.
1화 다른 컴퓨터를 리모트로 조작하고 싶어(SSH)
X사용하기 : 리눅스(우분투) GUI 띄우기
ssh -Y -C user@192.168.11.5
-Y는 X 전송지정
-C는 통신내용 압축(응답속도가 좋아짐)
nautilus 명령어
-> 폴더가 열림
SSH(Secure SHell;안전한 셸) = rsh(Remote SHell)
2화 임시로 관리자 권한을 얻고 싶어(sudo)
root 관리자 권한 -> id가 정해져 있어서 보안 상 사용을 권장하지 않음.
대신에 일반관리자를 사용함. root에서 계정에 관리자 권한을 부여할 수 있음
혹은 sudo 명령어를 이용하여 관리자 권한으로 실행이 가능함
3화 다양한 문자열을 한 번에 검색하고 싶어(grep)
grep 검색 명령어
grep-r "검색하고 싶은 문자열" /hoe/docs/
-r은 서브 폴더까지 검색하도록 지정한 옵션
grep은 golbal regular expression print가 어원.
정규표현식에서 쓰는 기호
() 그룹화
| 좌우중 하나
? 직전 표현이 0회 또는 1회 등장
* 직전 표현이 0회 이상 연속해서 등장
+ 직전 표현이 1회 이상 연속해서 등장
. 임의의 한 문자
^ 줄 머리
$ 줄 끝
grep의 그외 옵션
-i 대소문자를 무시 (ignore case)
-E 정규표현식 사용
4화 터미널에서도 대화형으로 파일을 편집하고 싶어(vim)
Esc 노멀모드로 복귀
:wq 쓴 글 적용
/ 검색모드 (검색시 정규표현식도 사용가능)
n 다음 검색
Shift + n 이전 검색
치트시트 http://vim.rtorr.com/lang/ko/
5화 vim에서도 복사 & 붙이기 & 되돌리기를 하고 싶어(yank)
복사
v 비주얼 모드(복사가능)
비주얼 모드에서 커서로 범위를 정한다.
y 양크(yank: 끌어당기다) - 클립보드에 텍스트 복사
붙여넣기
shift + p 붙여넣기
10 shift + p 붙여넣기 (지정한 숫자 만큼 붙여넣기가 가능함)
되돌리기(undo)
u
9999 u : 처음으로 되돌리기 (숫자를 지정한 만큼 되돌아간다)
되살리기(redo)
Ctrl + R
crtl + z : 애플리케이션 일시 중지 (background;대기상태로)
fg : 애플리케이션 복귀(foreground;포그라운드)
6화 갑작스러운 네트워크 끊김에서 복귀하고 싶어(가상 터미널)
tmux : 가상 단말 프로그램 ( 다른 종류도 있다.
screen:가장 오래된 가상 단말. 사용법이 조금 어렵다.
byobu:병풍에서 유래한 이름. 사용이 용이하지만, 다른 애플리케이션에 영향을 많이 준다.)
-> 명령어를 찾지 못할 경우 sudo apt-get install tmux로 사용가능
-> yum의 경우 RPMForge 저장소를 사용해야 함
tmux attach : 복귀 명령어
Ctrl + b : tmux 기능 호출 키
d : detach
c : create, 새 탭 열기
p : previous, 이전 탭
n : next, 다음 탭
7화 다른 화면도 보면서 작업하고 싶어(화면 분할)
ctrl + b
" 가로 분할
% 세로 분할
방향키를 이용해서 화면이동 가능
(화면 안에서 추가로 분할도 가능. 이때 현재 커서가 있는 화면이 분할 됨)
8화 최근 실행한 명령어를 호출하고 싶어(명령어 이력)
위 방향키 : 예전이력
아래 방향키 : 최신이력
ctrl + r : 이력 검색(후방검색)
ctrl + s : 이력 검색(전방검색)
전방검색은 별도의 설정이 필요함. vim ~/. bashrc 에서 bash설정을 수정함.
shift + g(맨 밑으로 이동)를 입력하여 하단에 stty stop undef 를 추가
-> 설정을 변경한 후에는 접속을 끊고 재접속을 해야 반영이 됨.
-> 가상 단말은 반영이 늦다. 빠르게 반영될 수 있도록 반영빈도를 고쳐야 한다.
9화 오래전에 실행한 명령어를 호출하고 싶어(명령어 이력 검색)
이력 저장 건수 변경
vim ~/. bashrc 에서 맨 밑으로 이동해서,
export HISTSIZE=10000
export HISTFILESIZE=10000
을 입력. 중요한 것은 두 변수의 값이 동일해야 한다는 것.
.bash_history 명령어 이력 내용 저장 파일
설정파일에 다음 내용을 추가(메모리 복사본을 자주 동기화)
function share_history{
history -a
history -c
history -r
}
PROMT_COMMAND='share_history'
shopt -u histappend
셸명령어가 하나일 때 쉽게 처리하는 방법
mint@mintpc:~$ ssh mint@server /scripts/scripts/do_backup.sh
10화 네트워크 건너서 파일을 복사하고 싶어(scp)
Centos 등의 배포판에서는 yum install openssh-clients로 설치해야 함
scp ./file/ext mint@192.168.1.10:/tmp/ 특정 컴퓨터에 파일 복사 가능
scp mint@192.168.1.10:/temp/file/txt 역으로도 가능함.컴퓨터의 파일을 다운로드
scp -r mint@host:/tmp/results/ /tmp/
-r 옵션을 사용하면 디렉토리째로 복사가 가능함.
응용하여 서버끼리도 파일전송이 가능함
또 다른 PC에서 중계하여 서버-> PC -> 서버로 넘기는 것도 가능함. 다만 속도가 느림.
11화 시스템 과부하를 파악하고 싶어(top)
top 명령어로 리눅스 서버의 상태를 볼 수 있다.
load average : cpu가 처리하는 걸 기다리는 작업 개수
(0.1~0.2은 처리량이 적고, CPU 코어수와 같거나 크면 많은 것임)
(또한 1분간 평균, 5분간 평균, 15분간 평균 이렇게 3종류로 출력됨)
%cpu 프로세스의 cpu점유율
+time 처리시간
command 프로세스를 실행했을 때 실행한 명령어, 자세히 보려면 c를 누른다.
sudo kill 1234 로 프로세스를 죽일 수 있음, 1234는 pid(프로세스id)를 의미함
-> 복수개의 프로세스를 죽일 시에는 뒤에 프로세스 id를 추가로 적어줌
12화 시스템 메모리 부족을 파악하고 싶어(top 표시 전환)
cpu문제가 아닌 경우
디스크 I/O 문제 : swap값이 큰 경우
%MEM : 프로세스가 소비하는 메모리량.
OOM Killer : 메모리 사용이 지나친 경우 리눅스에서 자체적으로 프로세스를 죽임
top 표시를 소비 메모리 순서대로 나열하기
shift + m : 메모리 소비량으로 정렬(큰 값이 먼저 보임)
shift + t : cpu 시간으로 정렬
shift + p : cpu 사용량으로 정렬
13화 로그 파일에서 필요한 줄만 뽑고 싶어(파이프라인)
파이프라인은 | 이런 문자를 말하는데, 명령어와 명령어를 연결하는 역할을 한다.
압축풀기 명령어들
cat : 비압축 텍스트
zcat : gzip용 압축풀기(.gz, .tgz)
xz : xz 파일 압축풀기
unzip : zip파일 압축풀기
tail -F access.log : 최신 로그 조회
Ctrl + c : tail 출력 중단
tail -F access.log | grep "/retro" | grep -v "/live" : 특정 조건으로 조회
cat 명령어(catenate;연결하다에서 유래) : 여러개의 파일을 한번에 출력해서 봄.
tcat : 역순으로 출력
14화 작업 절차를 자동화하고 싶어(셸 스크립트)
#!bin/bash :셔뱅(shebang, Hash-Bang), bash용 스크립트라는 의미
다른 스크립트들(bash, zsh, perl, python, node, ruby)
chmod +x x setup.sh : 실행권한 설정
if [ $? != 0]; then exit; fi : 에러시 중단하는 명령어
15화 같은 문자열을 스크립트에서 재사용하고 싶어(셸 변수)
%s/원문/수정문 : vim에서 치환명령어
log=/ver/log/apache2/access.log : 변수에 값 지정 하기
$log : 변수 호출
tar_extact="tar xfv"
eval "$tar_extact file.tar.gz" : 변수에 명령어 지정 가능
스크립트의 각줄이 너무 긴 것보다는 80자 이내가 되도록 하는 게 매너라고 함.(가독성차원)
16화 작업 환경과 상태를 정해서 스크립트를 실행하고 싶어(환경 변수)
env : 현재 사용가능한 환경변수 목록
HOME 현재 사용자의 홈 디렉토리
PWD 현재 디렉터리 작업 디릭터리
EDITOR 정해진 텍스트 에디터 경로 (vim)
PAGER 정해진 페이지 경로
USER 현재 사용자의 사용자명
GROUP 현재 사용자의 그룹명
HOSTNAME 머신의 호스트명
$(date +%y%m%d) -> 160622
$(date +%Y-%m-%d) -> 2016-06-22
명령어 중첩
$(명령어$(명령어))
17화 로그 파일에서 필요한 줄만 뽑고 싶어(cut)
cat /var/log/apache2/access.log | grep -v "/live" l cut -d " " -f 7 | less
cut은 넘어온 값을 구분자
(-d 옵션에 지정한 문자, 옵션을 지정하지 않으면 기본 구분자로 탭문자 사용)로 분할 함
-f 옵션으로 숫자로 지정한 문자만 모아서 표시한다.
18화 같은 내용의 줄을 세어보고 싶어(sort와 uniq)
uniq -c
uniq는 중복을 제거함을 의미.
-c는 -count 옵션과 같다.
sort
오름차순 : 작은 것부터 시작해서 마지막에 가장 큰 것이 온다.
내림차순 : 큰 것부터 시작해서 마지막에 가장 작은 것이 온다.
즉 값이 커지는가가 기준이 됨. 값이 커지면 오름차순, 작아지면 내림차순
sort --reverse -r :내림차순
tail -n +6 6번째 이후부터 출력
tail -n -5 뒤에서 5줄을 제외한 나머지 출력
head -n 5 앞에서 5줄째부터 출력
tail -n 5 뒤에서 5줄째부터 출력
19화 CSV 파일을 열의 내용에 따라 정렬하고 싶어(sort와 리다이렉트)
sort
--field-separator 구분자지정
-t 구분자지정
--key 열번호 지정
-k 열번호지정
--number 숫자정렬
-n 숫자정렬
--ignore-leading-blanks 스페이스무시
-b 스페이스무시
> : 리다이렉트, 명령어 실행결과를 파일로 저장함
명령어 > /tmp/retro-access.log
20화 명령줄 지정으로 작업 내용을 바꾸고 싶어(명령줄 인수)
인수값설정
첫번째 인수: $S1
두번째 인수: $S2
세번째 인수: $S3 ...
#옵션 이름으로 값 받는 방법
while getopts b:n:p:o: OPT
do
case $OPT in
b) base="SOPTARG" ;;
n) next="SOPTARG" ;;
p) previous="SOPTARG" ;; #-p 값을 previous로 참조가능
o) output="SOPTARG" ;;
esac
done
21화 조건에 따라 처리 흐름을 바꾸고 싶어(조건 분기)
if [ $# = 2 ]
then
echo "hello!"
fi
#각각을 인수로 인식함으로 붙여쓰기하지 말고 띄어쓰기 해야 함
22화 명령어 이상 종료에 대응하고 싶어(종료 상태)
$? #직전 명령어의 성공여부를 확인할 수 있는 변수, 0이 나오면 정상종료이며, 0이 아니라면 오류임.
#일반적인 오류는 1로 표시하며, 프로그램에 따라 0~255까지의 오류 변수가 나올 수 있음.
23화 같은 처리를 반복해서 실행하고 싶어(for)
for filename in *.log \
*.txt
do
./create-report.sh $filename
done
echo "호걸입니다"
'주경야독' 카테고리의 다른 글
[건강] 치유본능 (0) | 2017.11.18 |
---|---|
[에세이] 토머스 머튼의 장자의 도 (0) | 2017.11.16 |
[소설] 침묵 - 엔도 슈사쿠 (2) | 2017.10.16 |
[OS/리눅스] 만화로 배우는 리눅스 시스템 관리 2 (0) | 2017.10.14 |
[문학] 구스코 부도리의 전기 (0) | 2017.09.18 |
[독서리뷰] 블리자드의 12가지 성공 법칙 - 블리자드 퀀텀점프 (0) | 2017.09.15 |
[컴퓨터게임] 게임 디자인 원론 1 (0) | 2017.09.14 |
[신화] 아프리카 신화 (0) | 2017.09.13 |
댓글