【发布时间】:2014-12-14 07:16:04
【问题描述】:
环境:Centos6 64bit
有一个shell脚本(名为mysql.sh);它位于文件中:/home/user1/sbin/mysql.sh
在运行带有参数'restart'的脚本时,其结果如下:
1)密码:/home/user1/sbin/
#./mysql.sh restart Fail Prompt:No such file or directory
#/home/user1/sbin/mysql.sh restart ok
#../sbin/mysql.sh restart ok
2) 密码:/home/user1
#./sbin/mysql.sh restart Fail Prompt:No such file or directory
3)密码:/
#/home/user1/sbin/mysql.sh restart ok
任何路径下,mysql.sh都可以通过参数'start'和'stop'成功运行。
所以我猜这可能是脚本 (mysql.sh) 中的错误。此脚本与官方mysql.sh(mysql.server 脚本)类似,但有一些修改。
那有什么问题呢?
【问题讨论】:
-
../sbin/mysql.sh restart有效吗?听起来可能是错字,或者是您未向我们展示的代码中的错误。 -
说明
/home/user1/sbin restart有效的行暗示脚本是/home/user1/sbin而不是/home/user1/sbin/mysql.sh。您无法执行目录(目录的x权限授予您使用目录中文件的权限)。我认为这实际上是问题中的一个错字(你从最后错过了mysql.sh)。 -
#标记是否表明您正在以用户root的身份运行脚本?路径/home/user1/sbin/mysql.sh中有多少个符号链接(检查ls -l / /home /home/user1 /home/user1/sbin /home/user1/sbin/mysql.sh)?是否涉及任何不寻常的权限——同样的ls -l命令会揭示这一点? -
@JonathanLeffler,是的,你是对的,我最后错过了 mysql.sh。现在已经修改了。
-
您确定在点和斜线之间没有空格,例如
#. /mysql.sh?你为什么要使用“./”呢?这不是必需的。目录/home/user1也是如此。尝试仅使用sbin/mysql.sh restart调用您的脚本。键入命令时文件名完成是否有效?