【问题标题】:Tomcat startup script permission on Mac OS XMac OS X 上的 Tomcat 启动脚本权限
【发布时间】:2010-12-12 08:57:09
【问题描述】:

我最近开始使用 Mac OS X 10.5.8 进行开发。我成功安装了 tomcat 并为我的环境变量创建了 launchd.conf。

我相信它工作正常。因为我可以使用 maven 和 cargo 插件成功地使用 Netbeans 构建一个项目,所以我找到了 online 一个用于启动和停止 tomcat 的脚本

#!/bin/bash

case $1 in
 start)
  sh /Library/apache-tomcat-6.0.20/bin/startup.sh
 ;; 
 stop)
  sh /Library/apache-tomcat-6.0.20/bin/shutdown.sh
 ;;
 restart)
  sh /Library/apache-tomcat-6.0.20/bin/shutdown.sh
  sh /Library/apache-tomcat-6.0.20/bin/startup.sh
 ;;
 *)
 echo "Usage :start|stop|restart"
 ;;
 esac
 exit 0

该脚本是在 nano 的 sudo sh 中创建的 但是当我想运行它时。吐了这个

sh: /usr/bin/tomcat: 权限被拒绝

我添加了chmod 755 *.sh and *.bat inside /Library/apache-tomcat-6.0.20/bin

仍然拒绝访问,那我该怎么办?我有这台机器的管理员权限。

感谢阅读

【问题讨论】:

    标签: macos bash tomcat scripting


    【解决方案1】:

    进入Tomcat bin目录并运行以下命令:

    chmod +x *.sh
    

    这对我有用。

    【讨论】:

    • 在 macOS 10.12.6 上使用 Apache Tomcat 8.5.16 取得成功
    • 在 Apple Silicon 的 macOS Big Sur 11.5.2 上使用 Tomcat 10.0.10 取得成功。
    【解决方案2】:

    您将tomcat 脚本安装到了哪里?我建议您将其安装到/usr/bin。安装后,确保权限正确(即chmod 755 /usr/bin/tomcat)。然后您可以通过ls -l /usr/bin/tomcat 确认。

    如果/usr/bin/tomcat 的权限正确后仍然出现错误,则可以在#!/bin/bash 行之后添加以下两行。

    set -x
    set -v
    

    通过以上几行,bash 将输出附加信息,让您可以了解正在执行的内容以及发生错误的位置。

    【讨论】:

    • 好的,非常感谢您的提示。它确实启动和停止服务器,但是当我执行 tomcat 时停止它抛出异常,但它正在停止服务器
    • 这是我在 /etc/launchd.conf setenv JAVA_VERSION 1.6 setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/ setenv JRE_HOME /System 中的环境变量/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/ setenv CATALINA_BASE /Library/apache-tomcat-6.0.20 setenv CATALINA_HOME /Library/apache-tomcat-6.0.20 setenv CATALINA_TMPDIR /Library/apache-tomcat- 6.0.20/温度
    • 这里是错误 EVERE: Catalina.stop: java.net.ConnectException: Connection denied at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl. java:333) 在 java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) 在java.net.Socket.connect(Socket.java:525) 在 java.net.Socket.connect(Socket.java:475) 在 java.net.Socket.(Socket.java:372) 在 java.net .Socket.(Socket.java:186)
    • 在 java.net.Socket.(Socket.java:186) 在 org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422) 在 sun.reflect.NativeMethodAccessorImpl .invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java :597) 在 org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)
    • 使用 CATALINA_BASE: /Library/apache-tomcat-6.0.20 使用 CATALINA_HOME: /Library/apache-tomcat-6.0.20 使用 CATALINA_TMPDIR: /Library/apache-tomcat-6.0.20/temp 使用JRE_HOME:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/ touch:/Library/apache-tomcat-6.0.20/logs/catalina.out:权限被拒绝/Library/apache-tomcat-6.0 .20/bin/catalina.sh:第 310 行:/Library/apache-tomcat-6.0.20/logs/catalina.out:权限被拒绝
    【解决方案3】:

    1) 进入tomcat目录,最好是“/usr/local/folder-name”

    2) 检查文件夹的权限:ls -l

    3) 使用以下命令更改权限:sudo chmod -R 755 文件夹名称

    4) 将所有者更改为当前所有者:sudo chown -R owner-name:group-name folder-name 例如 sudo chown -R userName:admin 文件夹名称

    尝试再次执行脚本,它应该可以工作。

    【讨论】:

    • 通过阅读Unix Stack ExchangeSuperUser Stack Exchange 上的页面,似乎Tomcat 属于/opt 而不是/usr/local:与操作系统无关,来自独立供应商。 /etc/opt/package 用于配置文件,/var/opt/package 用于日志、假脱机和类似文件。
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 2011-03-06
    • 2012-06-03
    • 2017-02-24
    • 2017-01-16
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多