gpt4 book ai didi

bash - 从远程服务器调用的脚本无法正确运行服务

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

我有一个 unix 脚本,它调用远程 unix 服务器上的另一个脚本。

在其他命令中,我正在停止服务。停止命令本质上翻译为

ssh -t -t -q ${AEM_USER}@${SERVERIP}   'bash -l -c "service aem stop"'

服务正在停止,但是当我重新启动服务时,它只是创建了 .pid 文件,并没有执行启动。当我运行启动命令时,即

ssh -t -t -q ${AEM_USER}@${SERVERIP}   'bash -l -c "service aem start"'

它没有显示任何错误。前往服务器并检查状态

service aemauthor status

显示以下消息

aem dead but pid file exists

此外,当通过登录到服务器启动服务时,它与消息一起按预期工作

Removing stale pidfile (pid: 8701)
Starting aem

最佳答案

我们不知道aem的服务脚本的细节。

我猜这个问题与 SIGHUP 有关信号。当我们从 shell 注销或与 ssh 断开连接时,操作系统将向所有在此终止的 shell 中启动的进程发送 HUP 信号。如果进程没有处理 HUP 信号,它会默认退出。

当我们通过ssh远程运行一个命令时,这个命令启动的进程会在ssh session 终止后收到HUP信号。

我们可以使用 nohup命令忽略 HUP 信号。

你可以试试

ssh -t -t -q ${AEM_USER}@${SERVERIP} 'bash -l -c "nohup service aem start"'

如果有效,您可以使用nohup 命令在服务脚本中启动aem。

关于bash - 从远程服务器调用的脚本无法正确运行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277571/

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