기록하는삶
Unix 표준 스트림, Redirection & Pipe, 서버에서 자주 사용하는 쉘 커맨드(Shell Command) 본문
Unix 표준 스트림, Redirection & Pipe, 서버에서 자주 사용하는 쉘 커맨드(Shell Command)
mingchin 2022. 2. 17. 00:48Unix 기반의 프로그램을 명령어로 실행할 때는 아래처럼 3개의 스트림이 생성된다.
[스트림(Stream) 종류]
- stdin : 0으로 표현, 입력(비밀번호, 커맨드 등)
- stdout : 1로 표현, 출력 값(터미널에 나오는 값)
- stderr : 2로 표현, 디버깅 정보나 에러 출력
위 stream 중 stdout을 적절히 다른 파일이나 스트림, 프로그램에 활용하는 방법이 redirection과 pipe다.
1) Redirection
프로그램의 출력(stdout)을 다른 파일이나 스트림으로 전달하는 것을 말한다. 대표적으로 덮어쓰기(Overwrite)와 맨 아래 추가하기(Append)가 있다.
① 덮어쓰기(Overwrite, >)
이전 출력에 대해 파일이 있다면 덮어쓰고, 없다면 생성 후 저장한다.
ex) echo “hi” > vi-test3.sh
② 맨 아래 추가하기(Append, >>)
이전 출력을 지정한 파일의 뒤에 이어 붙인다.
ex) echo “hello” >> vi-test3.sh
2) Pipe
프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하는 것을 말한다. A의 output을 B의 input으로 사용하고, B의 output을 다시 C의 input으로 사용하고, ... 를 반복하여 다양한 커맨드를 조합하여 사용하는 데에 활용된다.
ex) ls | grep “vi” > output.txt : 현재 폴더에 있는 파일명 중 vi가 들어간 단어를 검색하여 그 결과를 output.txt에 저장
cat fruits.txt | sort | uniq | wc -l : fruits.txt 파일의 내용을 정렬하고 연속된 중복을 제거한 뒤 line의 수 출력
history | grep “echo” : 최근 사용한 커맨드 목록에서 'echo'가 포함된 명령어 검색
아래에는 서버에서 자주 사용하는 쉘 커맨드를 정리해본다.
명령어 | 동작 내용 | 사용 예시 / 옵션 /비고 |
ps | Process Status / 현재 실행중인 프로세스 출력 | -e : 모든 프로세스 -f : Full format으로 출력 |
curl | Client URL / Data Transfer 커맨드 웹 서버를 작성한 후 요청이 제대로 실행되는지 확인할 수 있음 |
curl -X localhost:5000/ (data) |
df | Disk Free / 현재 사용중인 디스크 용량 확인 | -h : 단위 포함해 읽기 쉬운 형태로 출력 |
scp | Secure Copy Secure SHell(SSH)을 이용해 네트워크로 연결된 호스트 간 파일을 주고 받음 |
-r : 재귀적으로 복사 -P : ssh 포트 지정 -i : SSH 설정을 활용해 실행 scp local_path user@ip:remote_directory scp user@ip:remote_directory local_path scp user@ip:remote_directory user2@ip2:target_remote_directory |
nohup | 터미널 종료 후에도 작업이 유지하도록 실행(백그라운드 실행) | nohup python3 app.py & |
chmod | Change Mode / 파일의 권한(permission)을 변경 | chmod 755 vi-test2.sh |
유닉스에서 파일이나 디렉토리의 permission에는 아래의 종류가 있다.
r = Read(읽기), 4
w = Write(쓰기), 2
x = eXecute(실행하기), 1
- = Denied
permission은 753와 같이 세 자리 숫자로 표현하며, 이때 각 숫자는 순서대로 소유자, 그룹, 기타 사용자의 권한을 의미한다. 각 숫자는 r,w,x의 합으로 표현이 가능한데, 7=4+2+1=r+w+x, 5=4+1=r+x, 3=2+1=w+x와 같은 식이다. 즉 753은 소유자는 읽기/쓰기/실행하기, 그룹 사용자는 읽기/실행하기, 기타 사용자는 쓰기/실행하기 권한을 부여한다는 의미다.
또한 nohup으로 실행될 파일은 Permission이 755여야 한다. 종료는 ps ef | grep (파일명) 실행한 후, pid(Process ID) 찾은 후에 kill -9 pid 로 프로세스를 Kill 해야한다. 이때 로그는 nohup.out에 저장된다.
'AI > 개발환경' 카테고리의 다른 글
[Poetry/협업] 가상 환경 및 의존성 관리 도구 (0) | 2022.05.25 |
---|---|
[협업/MLOps] 머신러닝 실험, 배포를 위한 오픈소스 MLflow (0) | 2022.02.22 |
윈도우(Window) pycocotools 설치, pip install pycocotools (0) | 2022.02.15 |
[협업/MLOps] Weights & Biases (0) | 2022.01.26 |
[Jupyter notebook/주피터 노트북] 알아두면 유용한, 주피터 노트북 단축키 (0) | 2022.01.17 |