달성할 수 있는 방법이 있나요?게시/구독 모델서버 프로세스를 사용하지 않고 명령줄에서? 이를 위해서는 하나의 컴퓨터에서만 작업하면 됩니다.
서버 프로세스가 없어서 피하고 싶은 주요 사항은 이러한 도구를 사용하도록 시스템을 구성하는 것입니다. 또한 서버 프로세스가 종료될 가능성을 처리하고 싶지 않습니다.
이는 다음과 같을 수 있습니다:
# client 1
subscribe name | while read line; do echo $line; done
# client 2
subscribe name | while read line; do echo $line; done
# server
echo message | publish name
관련된 링크들
- POSIX 산업용 컴퓨터서버리스 제공메시지 대기열그리고 명령줄 클라이언트가 있습니다.(1) (2) (삼). 이는 위의 내용을 구현하기 위해 일종의 상태 저장소와 함께 사용할 수 있습니다.
- ZQ제공게시/구독 통신 프로토콜. 유사한 명령줄 도구가 있습니다.CNC사용하기위한ZQ, 예를 들어고양이 고양이. 이는 최소한의 명령줄 게시/구독 모드를 설정하는 데 사용할 수 있습니다.서버가 있습니다.
- Linux는 다음과 같은 또 다른 IPC 메커니즘을 제공합니다.명명된 파이프(mkfifo 참조). 여러 소비자에게 예상되는 동작이 무엇인지 모르겠습니다. 그러나 일부 예비 실험에 따르면 각 메시지는 단지소비자가 받는다
답변1
모든 가입자는 다른 가입자에게 영향을 주지 않는 방식으로 새로운 데이터에 대한 알림을 받아야 하며, 서버는 가입자가 수신한 데이터를 추적할 필요가 없습니다. 이로 인해 FIFO가 이 목적에 쓸모 없게 됩니다. 아이러니하게도 일반 파일의 파일 설명자는 파일 변경 사항을 추적하기 때문에 일반 파일은 원하는 작업을 정확하게 수행합니다. 이를 재정의와 결합하여 새로운 재정의가 발생하기 전에 모든 변경 사항이 게시되도록 할 수 있습니다. 즉, 하나의 메시지만 저장할 수 있습니다.
touch pubsub
tail -f pubsub | while read line; do echo $line; done
tail -f pubsub | while read line; do echo $line; done
echo "message" | cat > pubsub
예상되는 동작인 표준 오류에서 "파일 잘림"이 발생하지만 이를 보고 싶지 않은 경우 2> /dev/null을 추가하세요.
tail은 실제로 읽기와 에코가 수행하는 모든 작업을 수행하지만 스크립트에 통합하기를 원한다고 가정하고 이렇게 작성했습니다.