Linux

newhyork·2022년 5월 21일
0

commands


whoami

현재 사용자 계정을 확인한다.

su <user_name>

사용자 계정을 변경한다.

  • 그냥 su는 root 계정으로 변경한다.
  • 처음 로그인했던 사용자 계정으로 돌아오려면 ctrl + a + d

which <command_name>

해당 명령어를 쓸 때 어디에 저장된 것을 실행하는 건지, 절대 경로를 확인한다.

history

명령어 실행 내역을 확인할 수 있다.


export

환경 변수를 확인한다.

  • key=value로, 환경 변수를 설정할 수도 있다.
  • windows의 set과 같다.

pwd

현재 디렉터리의 절대 경로를 확인한다.

ls

현재 디렉터리에 있는 파일과 디렉터리를 확인한다.
(linux는 unix기반 임에 따라, 디렉터리도 파일로 취급하는 file system이다.)

  • -a: 숨겨진 파일이나 디렉터리를 포함한다.
  • -l: 상세히 보여준다.
    • 기본적으로 alias에 ll로 등록되어 있다.

cd <directory_path>

디렉터리를 이동한다.

  • directory path를 생략하면, 사용자 홈 디렉터리로 이동한다.

mkdir <directory_name>

디렉터리를 생성한다.

rm <file/directory_name>

파일/디렉터리를 삭제한다.

  • -r: 디렉터리와 그 하부 파일까지 삭제.
  • -f: 삭제 여부를 묻지 않고 바로 삭제.

mv <file/directroy_path/name_A> <file/directroy_path/name_B>

A 파일/디렉터리를 B로 이동한다.

  • 이름을 변경한다는 의미도 있다.
    • rename이라는 것도 있지만, 따로 설치해줘야한다.

find <directory_path>

파일 시스템에서 파일을 검색하는 데 사용한다.

  • 경로를 생략하면 현재 디렉터리를 기준으로 하며,
    기본적으로 모든 하위 디렉터리까지 탐색한다.
  • 여러 option(expression)이 있으며, 동시에 적용할 수도 있다.
    검색 기준 혹은 검색 결과에 적용할 작업을 option으로 둔다.
    • -name <string_pattern>: 패턴에 알맞는 파일명을 기준으로 검색한다.
    • -maxdepth <number>: 검색할 하위 디렉토리의 최대 깊이를 지정한다.

cat <file_name>

파일 내용을 터미널에 출력한다.

  • 보통 ‘|’ 혹은 ‘>’, ‘>>’와 함께 쓰여, 파일을 만들 때 사용하곤 한다.

echo <string>

해당 문자열을 터미널에 출력한다.

  • 보통 ‘|’ 혹은 ‘>’, ‘>>’와 함께 쓰여, 파일을 만들 때 사용하곤 한다.

  • shell script 진행 상황을 터미널로 확인할 때 쓴다.


grep <string_pattern> <file_name>

패턴에 해당하는 문자열을 검색할 때 쓴다.

  • 패턴은 regex를 통해 작성하고, 이 밖에 다양한 옵션이 있다.

lsof

시스템에 현재 열려있는 파일을 확인한다.

ps

현재 실행 중인 프로세스를 확인한다.

  • -e: kernel 프로세스를 제외한 모든 프로세스를 확인한다.
  • -f: 프로세스의 모든 정보를 확인한다.

kill <PID>

프로세스를 종료시킨다.

  • -9: 강제 종료

netstat

네트워크 상태를 보여준다. 이를 통해, 사용 중인 port들을 확인할 수 있다.

  • -a: 모든 것을 출력한다.
  • -l: 대기(listen) 상태인 것만 출력한다.
  • -n: 호스트 명을 IP주소로 출력한다.
  • -p: PID와 프로그램명을 출력한다.
  • -t: TCP protocol만 출력한다

screen

주로 daemon으로 background에서 실행되고 있는 프로세스들을
가상 터미널로써 foreground로 가져와 동작 상태를 확인하고자 할 때 쓴다.
(조금 더 설명을 덧붙여 쉽게 말하자면,
일단 screen을 쓴다는 것은 둘 이상의 화면을 쓰겠다는 것이다.
그리하여 각 화면(screen)에서는 가상 터미널로 하나의 프로세스를 실행하곤 한다.
이는, 실제 터미널에 해당되는 foreground 입장에서 보면
화면 별로 하나의 background 프로세스가 실행되는 것이다.
만약 foreground에서 bakcground 프로세스에 접근한다면,
해당 화면(screen)의 가상 터미널을 이용하는 것이다.)

  • -S <session_name>: session을 생성한다.
  • -r <session_name>: detached인 session을 foreground로 가져와 작업한다.
    • detached: session에 아무도 attach하지 않은 상태
      attached: session에 attach하여 터미널을 컨트롤 중인 상태
  • -rd <session_name>: 다른 터미널에서 해당 session에 접속(attached)중인 것을 강제로 끊고 접속한다.
  • -ls: background에 있는 session 리스트를 보여준다.
  • (background 프로세스를 실행 시킨 후)
    screen session을 유지한 상태로 (foreground로) 빠져나오려면,
    ctrl + a로 해당 screen내에서 명령어가 동작하도록 하고,
    +d를 하여 가상 터미널에서 빠져나온다.
    • exit 명령어를 수행하면, screen session이 종료된다.
    • foreground에서 해당 session을 종료하려면, -s <session_name> -x quit
    • screen session에서 실행하고 있는 프로세스에서 ctrl + c를 하는 것은
      session을 종료하는 것이 아니라, 해당 프로세스를 종료하는 것에 불과하다.
  • screen session에서 스크롤을 하려면, ctrl + a + ESC키로 copy mode에 진입하여
    위/아래 방향키 혹은 page up/down으로 조작할 수 있다.
    • copy mode를 해제하려면 ESC를 누르면 된다.

scp

secure copy의 약자로, 네트워크로 연결된 호스트간에
SSH 프로토콜을 기반으로 파일을 주고 받을 수 있는, 파일 전송 프로토콜이다.

  • <option> <file_path> <remote_id>@<remote_ip>:<location>
    : 로컬에서 원격으로 파일을 전송.
    • (AWS EC2 인스턴스가 ubuntu이면, remote_id는 ubuntu이다.)
  • 반대로, 원격에서 로컬로도 파일을 가져올 수 있다.
    이 때는, 위 명령어의 서순이 변경된다.

서버 APP 실행 관련

  • nohup: 프로그램을 daemon으로 실행하고, nohup.out에 log가 출력된다.
    • daemon으로 실행하면 컴퓨터를 끄지 않는 한 터미널을 종료하더라도
      해당 프로세스가 종료되지 않고 대기 상태를 유지한다.
  • &: 명령어를 foreground가 아닌 background에서 실행한다.
    (이 때, 터미널을 나갈 때는 shell을 바로 닫지 않고 exit으로 종료하자)
    • job(s): background에서 실행되는 작업을 확인한다.

기타

  • --help: 명령어의 옵션 등 사용법 확인
  • sudo : 관리자(root) 권한으로 명령어 실행.
  • curl ifconfig.me: public ip 확인한다.
  • . <file_name>: 현재 shell에서 파일을 실행한다.
    주로, 환경 설정에 관한 script를 수정 후 바로 적용 시 사용한다.
    source <file_name>과 같다.
    ./<file_name>: 새로운 shell에서 파일을 실행한다.
    bash <file_name>과 같다.
  • 권한 설정에 따라, 현재 사용자가 다른 사용자의 디렉터리에 접근하여
    파일 읽기/수정/실행을 할 수도 있다.

special character


  • ‘.’: 현재 디렉터리
  • ‘..’: 상위 디렉터리
  • ‘-’: 이전 디렉터리
  • ‘~’: 홈 디렉터리
    • 루트 디렉터리에 있는 home/이 아니라, 사용자의 홈 디렉터리이다.
  • '/': 루트 디렉터리
  • ‘>’: 표준 출력(stdout)을 재지정한다.
    명령어 실행 결과를 terminal에 출력이 아니라 원하는 파일에 저장할 수 있다.
    ‘>>’: 파일이 존재하지 않으면 파일을 생성하고,
    존재한다면 해당 파일의 내용에 이어서 작성한다.
  • ‘<’: 표준 입력(stdin)을 재지정한다.
    입력을 키보드 타이핑으로 받는 것이 아니라 파일 내용으로 받아, 명령어를 실행한다.
  • ‘|’: 여러 명령어를 묶어 편하게 사용할 수 있게 하는 것으로,
    앞 명령어의 실행에 따른 출력을, 뒤 명령어의 실행 시 입력으로 이용한다.
  • ‘;’: 앞 명령어의 성공 여부와 상관없이 종료되면, 뒤 명령어를 실행.
  • ‘&&’: 앞 명령어가 성공하면 뒤 명령어도 실행.

0개의 댓글