Product Serving : Linux & Shell Command
Shell
쉘의 종류
- 쉘 : 사용자가 문자를 입력해 컴퓨터에 명령할 수 있도록 하는 프로그램
- 터미널/콘솔 : 쉘을 실행하기 위해 사용자 입력을 받아 컴퓨터에 전달
- sh : 최초의 쉘
- bash : Linux 표준 쉘
- zsh : Mac OS Catalina 표준 쉘
쉘을 사용하는 경우
- 서버에서 접속해서 사용하는 경우
- 데이터 전처리를 위해 쉘 커맨드를 사용
- Docker를 사용
- 수백대의 서버를 관리
- Test code 실행
- 배포 파이프라인 실행
Shell Command
man
1
man python
- 쉘 커맨드의 매뉴얼 문서를 확인
- 종료는
:q
입력
Directory commmand
mkdir
1
mkdir test
test
라는 이름의 폴더를 생성
ls
1 2 3 4
ls ls -l ls -al ls -lh
- 현재 접근한 폴더의 폴더, 파일을 확인
- 실행 옵션
-a
:.
포함 모든 파일, 폴더를 출력-l
: 권한, 소유자, 만든 날짜, 용량까지 출력-h
: 용량을 사람이 읽기 쉽도록 GB, MB로 표시
pwd
1
pwd
- 현재 폴더 경로 (Current Working directory)를 보여줌
cd
1
cd test
- 폴더 변경, 폴더 이동
I/O Command
echo
1 2
echo "hi" echo `pwd`
- print처럼 터미널에 텍스트를 출력
- echo `command`를 입력하면 쉘 커맨드의 결과를 출력
vi
1
vi test.txt
- vim 편집기로 파일 생성
i
를 눌러 INSERT 모드를 활성화하고 수정ESC
를 누르고:wq
를 누르면 저장하고 나가기:wq!
는 강제저장 후 나가기:q
는 그냥 나가기
Shell Command
bash
1
bash test.sh
- shell script를
bash
를 통해 실행
- shell script를
sudo
1
sudo rm -rf /
- 관리자 권한으로 실행하는 경우
sudo
를 붙여서 실행 - superuser do의 약자로 최고 권한자의 권한으로 명령어를 수행함
- 관리자 권한으로 실행하는 경우
cp
,mv
1 2
cp test.sh vi-test2.sh mv test.sh vi-test3.sh
cp
와mv
는 둘다 비슷하게 사용함cp
는 파일이나 폴더를 복사함- 폴더를 복사할 때는 옵션으로
-r
을 사용해야 함
- 폴더를 복사할 때는 옵션으로
mv
는 파일, 폴더를 이동할 때 쓰지만 이름을 바꿀때도 사용함
find
1
find . -name "File"
- 현재 폴더에서 File이란 이름을 갖는 파일 및 디렉토리 검색
export
1 2
export water="물" echo $water # 물
export
로 환경 변수를 설정export
로 환경 변수 설정한 경우 터미널이 꺼지면 사라짐- 매번 쉘을 실행할 때 설정하려면
.bashrc
나.zshrc
에 저장하면 됨 - 내용을 저장하고
source ~/.bashrc
나source ~/.zshrc
를 수행하면 적용됨
alias
1
alias ll2='ls -l'
alias
는 명령어들을 간단히 줄여 단축 키워드처럼 사용하게 해줌
ETC command
sort
1
cat fruits.txt | sort
- 내용을 오름차순으로 정렬
-r
옵션은 내림차순 정렬
uniq
1 2
cat fruits.txt | uniq cat fruits.txt | sort | uniq
- 중복된 행이 연속으로 있는 경우 중복 제거
- 일반적으로
sort
와 함께 사용 -c
옵션은 중복 행의 개수 출력
grep
1
grep [option] [pattern] [filename]
- 특정 정규표현식에 맞는 라인을 검색
- options
-i
: insnsitively, 대소문자 구분없이-w
: 정확하게 그 단어만 찾기-v
: 특정 패턴 제외한 결과 출력-E
: 정규 표현식 사용
Server command
ps
1
ps -ef
- 현재 실행되고 있는 프로세스 출력
- options
-e
: 모든 프로세스-f
: Full Format으로 자세히 보여줌
curl
1
curl -X localhost:5000/{data}
httpie
등 여러가지가 있고 더 가독성 좋게 출력해줌- REST API 기반 request를 테스트 가능
scp
1 2
scp local_path user@ip:remote_directory # local -> remote scp user@ip:remote_directory local_path # remote -> local
- SSH를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어
- options
-r
: 재귀적으로 복사-P
: ssh 포트 지정-i
: SSH 설정을 활용해 실행
nohup
1
nohup python3 app.py &
- 터미널 종료 후에도 계속 작업이 유지되도록 백그라운드 실행
- 실행을 위해선 permission이 755여야 함
- 종료는
ps -ef | grep app.py
후kill -9 pid
로 프로세스 kill - 로그는
nohup.out
에 저장
chmod
1
chmod [filename] [mode]
- 특정 파일의 mode를 설정 3자리 숫자로 모드는 표현되며 각자리는 2진수 3비트로 Read, Write, Execution 역할을 함
- 일반적으로 755, 644로 퍼미션을 줌
Shell Script
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
START=$(date + %s)
echo "Calculate run-time"
sleep 3
END=$(date + %s)
DIFF_SECOND=$(( $END-$START ))
DIFF_MINUTE=$(( $DIFF_SECOND / 60 ))
echo ${DIFF_SECOND}
.sh
확장자 파일로 돌아감- 쉘 커맨드가 동작하며
bash
명령어로 수행가능
Comments powered by Disqus.