这是我正在运行的命令:
parallel -u ::: 'watch -n 0.1 /home/cringeposter/zfs-mount.sh' 'watch -n 0.1 drill graph.microsoft.com' 'rclone bisync onedrive: /home/cringeposter/zfs/onedrive --verbose --check-access --ignore-checksum' 'rclone bisync onedrive-uni: /home/cringeposter/zfs/onedrive-uni --verbose --check-access --ignore-checksum'
这两个 rclone 命令在两个目录上进行双向同步。zfs-mount.sh
需要该脚本是因为Linux 上的 ZFS 问题导致加密数据集被随机卸载,而drill
需要该调用以避免 rclone 因无法解析域而停止(这样 IP 地址就会被 dnsmasq 缓存)。
现在我必须在 bisync 成功完成后手动停止 GNU parallel,方法是在终端仿真器中按 CTRL+C,但如果可以自动完成就好了。
两个watch
进程退出后仍继续运行,有没有办法在两个进程都退出rclone
后自动向它们发送 SIGINT ?rclone
答案1
那么(经过测试)怎么样:
parallel -j0 --halt now,done=2 --lb \
::: "ping pi.dk" "ping tange.dk" \
"traceroute pi.dk" "traceroute tange.dk"
(未经测试):
parallel -j0 --halt now,done=2 --lb \
::: 'watch -n 0.1 /home/cringeposter/zfs-mount.sh' \
'watch -n 0.1 drill graph.microsoft.com' \
'rclone bisync onedrive: /home/cringeposter/zfs/onedrive --verbose --check-access --ignore-checksum' \
'rclone bisync onedrive-uni: /home/cringeposter/zfs/onedrive-uni --verbose --check-access --ignore-checksum'