$sh ./my_script
间接的用shell就能执行!我有点方向了,后来在网上找到了这个:https://unix.stackexchange.com/questions/136547/what-is-the-difference-between-running-bash-script-sh-and-script-sh
这个帖子讨论了 ./script.sh 和 bash ./script.sh的不同,我了解了,但对解决我的问题帮助不大。 再就是这个:https://unix.stackexchange.com/questions/203371/run-script-sh-vs-bash-script-sh-permission-denied 这是个比较全面的讨论Permission Denied的帖子。其中提到了磁盘挂载的时候如果带有“noexec”参数,就会导致这个问题,这跟我遇到的情况简直就是一模一样。遗憾的是,我仔细检查了我的/etc/fstab,以及当前挂载的情况,并无“noexec”参数。我继续尝试了在不同的挂载点上执行脚本,都是一样的结果。 另外这个帖子还提到了ACL,可以使用命令getfacl来检查对一个文件的访问控制,我这里也没发现任何问题。 检查用户/组,没有发现任何问题。 于是请教高人。高人说给出了几个建议: 1,脚本头部加上解释符“#/bin/sh”——试了,问题依旧 2,检查磁盘空间是否满了 —— 检查了,远没满 3,使用strace跟踪脚本的运行情况 strace打印了很详细的信息,但遇到系统调用就直接Permission denied,对于这个问题也没有更多的帮助。实在古怪了。 最后这个问题被解决了,但原因还是没找到,解决的方法估计你们也能猜出来了:重启服务器。这是我能想到的唯一的,可能行得通的解决方案。结果还真奏效了。 高人说:相信你还会遇到这个问题的。我说:墨菲定律,对么? 这个问题,虽然花费了半天时间,最后还是没找到原因,但学到了些新技能,也不算太亏。