我有一个简单的脚本:
#!/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 许可协议
我相信这个错误根本与脚本无关。问题是:您尝试运行脚本时所在的目录不再存在。例如,您有两个终端,
cd somedir/
在第一个终端,然后mv somedir/ somewhere_else/
在第二个终端,然后尝试在第一个终端中运行任何内容 - 您将收到此错误消息。请注意,即使您重新创建具有相同名称的目录,您也会收到此错误,因为新目录将具有不同的 inode 索引。
至少我的情况是这样。