我有一个程序将其设置存储在 ~/.config/myprogram
我既可以交互使用,也可以与批处理排队系统一起使用。交互式运行时,我希望该程序使用我的配置文件(确实如此)。但是,在批处理模式下运行时,不需要配置文件,因为我指定了覆盖所有相关设置的命令行选项。此外,通过网络访问配置文件会使程序的启动时间增加几秒钟。如果文件不存在,程序将启动得更快(由于每个作业仅需一分钟左右,因此对批处理作业的吞吐量有重大影响)。但是因为我也以交互方式使用该程序,所以我不想一直移动/删除配置文件。根据我在群集上安排批处理作业的时间(基于其他用户的使用情况),
(此外:网络文件性能如此之慢可能是一个错误,但是我只是集群的用户,所以我只能解决它,而不能解决它。)
我可以构建不读取配置文件(或不具有命令行选项)以供批处理使用的程序版本,但是该程序的构建环境设计欠佳,难以设置。我非常喜欢使用通过系统的软件包管理器安装的二进制文件。
如何欺骗该程序的特定实例以假装我的配置文件不存在(无需修改程序)?我希望表单有包装pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
,但是我对其他解决方案持 开放态度。
LD_PRELOAD
钩子。这比替代方法()容易(如果知道C,则可以在一两个小时内实现)ptrace
。您也可以使用fakechroot来执行此操作(我相信这是LD_PRELOAD)。