실무에 들어와서 리눅스 환경에 친숙해지기 위해 명령어를 하나씩 정리하고 있었는데 유튜브에서 좋은 영상을 발견해서 그 영상에 대한 정리를 하려고 한다.
https://www.youtube.com/watch?v=9_KIdQ8abH4&t=682s (시골사는개발자 님)
ls -l
: 파일과 디렉토리에 대한 내용을 구체적으로 출력함ls -a
: 현재 디렉토리에서 숨김파일을 포함하여 출력함ls -li
: ls-l
상태에서 inode
번호를 함께 출력함ll
: ls-l
과 동일함chomd 664 fileName
(ex. chomd 664 note.txt)chmod u+x fileName
(ex. chomd u+x note.txt)mkdir dirName
touch fileName
rm fileName
rm -r dirName
(-f 옵션이 없으면 directory는 지워지지 않음)cd path
mv file1 file2
(이름변경)mv file1 dir1
(file을 dir로 이동시킴)mv dir1 dir2
(dir1을 dir2 하위로 이동)cp file1 copy_file
cp -r dir1 copy_dir
(-r 옵션이 없으면 directory복사 안됨)ln -s source target
(softlink, target은 source를 참조)ln source target
(hardlink, 같은 inode번호를 가진다.)cat FileName
(fileName의 내용을 출력)cat FileName | more
(내용이 많을경우 좀 더 편하게 볼 수 있음)cat source > target
cat source >> target
(source의 내용이 target파일에 append됨)tail fileName
tail -f fileName
(파일의 마지막에 데이터가 추가되는 즉시 파일의 내용을 출력해줌, 개발 시 로그파일을 볼 때 많이 사용한다.grep 문자열 파일이름
(ex. grep test *.log)grep -H 문자열 파일이름
(어떤 파일인지를 함께 출력해줌)grep -w 문자열 파일이름
(입력한 문자열과 정확히 일치하는 파일만을 출력)tar
tar cvfz target.tar.gz source1 source2
tar xvfz source.tar.gz
sudo
etc/sudoers(CentOS 7기준)
파일에서 계정에 권한을 주어야 함.chown (change Owner)
chown user: group(or user) target
find
find 경로 조건 target
(ex. find ./ -name system.log)which
which 찾을명령어
(ex. which ls) => /bin/ls)top
d
를 누르고 1을 입력하거나 top명령어를 실행할 때 top -d 1
처럼 옵션을 입력하여 실행해도 된다.w
who
명령어를 사용하면 된다.ping
ping domain(or IP)
(ex. ping google.com)nslookup
nslookup domain
(아이피주소 반환)ps (process status)
ps -ef |grep apache
(프로세스 중 apache가 들어간 것을 조회)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는 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 위치 기준