You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Ubuntu后从crontab调用Unison报标准输入读取失败错误求助

解决crontab调用Unison出现"failure reading from the standard input"错误

Ubuntu从20.04.3 LTS升级到22.04.3 LTS后,通过crontab调用Unison同步脚本时出现以下错误:

Fatal error: failure reading from the standard input (End of file)

命令行直接执行unison SCRIPT同步正常,但crontab环境下触发报错,以下是针对性解决办法:

核心修复步骤

  • 强制批处理模式:Unison在非交互环境下(如crontab)会因尝试读取stdin获取用户确认而触发EOF错误,添加-batch参数可强制其自动执行所有默认操作,无需等待输入。同时建议指定Unison绝对路径,避免crontab环境PATH缺失问题:

    */5 * * * * USER test -e /var/lock/unison-SCRIPT && exit 0 || (touch /var/lock/unison-SCRIPT;/usr/bin/unison SCRIPT -batch;rm /var/lock/unison-SCRIPT)
    
  • 优化锁文件权限:/var/lock目录可能需要root权限,普通用户创建锁文件可能失败导致Unison重复运行。可将锁文件移至用户有权限的目录:

    */5 * * * * USER test -e /home/USER/.lock/unison-SCRIPT && exit 0 || (mkdir -p /home/USER/.lock; touch /home/USER/.lock/unison-SCRIPT;/usr/bin/unison SCRIPT -batch;rm /home/USER/.lock/unison-SCRIPT)
    
  • 检查配置交互项:确保SCRIPT.prf中无需要手动确认的配置,比如将confirmbigdel设置为false,或在命令行用-confirmbigdel=false覆盖默认值,避免触发交互逻辑。

原理说明

crontab运行环境的标准输入(stdin)处于关闭状态,而Ubuntu 22.04下的Unison默认行为更严格,会在需要同步确认时尝试读取stdin,从而触发EOF错误。-batch参数强制Unison进入非交互模式,适配crontab的运行环境。

内容的提问来源于stack exchange,提问作者StefanMz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:25:12