Dòng lệnh socat sau hoạt động như mong đợi khi được nhập tại dấu nhắc shell:
# /usr/bin/socat UDP-RECV:4321 STDOUT
Nó lắng nghe trên cổng UDP 4321 và ghi mọi thứ nhận được vào đầu ra tiêu chuẩn.
Sau đây là một nỗ lực bắt đầu lệnh này dưới dạng dịch vụ systemd với ý định ghi dữ liệu nhận được vào nhật ký systemd (đích đến mặc định cho đầu ra tiêu chuẩn của dịch vụ):
# /etc/systemd/system/socat.service
[Service]
ExecStart=/usr/bin/socat UDP-RECV:4321 STDOUT
Tuy nhiên, socat thoát ngay lập tức khi dịch vụ này được bắt đầu:
Process: 7425 ExecStart=/usr/bin/socat UDP-RECV:4321 STDOUT (code=exited, status=0/SUCCESS)
Nghiên cứu vấn đề (chạy socat
với -d -d -d -d
) đánh giá rằng nó nhận được EOF trên đầu ra tiêu chuẩn:
N starting data transfer loop with FDs [5,5] and [1,1]
N socket 2 (fd 1) is at EOF
I close(5)
N exiting with status 0
Có thể sử dụng socat
như một dịch vụ systemd?
socat
như một dịch vụ systemd, không có gì ngăn bạn làm điều đó. Nhưng tôi thực sự tự hỏi những mong đợi của bạn vềstdout
luồng. Bạn chắc chắn không mong đợi một dịch vụ hệ thống được kết nối với phiên cuối, phải không?