GNU parallel --semaphore按Ctrl-C后卡住,如何强制释放指定--id?
解决GNU parallel semaphore锁残留问题
紧急修复当前锁死状态
- 查看指定ID的信号量状态:
sem --id mutex_1a --status - 强制终止关联进程并清除锁:
sem --id mutex_1a --kill - 若上述命令无效,手动删除锁文件(GNU parallel的信号量文件默认存放在用户目录的
.parallel/semaphores下):rm -rf ~/.parallel/semaphores/mutex_1a
预防脚本中断后锁残留
在脚本开头添加自动清理旧锁的逻辑,每次启动脚本时会先清除之前的残留锁:
#!/bin/bash # 清理同名信号量的残留锁,忽略执行错误 sem --id mutex_1a --kill 2>/dev/null || true IFS=, while read -r col1 col2 col3 col4; do echo "started" sem --id mutex_1a -j+0 docker run --rm --gpus=all -v "/mnt/c/Work/Imaging/Data/dicomsSorted/$col1:/ukbdata/$col1" fbp:version1 ./runScripts.sh $col1 2 -a stdout; done < "/mnt/c/Work/Imaging/Data/forPipeline/pidAgeSexSite.csv" echo "waiting" sem --wait --id mutex_1a echo "finished"
内容的提问来源于stack exchange,提问作者DR_OG
相关产品推荐
相关产品推荐

