리눅스 서버를 운영할때 생각보다 명령어 사용을 자주 사용하는경우가 많다. 특히 자주 사용하는 명령어들의 경우 서로 연관되는 경우가 많고, 리눅스 서버 관리나 서버프로그래밍을 한다면 더욱 필요하다.
윈도우 서버와는 다르게 리눅스 서버는 GUI방식보다는 터미널 환경에서 작업을 많이 하기 때문에 명령어 사용법에 대해서 보다 자세히 익숙해질 필요가 있다. 어떤 명령어들이 있는지 한 번 알아보자.
1. 시스템 명령어
w
시스템운영시간, 날짜, 서버부하, 로그인 사용자 확인
stat
파일이나 시스템 상태를 출력
-c %w : 최초 만들어진 날짜 출력
-c %x : 마지막 엑세스 날짜 출력
-c %y : 마지막 수정된 날짜 출력
-c %z : 마지막 변경돈 날짜 출력
crontab
정기적으로 설정된 명령을 실행. 예약스케쥴러 설정
crontab -e 편집으로 실행
dmesg
커널 시스템 메시지 확인
dmesg
dmesg -c (메세지 내용 지우기)
date
현재 날짜를 출력
date
date +%Y 현재 년도 출력 (참고로 +%Y 앞에 빈공간 있어야 한다.)
date +%m 현재 달 출력
date +%d 현재 일자 출력
cal
현재 달력을 출력
-y : 년도
-m : 월
cal
cal -y 1993 1993년도 달력 출력
cal -m 7 7월 달력 출력
time
현재 시간을 출력
uname
커널 버전을 표시
uname -a
uname -mrs
cat /proc/version
lsb_release
배포한 리눅스 버전을 표시
lsb_release
lsb_release -a
cat /etc/*-release
hdparm
하드디스트 검사
hdparm -T /dev/sda
hdparm -Tt /dev/sda
iostat
시스템의 자원 사용율을 보여준다.
iostat -d 디스크의 속도
iostat -c CPU의 이용
pvscan
물리적인 볼륨을 스캔
PV /dev/sdb1 VG Secondary lvm2 [1.82 TiB / 0 free]
PV /dev/sda1 VG Primary lvm2 [1.82 TiB / 0 free]
blkid
디바이스 정보를 출력한다.
암호화된 볼륨등을 확인 할 수 있다.
clear
터미널의 창을 깨끗히 지우는 명령어
su
User 변경을 하기위한 명령어
halt
시스템 종료
reboot
시스템을 끄거나 리부팅
shutdown
시스템을 종료하거나 리부팅할때사용..
shutdown -r now 즉시 리부팅
adduser
사용자 계정을 추가
passwd
패스워드 입력 및 변경
userdel
사용자 계정 삭제
who, w, whoami, who am i
현재 로그인한 사용자들을 보고자할때 사용하는 명령어
free
스왑영역,램 사용량과 남은 용량을 표시
which
명령어의 위치를 출력
whereis
명령어의 실행파일 경로 및 소스 메뉴얼 페이지 파일의 경로를 출력
whatis
명령어의 기본 기능을 출력
ps
현재 실행중인 프로세스 출력
finger
시스템유저들에 대한 정보를 출력
2. 권한 명령어
chown
사용자 권한을 지정
-R daemon.daemon [디렉토리명]
-R 옵션은 해당 디렉토리와 내부의 모든 디렉토리 및 파일에 적용하는 옵션
chmod
파일의 권한(rwx)을 지정
숫자로 지정시 첫번째 숫자는 유저, 두번째 숫자는 그룹, 세번째 숫자는 나머지의 권한을 뜻한다.
알파벳으로 지정시 -, + 기호를 사용하여 해당 소유권자(u, g, o, a)와 권한을 지정한다.
chmod 777 test.txt 유저, 그룹, 그외 모두 읽기, 쓰기, 실행 가능
chmod 755 test.txt 유저는 읽기, 쓰기, 실행 가능하나 그룹과 나머지는 읽기, 실행만 가능하다.
chmod u+r test.txt u는 유저를 뜻하며 +는 추가를 뜻한다. r은 읽기 권한 속성을 의미한다. 즉, 유저에게만 읽기 권한을 추가한다.
chmod g-w test.txt g는 그룹을 뜻하며 -는 삭제를 뜻한다. w은 쓰기 권한 속성을 의미한다. 즉, 그룹에게 쓰기 권한을 주지 않는 다는 것이다.
chmod o+x test.txt 위와 같은 방식으로 유저, 그룹을 제외한 나머지 소유자들에게 실행권한을 준다는 것이다.
chmod a+w test.txt a는 모든 소유자에게 준다는 것으로 모두 쓰기 권한을 준다는 것이다.
3. 파일 및 디렉토리 명령어
pwd
현재 위치한 절대경로 출력
PATH
경로를 보여준다. 대문자로 적어야 한다
echo $PATH
[PATH 설정]
자신의 홈 디렉토리의 .profile 또는 .bash_profile에다가 콜론( : )을 통해 경로를 계속 추가한다.
그러면 어느 위치에서든지 설정된 경로내의 프로그램을 실행 시킬 수 있다.
재시작을 해야 적용이 되나 테스트하기 위해 source .profile 또는 source .bash_profile를 통해 확인 해 볼 수 있다.
mkdir
디렉토리를 생성
mkdir a a라는 이름의 디렉토리 생성
mkdir -p /home/a 경로명에 따라 없는 모든 디렉토리 생성
cp
파일을 복사
-a : 원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사
-f : 복사할 대상 파일이 이미 있는 경우 지우고 복사한다.
-i : 덮어쓰기 전에 여부를 묻는다.
-p : 가능하다면 파일 속성을 유지한다.
-r : 하위 디렉토리까지 복사한다.
-s : 복사하는 대신 심볼릭 링크를 만든다.
-u : 소스 파일이 복사될 파일보다 새것이거나 복사될 파일이 없을 때만 복사한다.
cp a.txt b.txt a.txt 파일을 b.txt파일로 복사
cp -r mk /home mk 디렉토리 전부를 /home 안에 복사한다.
scp
네트워크를 통해 파일을 복사한다. s는 Secure로서 안전하게 복사하도록 한다.
scp src desc 순으로 src의 값을 desc로 보낸다.
scp -P 22 /home/a.txt 192.168.0.1:/home
ls
디렉토리 목록을 표시
-a : 숨긴 파일 표시
-l : 리스트 정리로 표시
ls -a 숨긴 것까지 보이게
ls -al 숨긴 것과 리스트로 정렬해 보이기
ll –full-time 파일의 대한 모든 시간을 보여준다.
cat
표준 입출력으로 파일 내용을 이어 붙이거나, 복사
cat text1 > text2 text1의 내용을 text2에 복사한다. (text2의 기존 내용은 사라진다.)
cat text1 >> text2 text1의 내용을 text2에 복사한다. (text2의 기존 내용 뒤에 text1의 내용이 추가된다.)
cat text1 text2 > text2 여러개의 파일을 이어 붙이거나 복사가 가능하다.
rsync
파일 디렉토리 동기화
-a 디렉토리를 싱크 할 경우
-v 처리 과정, 결과 출력
-z 파일 전송시 압축 처리
–delete desc엔 있지만 src에 없는 파일이라면 desc의 파일을 삭제 –exclude= 싱크에서 제외할 파일 -e desc의 특정한 bshell 사용
rsync test.txt /home
rsync text.txt 192.168.0.1:/home
rsync -avz –delete -e ssh text_directory 192.168.0.1:/home
cd
디렉토리 이동
cd : 홈디렉토리로 이동
cd.. : 상위 디렉토리로 이동
cd. : 현재 디렉토리로 이동
cd- : 이전 디렉토리로 이동
cd~ : 홈디렉토리로 이동
rmdir
디렉토리 지우는 명령어
mv
파일이나 디렉토리를 옮기는 명령어
rm
파일 or 디렉토리 삭제
ln
링크 파일을 생성하는 명령어
df
현재디스크의 사용량과 남은 용량을 출력
du
옵션으로 지정한 디렉토리의 용량을 표시
split
파일을 쪼갤때 사용하는 명령어
4. 검색 명령어
find
파일이나 디렉토리 검색
-name : 파일명 검색
-type : 파일 타입 검색
-ctime : create 시간으로 검색
-size : size로 검색
-regex : 정규식 패턴
-gegextype : 정규식 타입
find / -name a.txt 루트 디렉토리인 ‘/’에서부터 하위까지 이름으로 a.txt 파일 검색
find -type d 디렉토리들만 검색
find -regextype posix-extended -regex ‘.{0,}’ 정규식으로 검색
find -ctime +2 만든지 2일 이상 된것 검색
find -size +100M 100메가 이상 파일 검색
find -name *.log -exec du -h {} \; 로그 파일을 찾은 후 du 명령어로 파일 사이즈를 출력한다.
grep
찾을 문자값, 파일 값 등을 찾는다.
grep “main” text.c text.c 파일에서 main을 찾는다.
dmesg | grep “Linux” dmesg에서 Linux에 해당하는 값을 찾는다.
awk
특정 값을 잡아서 출력, 필드를 구분하여 출력
ls -al | awk ‘{print $1}’ 첫 번째 필드 부분만 출력한다.
ls -al | awk ‘{print $NF}’ 마지막 필드 부분만 출력한다.
ls -al | awk ‘{print $FNR}’ 라인에 따라 필드 위치가 1씩 증가하면서 해당 필드 부분만 출력한다.
ls -al | awk -F ‘/’ ‘{print $NF}’ -F 옵션에 따라 /값을 구분으로 필드를 분리한다.
ls -al | awk ‘{print $1, $2}’ 여러 필드 출력
awk ‘{print $1} 파일명 파일 내용도 awk를 이용해 출력 할 수 있다.
5. 압축 명령어
tar
파일, 디렉토리를 압축 및 해제
tar cvfz m.tar a.txt a.txt 파일을 압축해서 m.tar이라는 압축파일 생성
tar xvfz m.tar m.tar파일을 압축 해제한다.
tar xvfzP m.tar /home/bin/* 절대경로로 할경우 옵션에 대문자 P 추가한다.
tar tvf m.tar 압축해제 없이 내부 목록 보기
zip
파일, 폴더를 압축 및 해제
zip m a.txt b.txt // a.txt b.txt를 m.zip으로 압축한다. .zip은 자동으로 생성된다.
zip -r m // 디렉토리까지 모두 압축한다.
unzip m.zip // 압축을 해제한다.
zip -r m * -x /\*/.svn/\* // 압축할 디렉토리에 .svn의 모든 폴더 내용을 제외하고 압축한다. (/\* 기호는 모든 디렉토리에서 .svn안에 있는 /\*모든 파일을 지운다)