실무에 들어와서 리눅스 환경에 친숙해지기 위해 명령어를 하나씩 정리하고 있었는데 유튜브에서 좋은 영상을 발견해서 그 영상에 대한 정리를 하려고 한다.
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 dirNametouch fileNamerm fileNamerm -r dirName (-f 옵션이 없으면 directory는 지워지지 않음)cd pathmv file1 file2 (이름변경)mv file1 dir1 (file을 dir로 이동시킴)mv dir1 dir2 (dir1을 dir2 하위로 이동)cp file1 copy_filecp -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 > targetcat source >> target (source의 내용이 target파일에 append됨)tail fileNametail -f fileName (파일의 마지막에 데이터가 추가되는 즉시 파일의 내용을 출력해줌, 개발 시 로그파일을 볼 때 많이 사용한다.grep 문자열 파일이름 (ex. grep test *.log)grep -H 문자열 파일이름 (어떤 파일인지를 함께 출력해줌)grep -w 문자열 파일이름 (입력한 문자열과 정확히 일치하는 파일만을 출력)tar
tar cvfz target.tar.gz source1 source2tar xvfz source.tar.gz sudo
etc/sudoers(CentOS 7기준)파일에서 계정에 권한을 주어야 함.
chown (change Owner)
chown user: group(or user) targetfind
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 사용자IDsu
su - (root계정 접속)su -l userID (해당 userID로 접속)deluser
deluser 사용자IDls -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 위치 기준