기록하는삶

Unix 표준 스트림, Redirection & Pipe, 서버에서 자주 사용하는 쉘 커맨드(Shell Command) 본문

AI/개발환경

Unix 표준 스트림, Redirection & Pipe, 서버에서 자주 사용하는 쉘 커맨드(Shell Command)

mingchin 2022. 2. 17. 00:48
728x90
반응형

Unix 기반의 프로그램을 명령어로 실행할 때는 아래처럼 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에 저장된다.

 

 

 

728x90
반응형