Linux 명령어 모음
기본정보
- 글쓴이
- 고객지원팀
- 조회수
- 2,497회
상세내용
명령어 모음
- pwd (print working directory)
- 현재 사용자가 위치하고 있는 경로를 출력해줌.
- ls (list)
- 현재 위치한 디렉토리에 있는 파일과 디렉토리 리스트를 보여줌
- options
ls -l
: 파일과 디렉토리에 대한 내용을 구체적으로 출력함
(권한 소유계정 그룹계정 파일크기[Byte] 생성날짜 파일이름)ls -a
: 현재 디렉토리에서 숨김파일을 포함하여 출력함ls -li
:ls-l
상태에서inode
번호를 함께 출력함ll
:ls-l
과 동일함
- chmod (change Mode)
- 권한 변경
chomd 664 fileName
(ex. chomd 664 note.txt)chmod u+x fileName
(ex. chomd u+x note.txt)- u(user), g(group), o(other)를 의미하며 +는 권한부여, -는 권한박탈
(ex. u+x => 유저에게 execute권한을 부여)
- mkdir (make Directory)
- 디렉토리를 생성함
mkdir dirName
- touch
- 빈 파일 생성
touch fileName
- rm (remove)
- 파일삭제 명령
rm fileName
rm -r dirName
(-f 옵션이 없으면 directory는 지워지지 않음)
- cd (change Directory)
- 디렉토리를 이동함
cd path
- mv (move)
- 파일, 디렉토리를 이동시키거나 이름을 변경시키는 명령어
mv file1 file2
(이름변경)mv file1 dir1
(file을 dir로 이동시킴)mv dir1 dir2
(dir1을 dir2 하위로 이동)
- cp (copy)
- 파일, 디렉토리를 복사함
cp file1 copy_file
cp -r dir1 copy_dir
(-r 옵션이 없으면 directory복사 안됨)
- ln (link)
- 링크파일을 생성함
ln -s source target
(softlink, target은 source를 참조)ln source target
(hardlink, 같은 inode번호를 가진다.)
- cat
- 파일의 내용을 출력함
cat FileName
(fileName의 내용을 출력)cat FileName | more
(내용이 많을경우 좀 더 편하게 볼 수 있음)cat source > target
(출력의 방향을 파일로 변경함, source를 target으로 복사했다고 볼 수 있다. 조심해야 하는점은 만약 target으로 지정한 파일의 이름이 이미 존재하는 경우 그 파일에 source의 내용이 덮어씌워진다.)cat source >> target
(source의 내용이 target파일에 append됨)
- head
- 파일의 맨 앞에서 몇 라인만을 출력함
- head fileName
- option으로 Line수를 지정할 수 있다.
- tail
- 파일의 맨 아래부분 몇 라인만을 출력함
tail fileName
tail -f fileName
(파일의 마지막에 데이터가 추가되는 즉시 파일의 내용을 출력해줌, 개발 시 로그파일을 볼 때 많이 사용한다.
- grep
- 검색하고자 하는 문자를 옵션으로 주면 해당 문자열과 일치하는 파일을 찾아준다.
grep 문자열 파일이름
(ex. grep test *.log)grep -H 문자열 파일이름
(어떤 파일인지를 함께 출력해줌)grep -w 문자열 파일이름
(입력한 문자열과 정확히 일치하는 파일만을 출력)
- less
- 파일을 열고 내용을 볼 수 있는 TextViewer기능을 가진다.
- 목적도 용도가 vi와는 다르기 때문에 별도로 알아야 할 필요가 있다.
- 1GB정도 되는 로그파일을 vi로 열게되면 1GB가 모두 메모리에 올라가고, 네트워트 트래픽 또한 1GB만큼 발생하게 된다. 하지만 less명령어를 이용하여 열면 화면에 보이는만큼만 메모리에 올라간다. 즉, 용량이 큰 로그파일을 열때는 less명령어를 사용하는 것이 좋다.
System 명령어
tar
- 압축관련 명령어
tar cvfz target.tar.gz source1 source2
(source1, source2를 target으로 압축한다. 현재 디렉토리를 모두 압축하고 싶은경우에는 *를 사용한다.)- cvfz중 c가 create를 의미한다는 정도만 알아두어도 된다.
- tar.gz는 tar(파일과 디렉토리를 한 묶음으로 만듬)라는 명령어를 이용하여 gzip으로 압축한다는 의미이다.
tar xvfz source.tar.gz
- xvfz중 x는 extract를 의미하며 압축을 해제할 때 사용한다.
- 압축과 압축해제는 옵션까지 한 묶음으로 숙지하는것이 좋다.
sudo
- 관리자 권한을 사용할 수 있는 명령어
- root계정으로 접속하여
etc/sudoers(CentOS 7기준)
파일에서 계정에 권한을 주어야 함.
(Allow root to run any commands anywhere 아래에 등록하면됨)
chown (change Owner)
- 파일 또는 디렉토리의 소유자, 그룹명을 변경하는 명령어
- 소유권을 뺏을수도 있는것이기 때문에 관리자 권한이 필요하다. (sudo)
chown user: group(or user) target
find
- 파일이나 디렉토리를 찾을 때 사용하는 명령어
- 검색조건이 매우 다양하다.
find 경로 조건 target
(ex. find ./ -name system.log)
which
- 명령어의 위치를 조회하는 명령어
which 찾을명령어
(ex. which ls) => /bin/ls)
top
- 운영중인 서버의 CPU, Memory등의 상태를 확인하는 명령어
- 상단에는 CPU사용률과 메모리 사용률을 표시한다.
- 하단에는 프로세스 별 CPU사용률과 메모리 사용률을 표시한다.
- 갱신하는 주기는 default 3초이다.
- 매 초마다 갱신하고 싶다면 화면에서
d
를 누르고 1을 입력하거나 top명령어를 실행할 때top -d 1
처럼 옵션을 입력하여 실행해도 된다.
- 매 초마다 갱신하고 싶다면 화면에서
- 실행화면에서 h를 누르면 사용할 수 있는 명령어가 나온다.
w
- 현재 리눅스 장비에 접속한 사용자가 누구인지 조회하는 명령어
- 사용자 아이디, 접속한 시간, IP, CPU사용률, 어떤 작업을 수행중인지 출력한다.
- 간단하게 보고싶으면
who
명령어를 사용하면 된다.
ping
- 네트워크 설정이 잘 되어 있는지 알아보는 경우에 많이 사용함
ping domain(or IP)
(ex. ping google.com)
nslookup
- domain을 이용하여 IP를 알아낼 때 사용하는 명령어
nslookup domain
(아이피주소 반환)
ps (process status)
- 현재 구동중인 모든 프로세스 정보를 조회할 때 사용하는 명령어
- 너무많은 정보를 보여주기 때문에 주로 옵션과 함께 사용한다.
ps -ef |grep apache
(프로세스 중 apache가 들어간 것을 조회)- PID는 각 프로세스마다 할당되는 유니크한 번호이다.
- PID오른쪽에는 해당 프로세스의 부모 프로세스 PID를 나타낸다.
kill
- 프로세스를 종료하는 경우 사용하는 명령어
- PID를 이용하여 종료시킨다.
- kill은 관리자 권한이 필요하다.
kill -9 PID
(-9옵션을 주면 강제종료 한다.)
man
- 명령어에 대한 메뉴얼을 제공
man 3 sleep
처럼 3을 옵션으로 주면 프로그래밍에 대한 메뉴얼도 제공받을 수 있다.
adduser
- 새로운 사용자를 추가하는 경우에 사용하는 명령어
- 관리자 권한이 필요한 명령어
adduser 사용자ID
su
- 사용자를 변경할 때 사용하는 명령어
su -
(root계정 접속)su -l userID
(해당 userID로 접속)
deluser
- 사용자를 삭제하는 경우에 사용하는 명령어
- 관리자 권한이 필요한 명령어
deluser 사용자ID
권한
ls -l
을 이용하여 디렉토리 정보를 출력하면 맨 앞쪽에 drwxrwxrwx
처럼 권한에 대한 내용이 출력된다.
이 권한에 대해 이해하고 있을 필요가 있다.
가장 먼저 나오는 알파벳은 파일의 유형을 의미하며 d, l, -
로 나뉘고 각각 directory, link, file
을 의미한다.
권한정보인 rwx
는 각각 read write execute
를 의미한다.
예를들어 --x
권한을 가지고 있다면 읽거나 쓰지는 못하고 실행만 할 수 있다.
권한정보는 rwx(User 권한) rwx(Group 권한) rwx(Other 권한)
처럼 3자리씩 끊어서 하나의 세트로 볼 수 있다.
또한 rwx
를 숫자로 표현하면 421
로 표현할 수 있다 (이진수 표기법)
Link
리눅스에서 Link는 Hard Link
와 Soft(Symbolic) Link)
가 있다.
사람은 좌측에 있는 테이블 형태가 보기 편하지만 컴퓨터 입장에서는 좌측에 있는 테이블이 연산하기에 더 효율적이다.
이러한 이유로 두 테이블을 연결할 수 있는 key인 inode
를 이용한다.inode
는 파일이 생성할 때 유니크하게 생성되며 Ref
는 실제 파일시스템을 참조하는 링크 파일의 개수를 의미한다.
즉, 하나의 파일이 생성되면 inode가 유니크 하게 부여되며 파일시스템의 Ref는 1이 된다.
예를들어 이력서1.doc
을 열어본다면 inode
값을 보고 파일시스템에 매핑되는 데이터를 조회하여 보여주는 것이다.
만약 삭제를 한다면 파일시스템에서 inode 1번
에 해당하는 파일을 조회하여 현재 Ref
값에 -1을 한다.
만약 Ref = 0
이 되면 파일은 디스크에서 삭제되는 것이다.
하드링크
원본파일과 복사본을 생성하면서 파일 시스템에서 같은 inode
번호를 참조하게 하는방법.
즉, 원본과 복사본 중 어느 한 곳에서 입력과 수정은 동시에 적용되지만 삭제는 별개로 동작한다(하나를 삭제해도 Ref = 1
이 되기 때문이다)
하드링크는 파일에만 설정가능하고 디렉토리에는 설정할 수 없다.
소프트링크
Windows의 바로가기 만들기와 같은 기능이다.
소프트링크는 링크파일이 링크파일을 참조하는 방식이기 때문에 파일과 디렉토리에 모두 설정 가능하다.
소프트링크는 소프트웨어 개발에서 유용한 기능을 제공한다.
특히 오픈소스 라이브러리에서 많이 볼 수 있다.
라이브러리를 개발할 때 버전정보를 표기하며 버전별로 Release하는데 어려움이 있다.
이럴때 library.so
라는 library
를 대표하는 소프트링크를 만들어 놓고 버전이 변경될 때 마다 소프트링크의 참조를 변경하는 방식으로 사용하는 것이다.
위처럼 library.so
가 library.0.1.so
를 참조하도록 한다.
새로운 버전인 library.0.2.so
가 배포되면 기존에 참조하던 파일을 삭제하고 library.0.2.so
를 참조하도록 링크를 생성하는 것이다.
만약 소프트링크 파일이 참조하고 있던 파일이 삭제되면 링크가 깨진상태가 되고, 해당 소프트링크 파일은 아무런 역할을 하지 않는 파일이 된다.
경로
/
: 절대위치 기준 경로 (root가 시작점)./
: 현재위치 기준 경로 (현재 디렉토리가 시작점, 생략가능)../
: 현재 위치의 상위 기준 (root/home 이라면 ../는 root임)~/
: Home 위치 기준
자료실
유용한 자료들을 모아두었습니다.