반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

테크매니아

Bash: Redirection 잘 써보기 본문

OS/Bash

Bash: Redirection 잘 써보기

SciomageLAB 2024. 9. 7. 20:26
반응형

상황 1: 로그 파일 분리 저장

서버에서 실행 중인 스크립트가 표준 출력과 표준 오류를 분리해서 다른 파일에 저장하기

#!/bin/bash

# 정상 출력 예시
echo "Starting backup process..."

# 존재하지 않는 파일을 복사하려고 시도해서 오류 발생
cp /nonexistent/file /backup/

# 정상 출력 예시
echo "Backup completed successfully (if no errors)."

실행

./backup.sh > /backup/backup.log 2> /backup/backup_error.log

스크립트의 실행은 두 리다이렉션이 모두 적용된 후에 시작됨.

상황 2: 소켓을 통한 데이터 입출력 (채팅 구현)

server

# server
#!/bin/bash

# 소켓 파일을 생성하고 읽기와 쓰기 모드로 엽니다.
exec 3<> /tmp/server_socket

while [ true ]
do
    # 클라이언트로부터 데이터 읽기
    read -u 3 request
    echo $request
    sleep 1
done



# 파일 디스크립터 닫기
exec 3>&-

client

#!/bin/bash

# 소켓 파일을 생성하고 읽기와 쓰기 모드로 엽니다.
exec 3<> /tmp/server_socket

while [ true ]
do
    # 서버에게 데이터 전송
    read answer
    echo $answer >&3
done

# 파일 디스크립터 닫기
exec 3>&-

mkfifo를 이용해서 메모리 스트림으로 처리하기

데이터가 스트림에서 읽히면 없어지므로 파일처럼 이전게 읽힐 일이 없고 디스크에 저장되지 않은다.

img
# server
#!/bin/bash

# 소켓 파일을 생성하고 읽기와 쓰기 모드로 엽니다.
mkfifo /tmp/server_socket
exec 3<> /tmp/server_socket

while true
do
    # 클라이언트로부터 데이터 읽기
    read -u 3 request
    echo $request
    sleep 1
done



# 파일 디스크립터 닫기
exec 3>&-

img

반응형

'OS > Bash' 카테고리의 다른 글

프로세스 대체  (0) 2024.09.07