Self-Improvement

Linux 명령어 (head, tail, wc, su, last[log, b], who, w, ln) 본문

리눅스/명령어

Linux 명령어 (head, tail, wc, su, last[log, b], who, w, ln)

JoGeun 2018. 10. 21. 13:32

*head
#head -10 /etc/passwd : 파일 내용을 10번째 줄까지 출력
#head -숫자 파일  : 숫자는 유동적

//고급 활용 (bashrc 파일 이용)
alias pps='ps -ef | head -1 ; ps -ef | grep $1' 
(bashrc 파일에 내용 저장하고 #. ~/.bashrc, 첫 번째 인자을 출력하는 내용)
#pps syslogd (해당 프로세스를 검색해줌)

*tail
#tail -10 /etc/passwd : 파일 내용을 하위부터 10개의 줄 출력
#tail -f : 실시간 변화에 따른 정보를 출력한다 (모니터링 용도)

//head와 tail 혼합 활용
#cat /etc/passwd | head -20 | tail -10 (20번째 줄까지 출력한 내용 중 뒤에서 10번째 줄까지만 출력 즉 결론은 passwd파일의 10-20줄까지 출력)

//telnet open 하고 난 뒤 tail -f 활용
하나의 터미널에서 #tail -f /var/log/messages 하기
다른 하나에선 useradd , passwd 하고 telnet로 접속하기 그러면 첫 번째 터미널에서 실시간으로 출력됨

//서버를 실기간적으로 모니터링
하나의 터미널 : top   (=#gnome-system-monitor)
다른 하나의 터미널 : tail -f /var/log/messages (=#gnome-system-log)
#tail -f /var/log/messages | egrep -i '(warn|error|crit|alert|emerg)'   =오류만 모니터링
#tail -f /var/log/messages | grep -i DHCP  (DHCP만 모니터링)
#tail -f /var/log/messages | grep -i DNS
등등

//예시해보기
하나의 터미널에 #tail -f /var/log/messages
다른 하나의 터미널엔 #tail -f /var/log/messages | grep -i warn
또 다른 터미널엔 #echo WARN MESSAGES >> /var/log/messages 등 여러 가지해보기

*wc
#wc 옵션 /etc/passwd 
줄(-l) 
단어(-w) 
문자 개수(-c)
ex) #wc -l /etc/passwd: passwd파일의 라인 개수를 출력

//wc -l 활용
#ps -ef | wc -l  : 프로세스 개수
#cat /var/log/messages | grep 'START: telnet' | wc -l 
=텔넷으로 접속한 개수
#df -k / | tail -1 | awk '{print $5}' > df.count 
=첫 번째 줄의 용량을 알려줌

*su
su 사용자 : 가지고 있던 권한(환경 변수)으로 로그인(스위치)
즉 현재 사용자의 환경설정으로 유지하며 해당 사용자로 변경
su - 사용자 : 변경할려는 사용자 권한(환경 변수)으로 로그인(스위치)
즉 변경할려는 사용자의 환경설정으로 사용

*last (/var/log/wtmp을 참조하고 있음) 
사용자의 로그인과 로그아웃 시간 등을 볼 수 있음
-file /var/log/wtmp 하면 data 파일로 나오며 cat으로 볼 수가 있음

//사용 예시
하나의 터미널에서 /test 디렉터리를 생성하고 chmod 777로 바꿔주고     file.log 하나를 생성
그리고 일반 사용자로 로그인하고 해당 디렉터리의 file.log을 rm으로    삭제한다
다시 root로 와서 last | grep 날짜 하고 사용자를 확인하고 
#egrep -l 'file.log' /home/*/.bash_history
#egrep 'file.log' /home/fedora/.bash_history

*lastlog (/var/log/lastlog을 참조)
사용자들의 마지막 로그인한 기록
#lastlog -t 2 : 2일 안의 로그인한 기록

*lastb (/var/log/btmp)
로그인에 실패한 기록
#lastb

//사용 예제
user01이라는 사용자를 생성한 뒤 ssh로 user01 로그인 과정에서 비밀번호를 틀린다
root로 lastb로 확인한다

*who (/var/run/utmp)
로그인 중인 사용자들을 출력
#who

*w
로그인한 사용자가 어떤 명령어를 실행하고 있는지 알아보는 명령어
#w

//사용 예시
하나의 터미널에선 ssh로 fedora로 접속 다른 터미널에선 telnet로 
user01로 접속 
다른 터미널에선 root로 w , last, who 등으로 확인하고 user01을 감시 모니터링을 해보자
#w user01을 계속해야 하므로 #while true ; do ; w user01 ; sleep 2 ;   done 하면 반복적으로 가능해짐
더 깔끔하게 보기 위해 #while true ; echo "------`date`-----" ; w user01 ; sleep 2 ; done 하면 깔끔해짐
악의적인 사용자면 #ps -u user01 하고 해당 쉘을 kill 하면 됨

*ln (링크)
#ln : 하드 링크 (원본 삭제 시 링크 걸려있는 파일에 영향 x, 아이 노드 같음, 파일시스템(c: > d:)을 넘어 링크 불가능, 디렉터리는 링크 x , 원본과 링크 파일의 크기는 같다)
#ln -s : 심벌릭 링크 (원본 삭제 시 링크 걸려있는 파일에 영향 o, 아이 노드 다름, 파일시스템을 넘어서 링크 가능, 디렉터리 링크 가능, 원본과 링크 파일 크기는 다르다)

//파일과 디렉터리 링크
파일의 기본 링크 개수는 1개
디렉터리는 기본 링크 개수 2개(해당 디렉터리 안에 있는. 과 ..을 포함해서)

*장치 파일 (추후 자세히)
-블록 장치 파일
-캐릭터 장치 파일