本文介绍下,在linux中执行sh文件时报出错误消息:oswatcher_restart.sh: line 13: ./startOSW.sh: Permission denied的解决方法,供大家参考。
在linux下执行sh脚本文件时,出现如下的错误消息:
oswatcher_restart.sh: line 13: ./startOSW.sh: Permission denied
下面分享下我的解决过程,供有遇到类似问题的朋友作个参考。
1,首先,查看执行sh文件的内容
复制代码 代码示例:
[root@jbxue dbscripts]# more oswatcher_restart.sh
#!/usr/bin/ksh
#export oswdir=`df |grep mysqllog|awk {'print $6}'`
export oswdir=/mysqllog
#th=`ps -ef|grep -v $$|grep OSWatcher.sh`
#echo $th;
if [ `ps -ef|grep -v grep|grep OSWatcher.sh|wc -l` = "0" ]
then
cd $oswdir/osw
echo "begin 1"
./startOSW.sh 60 216
else
echo "OSWatcher is running "
fi
exit
2,执行sh命令
复制代码 代码示例:
[mysql@jbxue dbscripts]$ sh oswatcher_restart.sh
begin 1
oswatcher_restart.sh: line 13: ./startOSW.sh: Permission denied
[mysql@jbxue dbscripts]$
[mysql@jbxue dbscripts]$ ll /mysqllog/osw/startOSW.sh
-rw-r--r-- 1 755 mysql 1609 Sep 2 18:13 /mysqllog/osw/startOSW.sh
是755的权限,不知为何无法执行?!
3,通过搜索得知,需要查看前面第一栏的信息,看rwx等信息。
r-- --- --- 文文件属主可读,但不能写或执行
r-- r-- --- 文文件属主和属组用户(一般来说,是文件属主所在的缺省组)可读
r-- r-- r- - 文任何用户都可读,但不能写或执行
rwx r-- r- - 文文件属主可读、写、执行,属组用户和其他用户只可读
rwx r-x --- 文文件属主可读、写、执行,属组用户可读、执
rwx r-x r- x 文文件属主可读、写、执行,属组用户和其他用户可读、执行
rw- rw- --- 文文件属主和属组用户可读、写
rw- rw- r- - 文文件属主和属组用户可读、写,其他用户可读
rw- rw- --- 文文件属主和属组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件
chmod [who] operator [permission] filename
who 中 u 是文件主属权限 g 是属组用户权限 o 其他用户权限 a 是所有用户权限
+ 是增加权限 - 是取消权限 = 是设定权限
r 是读权限 w 是写权限 x是执行权限 u,g,o 针对文件属主、属组用户及其他用户的操作。
4,再看我的ll文件结果,没有x标示,那就是没有执行权限.
复制代码 代码示例:
[mysql@jbxue dbscripts]$ ll /mysqllog/osw/startOSW.sh
-rw-r--r-- 1 755 mysql 1609 Sep 2 18:13 /mysqllog/osw/startOSW.sh
5,因此重新赋予755权限
复制代码 代码示例:
[root@jbxue dbscripts]# chmod 755 /mysqllog/osw/startOSW.sh
[root@jbxue dbscripts]# ll /mysqllog/osw/startOSW.sh
-rwxr-xr-x 1 755 mysql 1609 Sep 2 18:13 /mysqllog/osw/startOSW.sh
看到了,有了x标示了,表示可以执行了.
6,再次执行sh,ok了。
复制代码 代码示例:
[root@jbxue dbscripts]# sh oswatcher_restart.sh
begin 1
oswatcher_restart.sh: ./startOSW.sh: /bin/ksh: bad interpreter: No such file or directory
[root@jbxue dbscripts]#
报一个小错,不过这是另外的问题,不妨碍解决本节的问题。