shell-init:检索当前目录时出错:getcwd——通常的修复程序不起作用

新手上路,请多包涵

我有一个简单的脚本:

 #!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
    ssh $server "hostname; readlink /opt/mydir/mylink;"
done

它工作正常 - 程序返回正确的主机名和链接 - 除了我在一些但不是所有服务器上收到以下错误:

shell-init:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

所有目录都存在。最常见的建议之一是添加 cd、cd - 或 cd /。添加该步骤时发生的所有事情都是额外的:

chdir:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

我尝试启动 nfs 守护程序,以防我的 homedir 存在一些混淆,并替换 /etc/init.d 以防问题出在 /opt 上。没有不同

这只是一个烦恼,除了当我尝试使用 ansible playbook 而不是简单的 ssh 命令时,该服务器会失败。

任何见解将不胜感激。

原文由 Todd Ellner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
1 个回答

我相信这个错误根本与脚本无关。问题是:您尝试运行脚本时所在的目录不再存在。例如,您有两个终端, cd somedir/ 在第一个终端,然后 mv somedir/ somewhere_else/ 在第二个终端,然后尝试在第一个终端中运行任何内容 - 您将收到此错误消息。

请注意,即使您重新创建具有相同名称的目录,您也会收到此错误,因为新目录将具有不同的 inode 索引。

至少我的情况是这样。

原文由 Putnik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题