나는 bash 스크립트를 가지고 sync_nodes.sh
있고 그것을 관리하기 위해 systemd 장치를 사용하고 싶습니다 sync_nodes.service
.
내 로그에 명령 진행 상황을 rsync
표시하고 싶습니다. 명령을 대화형으로 실행하면 매초마다 진행 기록이 수신됩니다. 이는 제가 원하는 것입니다. 그러나 실행하면 sync_nodes.service
rsync 작업이 완료될 때까지 진행 정보가 로그에 전송되지 않습니다.
sync_nodes.sh
#!/bin/bash
echo starting...
for host in 192.168.42.3{0,1,2}
do
rsync \
--progress \
--archive \
--delete \
--compress \
-e 'ssh -i /home/ops/private_key -o StrictHostKeyChecking=no' \
/home/ops/code/ \
"ops@${host}:/home/ops/code/" \
| stdbuf --output L tr '\r' '\n' \
| sed 's/^[[:space:]]*//'
done
상호작용을 실행하면 sync_nodes.sh
내가 원하는 상태 정보가 인쇄됩니다.
$ ./sync_nodes.sh
starting...
sending incremental file list
sending incremental file list
sending incremental file list
./
model.data
32,768 0% 0.00kB/s 0:00:00
21,233,664 1% 20.22MB/s 0:00:50
42,565,632 3% 20.29MB/s 0:00:49
62,193,664 5% 19.77MB/s 0:00:49
# ...
sync_nodes.service
[Service]
ExecStart=/home/ops/sync_nodes.sh
SyslogIdentifier=sync_nodes
장치 시작
sudo systemctl start sync_nodes.service
로그 출력을 봅니다.
$ sudo journalctl -f -u sync_nodes
Sep 11 20:25:58 srv0 systemd[1]: Starting sync_nodes.service...
Sep 11 20:25:58 srv0 sync_nodes[6138]: starting...
Sep 11 20:25:58 srv0 systemd[1]: Started sync_nodes.service.
Sep 11 20:25:59 srv0 sync_nodes[6138]: sending incremental file list
Sep 11 20:25:59 srv0 sync_nodes[6138]: sending incremental file list
결국 전송이 완료된 후 모든 상태가 로그에 인쇄됩니다. 진행 상황을 주기적으로 인쇄하고 싶습니다.
로그에 rsync 진행 상황을 주기적으로 표시하는 방법은 무엇입니까?