리눅스 기초과정 정리
----------------------
■ 리눅스 선수 지식
----------------------
1. 런레벨(Runlevel)
런레벨 의미?
런레벨 종류
0 : halt
1 : single user mode
2 : multi user mode without NFS
3 : multi user mode with NFS (TUI)
4 : not defined
5 : multi user mode with NFS (GUI)
6 : reboot
런레벨 확인
# who -r (# runlevel)
런레벨 변경
# init 0 (# shutdown -h now, # poweroff)
# init 6 (# shutdown -r now, # reboot)
(GUI -> TUI) # init 3 (# telinit 3)
(TUI -> GUI) # init 5 (# telinit 5)
2. 로그인/로그아웃
(GUI) 로그아웃 아이콘 선택(< CTRL + ALT + <- >)
(TUI) # exit (# logout, <CTRL + D>)
3. 패스워드 변경 방법
# passwd [사용자]
[참고] 패스워드 복구 방법
4. 제어 문자(Control Character)
<CTRL + C>
<CTRL + D>
[참고] <CTRL + U>, <CTRL + W>, <CTRL + S, CTRL + Q>
---------------------------
■ 리눅스 기본 명령어
---------------------------
1. 운영체제 기본 정보 확인 명령어
uname CMD
# uname -a
# cat /etc/redhat-release
date CMD
# date
# date 08301300
# rdate -p time.bora.net (-p : peer)
# rdate -s time.bora.net
[참고] time-dgream, time-stream
# chkconfig --list | grep time
# date +%m%d (# date --help)
cal CMD
# cal
# cal 2002
# cal 8 2002
2. 디렉토리 이동 관련 명령어
pwd CMD
# pwd
[참고] PS1 변수(~/.bashrc)
PS1='[\u@\h:\w]\$ ' ; export PS1
cd CMD
경로(PATH)
- 절대경로(EX: # cd /dir1)
- 상대경로(EX: # cd dir1)
[참고] 사용자 홈디렉토리 이동
# cd
# cd ~ (EX: # vi ~/.bashrc)
# cd ~fedora
[참고] 실무 예
# cd -
# cd ../dir1
[참고] ssh CMD
# ssh 172.16.9.XXX
# ssh root@172.16.9.XXX
3. man & passwd 명령어
man CMD
# man ls
# man -k calendar (# apropos calendar)
# whatis passwd (# whereis passwd)
# man -s 5 passwd
[참고] 매뉴얼 페이지를 문서화 하기
# man ls | col -b > ls.txt
passwd CMD
# passwd
# passwd fedora
4. 디렉토리 관리 명령어
ls CMD
# ls -l dir1
# ls -ld dir1
OPTIONS: -a, -l, -d, -R, -F, -i, -t, -r, -h
# ls ?altr - 가장 아래있는게 가장 최근 ex)log파일
# ls ?altr /tmp
# ls -altr /var/log
mkdir CMD
# mkdir dir1
# mkdir dir1 dir2
# mkdir -p dir1/dir2/dir3
rmdir CMD
# rm file1
# rm file1 file2
# rm -rf dir1
5. 파일 관리 명령어
touch CMD
# touch file1
# touch file1 file2
# touch -t 04111300 file1 - 시간변경
[참고] # stat file1
cp CMD
# cp file1 file2
# cp file1 dir1
# cp -r dir1 dir2
OPTIONS: -a, -i, -p, -r
[참고] 디렉토리 마이그레이션(/test1/* -> /test2)
# cp -a /test1/* /test2
mv CMD(rename)
# mv file1 file2
# mv file1 dir1
# mv dir1 dir2
OPTIONS: -i
rm CMD
# rm file1
# rm file1 file2
# rm -rf dir1
OPTIONS: -i, -r, -f
[참고] # debugfs /dev/sda1 ? rm명령어로 지운 파일 복구할 경우 사용
[참고] # find /LOG_DIR -name "*.log" -type f -exec rm {} \;
6. 파일 내용 확인 명령어
cat CMD
# cat file1
# cat file1 file2
# cat file1 file2 > file3
# cat -n file1 (# nl file1)
# cat /etc/passwd | grep root
[참고] # strings -f /bin/ls
more/less CMD
# cat /etc/services
# more /etc/services
# CMD | more
# cat /etc/services | more
# ps -ef | more
# rpm -qa | more
nl CMD
# cat -n /etc/passwd
# nl /etc/passwd
# nl /root/source/C/mon.sh
head CMD
# head /etc/passwd
# head -5 /etc/passwd (# head -n 5 /etc/passwd)
# ps aux | head
# alias pps='ps -ef | head -1 ; ps -ef | grep $1' - 헤드라인과 나머지 부분출력
# alias pps='ps aux | head -1 ; ps aux | grep $1'
# pps xinetd (# pps syslogd)
tail CMD
# tail /etc/passwd
# tail -5 /etc/passwd (# tail -n 5 /etc/passwd)
# tail -f /var/log/messages
[참고] telnet 서비스 Open 방법
# chkconfig --list krb5-telnet
# chkconfig krb5-telnet on
# service xinetd restart
# telnet localhost
user01 사용자 로그인
-> root 사용자는 로그인이 가능하지 않음
# vi /etc/securetty
......
pts/1
pts/2
.....
pts/11
-> root 사용자로 로그인이 가능한 상태
7. 기타 관리용 명령어
wc CMD
# wc /etc/passwd
# wc -l /etc/passwd
# wc -w /etc/passwd
# wc -c /etc/passwd
# CMD | wc -l
# cat /etc/passwd | wc -l
# ps -ef | wc -l
# rpm -qa | wc -l
[참고] /test1/*(3TB) ----> /test2/*
# ls -lR /test1 | wc -l
# ls -lR /test2 | wc -l
[참고] 데이터 수집(Data Gathering)
# ps -ef | grep httpd | wc -l >> web.log
# df -h / | tail -1 | awk '{print $5}' >> disk.log
# cat /var/log/messages | grep telnet | wc -l
su CMD
# su user01
# su - user01 (# telnet localhost)
id CMD
# id
# id user01
groups CMD
# groups
# groups fedora
# groups fedora user01
last CMD ? 사용자의 로그인,로그아웃정보
# last
# last fedora
# last -20 (# last | head -20)
[참고] # cd /var/log ; last -f wtmp.1
[참고] $HOME/.bash_history
lastlog CMD ? 사용자의 마지막 로그아웃 시간
# lastlog
# lastlog -u fedora
# lastlog -t 7
lastb CMD ? 실패한 로그인
# lastb
# lastb -7 (# lastb | head -5)
# lastb | grep fedora (# lastb | grep fedora)
who CMD
# who
# who ?H
# who am i
# whoami
# who -r
w CMD
# w
# w user01
# while true
do
CMD
sleep 2
done
[참고] "watch CMD" (EX: # watch w user01)
8. 파일 종류
일반 파일
디렉토리 파일
링크 파일
하드 링크 파일 (# ln file1 file2)
심볼릭 링크 파일(# ln -s file1 file2)
장치 파일(디바이스 파일)
블럭 장치 파일 (# ls -l /dev | grep '^b')
캐릭터 장치 파일(# ls -l /dev | grep '^c')
9. 파일의 속성 정보 변경
chown CMD
# chown user01 file1
# chown user01:staff file1
# chown user01.staff file1
# chown .staff file1
# chown -R user01:staff dir1
chgrp CMD
# chgrp staff file1 (# chown .staff file1)
chmod CMD
퍼미션 변경 방법
- 심볼릭 모드(# chmod u+x file1)
- 옥탈 모드 (# chmod 755 file1)
파일 & 디렉토리 퍼미션 의미
file ( r / w / x )
direcotry ( r / w / x )
umask CMD
(root) /etc/bashrc
(user) $HOME/.bashrc
특수퍼미션(SetUID/SetGID/Sticky Bits)
SetUID/SetGID 의미?
Sticky Bits 의미?
특수퍼미션 설정
# chmod 4755 file1
# chmod 2755 file1
# chmod 1777 dir1
특수퍼미션 관리
# find / -perm -4000 ?type f > setuid.list
# find / -perm -2000 ?type f > setgid.list
# find / \( -perm -4000 -o -perm -2000 \) -type f
10. ACL(Access Control List)
getfacl CMD
# getfacl file1
# getfacl file1 file2
setfacl CMD
# setfacl -m u:user01:7 file1
# setfacl -m g:class1:7 file1
# setfacl -m u:user01:7,g:class1:7 file1
# getfacl file1 > file.acl
# setfacl --set-file=file.acl file2
# setfacl -x u:user01 file1
# setfacl -x g:class1 file1
Default ACL
11. Visual Editor(vi, vim)
VIM 편집기의 환경 파일
: set all
: set number (: set nu)
: set nonumber(: set nonu)
$HOME/.vimrc
- set number (set nu)
12. 사용자와 통신할 때 사용하는 명령어
mail/mailx CMD
# mail admin@example.com
# mail -s "linuxXXX: OK" admin@example.com < report.txt
# mail
# mail -u user01
talk CMD
# talk user01
# talk user01 pts/5
[참고] talk 서비스 open 하는 방법
# yum -y talk-server install
# chkconfig ntalk on
# service xinetd restart
# talk user01 [pts/5]
[참고] 서비스 설정 툴 종류
# chkconfig --list ntalk ; chkconfig ntalk on
# ntsysv (# setup)
# system-config-services (# serviceconf)
wall CMD
# wall "Messages"
# wall < /etc/hosts
13. 자주 사용되지 않지만 유용한 명령어
cmp/diff CMD
# cmp file1 file2
# diff file1 file2
# diff -c file1 file2
# diff -i file1 file2
# diff --recursive dir1 dir2
sort CMD
# CMD | sort
# CMD | sort -k 3
# CMD | sort -k 3 ?r
# CMD | sort -k 3 -nr
# cat /etc/passwd | sort -t : -k 3 -n
# ps -ef | sort -k 2 -n
# df -h
# du -sk /var
# cd /var ; du -sk * | sort -nr | more
file CMD
# cd /etc ; file *
14. 검색 관련 명령어
grep CMD
grep OPTIONS PATTERN file1
OPTIONS: -l, -n, -v, -c, -i, -w
PATTERN: * . ^root root$ [abc]
# grep root /etc/passwd
# CMD | grep root
# cat /etc/passwd | grep root
# ps -ef | grep xinetd
# rpm -qa | grep ssh
[참고] egrep CMD
# cat /var/log/messages | egrep '(warn|err|crit|alert|emerg)'
find CMD
# find / -name core -type [f|d]
# find / -user fedora -group fedora
# find / -mtime [-7|7|+7]
# find / -perm [-755|755]
# find / -size [-300M|300M|+300M]
# find / -name core -type f -exec rm {} \;
# find / -name file1 -type f -ls
# find / -name core -type f -ok CMD {} \;
15. 아카이빙 & 압축 ? 압축 푸는방법 위주로 기억
gzip/gunzip CMD
# gzip file1
file1.gz
# gunzip -c file1.gz
# gunzip file1.gz
[참고] 확장자가 잘못된 경우
# ls
file1.zip (gzip compressed)
# unzip file1.zip
# file file1.zip
# mv file1.zip file1.gz
# gunzip file1.gz
[참고] # gzip -r dir1
# gunzip -r dir1
bzip2/bunzip2 CMD
# bzip2 file1
file1.bz2
# bunzip2 -c file1.bz2
# bunzip2 file1.bz2
tar CMD
# tar cvf file.tar file1 file2 file3
# tar tvf file.tar
# tar xvf file.tar
# tar cvzf file.tar.gz file1 file2 file3
# tar tvzf file.tar.gz
# tar xvzf file.tar.gz
# tar cvjf file.tar.bz2 file1 file2 file3
# tar tvjf file.tar.bz2
# tar xvjf file.tar.bz2
16. 배쉬쉘의 특징
쉘의 특징
- 명령어 해석기(Command interpreter)
- 프로그램 기능(Programable Language)
(ㄱ) 리다이렉션(Redirection)
(선수지식)
------------------------
fd
------------------------
0 표준입력(stdin)
1 표준출력(stdout)
2 표준에러(stderr)
------------------------
입력 리다이렉션(Redirection stdin)
# CMD < file1
# CMD 0< file1
# mail -s "linux200: OK" admin < report.txt
# wall < Message.txt
출력 리다이렉션(Redirection stdout)
# CMD > file1
# CMD 1> file1
# CMD >> file1
# CMD 1>> file1
# find / -perm -4000 -type f > SetUID.list
# rpm -qa > rpm.list
# man ls | col -b > ls.txt
Redirection stderr
# CMD 2> file1
# CMD 2>> file1
# script.sh > file.log 2>&1
$ find / -name core -type f 2>/dev/null
# ./configure --prefix=/usr/local/apache > apache.log 2>&1
(ㄴ) 파이프(Pipe)
CMD | CMD
# CMD | more
# CMD | grep inetd
[참고] |(Pipe) & > (Redirection)
# ps -ef | grep xinetd
# ps -ef > file.log (# grep xinetd file.log)
[참고] tee CMD
# CMD > file.log
# CMD | tee file.log
# while
do
CMD | tee file.log
sleep 2
done
# script -a /dev/null | tee /dev/pts/3 | tee /dev/pts/4
(ㄷ) 배쉬쉘의 기능(Bash function)
# set -o
# set -o vi
# set +o vi
# set -o ignoreeof
# set -o noclobber
# set -o vi
(ㄹ) <TAB> & <↑>
파일 이름 자동 완성 기능
# /etc/sysco<TAB>
# /etc/sysconfig/netw<TAB>
# /etc/sysconfig/network-s<TAB>
# /etc/sys<TAB><TAB>
# /etc/sysco<TAB>
명령어 종류 확인
# ch<TAB><TAB>
# get<TAB><TAB>
# gnome-<TAB><TAB>
# gnome-system-<TAB><TAB>
# system-config-<TAB><TAB>
# mkfs.<TAB><TAB>
# fsck.<TAB><TAB>
명령어 목록 확인
# cd /test/<TAB><TAB>
# cd /etc/<TAB><TAB>
이전 명령어 되살려서 사용하기(편집)
# <↑><↑><↑>
# find / -name core -type f
<CTRL + C>
#
<↑>
# find / -name file1 -type f
# df -h
# df -h /
# df -h /
# df -h / | tail -1
# df -h / | tail -1 | awk '{print $5}'
# cd /var
# du -sk *
# du -sk * | sort
# du -sk * | sort -n
# du -sk * | sort -nr
# du -sk * | sort -nr | more
# ps -ef
# ps -ef | head
# ps -ef | head | sort -k 2 -n
# ps -ef | head | sort -k 2 -nr
# cat /var/log/messages
# cat /var/log/messages | grep 'Apr 22'
# cat /var/log/messages | grep 'Apr 22:15:'
# cat /etc/services
# cat /etc/services | more
# cat /etc/services | wc -l
# cat /etc/services | cat -n
(ㅁ) 변수(Variable)
변수의 종류
- 지역변수
- 환경변수
- 특수변수($$, $?, $!, $1, $2, $3, ....)
변수 선언 방법
# VAR=5 (# export VAR=5)
# export VAR
# echo $VAR (# print $VAR)
# unset VAR
변수 export 의미?
시스템 환경 변수(set/env)
PS1 변수(EX: # export PS1='[\u@\h:\w]\$ ')
PS2 변수
HOME 변수
PWD 변수
LOGNAME 변수
PATH 변수
(ㅂ) 히스토리(History)
HISTSIZE/HISTFILE/HISTFILESIZE 변수
-> /etc/profile, $HOME/.bash_profile
$HOME/.bash_history
# history
# history -10
(ㅅ) &&, ||, ;
# cd /test ; rm -rf *
# cd /test && rm -rf *
# [ -f /etc/profile ] && . /etc/profile || echo "Not Found"
if [ -f /etc/profile ] ; then
. /etc/profile
else
echo "Not Found"
fi
(ㅇ) 환경파일
사용자 로그인시 실행
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
쉘이 실행될 때 마다 실행
~/.bashrc
/etc/bashrc
/etc/profile.d/*.sh
사용자 로그아웃시 실행
~/.bash_logout
17. 프로세스 관리
프로세스 정보(/proc/PID)
PID/PPID
프로세스 관리
프로세스 실행
(fg) # ls
(bg) # ls &
[참고] fg/bg/jobs/<CTRL + Z>/kill %1
프로세스 확인
# ps aux | grep xinetd
# ps -ef | grep xinetd
# ps
# ps ?l
# ps ?f
# ps ?u user01
# ps -t pts/4
프로세스 종료
# kill PID
# kill PID PID
# kill -9 PID
# kill -1 PID (# kill -HUP PID)
# kill -2 PID (# kill -INT PID)
# kill -9 PID (# kill -KILL PID)
# kill -15 PID (# kill -TERM PID)
[참고] killall CMD
[참고] 시스템 자원 모니터링
# top
# free
# /usr/bin/baobab
# /usr/bin/xload
# /usr/bin/gnome-system-monitor
# /usr/bin/gnome-system-log
top CMD
서버 접속시 실행 프로그램
[TERM1] # top
[TERM2] # tail -f /var/log/messages
# top (sort : Mem, cPu)
# top -u oracle/wasuser
# top -p PID,PID,PID
lsof CMD ? 프로세서가 열고 있는 파일 목록
# lsof
# lsof -i /* 소켓 상태 정보 확인 */
# lsof -i@172.16.9.252
# lsof -p PID
# lsof -c sendmail
pmap CMD ? 메모리 올라있는 파일 확인
# pmap PID
pstree CMD
# pstree
# pstree PID
nice/renice CMD
nice CMD
# nice -(-20 ~ 19) CMD
renice CMD
# renice (-20 ~ 20) PID
[참고] 실무예
# nice -10 backup.sh &
# renice 10 PID
18. 원격접속 & 파일전송
ssh CMD
# ssh S
# ssh fedora@S
# ssh S CMD
# ssh S hostname
scp CMD
# scp file1 S:/test (# scp -P 22 file1 S:/test)
# scp file1 fedora@S:/test
# scp S:/test/file1 /tmp
# scp fedora@S:/home/fedora/file1 /tmp
# scp -r dir1 S:/tmp
sftp CMD
# sftp S
# sftp fedora@S
sftp> mget/mput
sftp> ls
sftp> !ls
sftp> quit
'Learning > └Essential & Admin' 카테고리의 다른 글
xinetd & standalone Service Type (0) | 2016.11.05 |
---|---|
문서정리 Linux_ServerAdmin (0) | 2016.11.05 |
Linux_ServerAdmin (12) 백업 과 복구 (0) | 2016.11.04 |
Linux_ServerAdmin (11) 스케줄링 관리 (0) | 2016.11.04 |