Self-Improvement
Linux 명령어 (head, tail, wc, su, last[log, b], who, w, ln) 본문
*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개(해당 디렉터리 안에 있는. 과 ..을 포함해서)
*장치 파일 (추후 자세히)
-블록 장치 파일
-캐릭터 장치 파일
'리눅스 > 명령어' 카테고리의 다른 글
Linux 명령어(grep, egrep, fgrep, find) (0) | 2018.10.21 |
---|---|
Linux 명령어(mail, wall, cmp, diff, sort, du, file) (0) | 2018.10.21 |
Linux 명령어(chown, chgrp, chmod, umask, SetUID[GID], StickBit) (0) | 2018.10.21 |
Linux 명령어(uname, date, rdate, PS1, cal, ls, rmdir, touch, cp, scp) (0) | 2018.10.21 |
Linux 기초, man (0) | 2018.10.21 |