정상적인 활성화 시 특정 포트에서 수신 대기하는 프로그램이 있습니다.
프로그램이 계속 실행되는 것을 원하지 않습니다.
적절한 포트를 모니터링하고 요청 시 서비스를 시작하기 위해 셸 스크립트 또는 이와 유사한 것으로 애플리케이션을 래핑하는 "빠르고 더러운" 방법이 있습니까?
가장 간단한 접근 방식은 래퍼가 포트를 해제한 다음 애플리케이션을 시작해야 하기 때문에 연결이 실패할 수 있습니다. 클라이언트가 짧은 시간 동안만 다시 연결하면 모든 것이 잘 작동합니다.
하지만 이 모든 것이 고객에게 완전히 투명해지면 더 좋을 것입니다.
답변1
~처럼Richard는 이미 언급했습니다., 당신이 찾고 있는 것은 오랫동안 주변에 있었습니다. 그것은 알려져있다인트라넷.
inetd에는 여러 가지 구현이 있습니다. 일부는 간단하고 소켓 활성화 작업만 수행합니다(보통 inetd
다른 기본 네트워킹 도구가 포함된 더 큰 패키지의 일부인 프로그램일 뿐입니다.GNU inetutils또는바쁜 상자또는 Linux로 포팅된 BSD 도구), 일부는 더 많은 기능을 제공합니다(시네트매우 인기가 있고,라인 네트워크자체적으로 "매우 과도한 기능"이라고 설명하며 inetd에 구현이 있습니다.체계(systemd가 구현하지 않는 것은 무엇입니까?)
거의 모든 UNIX 시스템에는 inetd 구현이 함께 제공됩니다. 전통적으로 "소형" 서비스(예: echo, Finger, ftp 등)에서는 inetd를 사용했지만 "대형" 서비스(예: httpd, NFS, 도우미, ssh)에서는 사용하지 않았습니다. 기본 서비스 이상이 필요하지 않은 한 배포판의 기본 inetd 구현을 사용하십시오.
답변2
또한 systemd에 소켓(TCP, UDP 또는 unix AF)을 열도록 요청한 다음 연결이 수신되면 서비스를 시작할 수도 있습니다. 모든 서비스가 기존 소켓을 통과하고 자체 소켓 생성을 선호하는 것은 아니기 때문에 systemd에는 요청한 서비스가 온라인에서 올바른 청취 소켓을 구매할 때까지 systemd가 연 소켓의 콘텐츠를 버퍼링하는 systemd-socket-proxyd라는 도우미도 포함되어 있습니다.