gpt4 book ai didi

如果我直接登录远程服务器并调用它,Tomcat 将启动,但当我尝试使用 ssh 通过远程命令调用它时不会启动

转载 作者:行者123 更新时间:2023-11-28 22:22:49 25 4
gpt4 key购买 nike

我正在尝试通过调用 ./start 来启动 tomcat。 tomcat_user 下的脚本目录当我直接登录服务器并调用 /home/tomcat_user/start 时它可以工作,但如果我从不同的主机使用它则不会:

ssh user@server '/home/tomcat_user/start'

我相信它与在开始时执行的文件(可能像环境变量等)在直接登录远程服务器时与从上面那样在 ssh 中执行时不同有关。

有没有一种方法可以实现与直接登录到服务器并使用 ssh 执行远程命令的方式相同的行为,以自动执行日志记录部分?

非常感谢你。

好的,在阅读了关于 nohup 的内容之后,虽然这是一个很好的解释,但恐怕这不是问题所在,因为 tomcat 似乎没有开始开始(并且在 ssh 结束时不会被杀死(我实际上是在 sleep ) 500 在传递给 ssh 的命令末尾,但仍然无法启动 tomcat))。我想得越多,我就越认为它是环境变量,但我不完全知道是什么。 tomcat_user 主目录中没有 .bashrc 或 .profile,我对它们不太熟悉。

我说它是环境变量的原因是,当我直接登录并启动 tomcat 时,控制台会写入所有环境变量(例如 TOMCAT_HOME、CATALINA_HOME、JAVA_HOME 等),然后显示“正在启动 tomcat”,但是当我通过ssh,没有任何环境变量被打印出来。我只得到“启动tomcat”。我想我可以很容易地在我的 ssh 脚本中设置这些变量,但我不确定这些是否是唯一的变量,所以我想知道是否可以在传递给 ssh 的脚本中直接模仿相同的日志记录行为.

仍然很困惑,不知道如何进行。帮助表示赞赏!
谢谢,

尝试使用 nohup start& 启动 tomcat 时似乎无法继续,因为它会打印出用法(不确定如何解释用法以及如何启动 tomcat。我应该以不同的方式使用 start 来启动 tomcat 吗?)。这是 nohup.out 的内容:

正在启动 tomcat_user...

使用 CATALINA_BASE:/prod/web/edmsserv/current

使用 CATALINA_HOME:/opt/tomcat-6.0.18

使用 CATALINA_TMPDIR:/prod/web/edmsserv/current/temp

使用 CATALINA_OPTS:-DappName=edmsserv -server -Xmx768m -XX:PermSize=256m -XX:MaxPermSize=256m -DEXPD_APPL_DOMAIN=QA -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:-UseStringCache -XX:+AggressiveOpts -XX: MaxInlineSize=75 -XX:FreqInlineSize=700 -XX:InterpreterProfilePercentage=10 -XX:CompileThreshold=20000 -XX:OnStackReplacePercentage=80 -XX:ReservedCodeCacheSize=128m -XX:AllocatePrefetchStyle=2 -XX:AllocatePrefetchDistance=896 -Dsun.rmi。 dgc.client.gcInterval=28800000 -Dsun.rmi.dgc.server.gcInterval=28800000 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Dsun.net.inetaddr.ttl=0 -Dcom.sun.management。 jmxremote -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.port=26236 -Dcom.sun.management.jmxremote.access.file=/export/home/edmsserv/.jmxremote.access - Dcom.sun.management.jmxremote.password.file=/export/home/edmsserv/.jmxremote.password -Dcom.sun.management.jmxremote.ssl =假

使用 CLASSPATH::/opt/tomcat-6.0.18/bin/bootstrap.jar:/export/home/db2inst3/sqllib/java/db2jcc.jar:/export/home/db2inst3/sqllib/java/sqlj.zip:/export/home/db2inst3/sqllib/function:/export/home/db2inst3/sqllib/java/db2jcc_license_cu.jar:.:

使用 JRE_HOME:/opt/java-1.6.0_26

用法:pargs [-acexF] { pid |核 } ...

(显示过程参数和环境)

-a:显示进程参数(默认)

-c:将字符解释为 7 位 ascii,而不考虑语言环境

-e:显示环境变量

-l:将参数显示为命令行

-x:显示辅助向量条目

-F:强制抓取目标进程

最佳答案

您可以尝试以下命令吗?

ssh user@server 'cd/home/tomcat_user ; nohup/home/tomcat_user/start &'

这将在/home/tomcat_user 下创建一个 nohup.out 文件。理想情况下,这个命令应该可以解决问题;如果没有,nohup.out 将提供有关失败原因的详细信息。

如果我没记错的话,ssh 应该初始化环境变量。如果您认为环境变量导致问题,请发出以下命令来运行启动脚本(假设您使用的是 bash shell)。

ssh user@server 'cd/home/tomcat_user ; . ./bash_profile ; nohup/home/tomcat_user/start &'

关于如果我直接登录远程服务器并调用它,Tomcat 将启动,但当我尝试使用 ssh 通过远程命令调用它时不会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com