Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本启动服务器并返回_Shell - Fatal编程技术网

Shell脚本启动服务器并返回

Shell脚本启动服务器并返回,shell,Shell,我有一个启动服务器的shell脚本。实际上,我使用ssh连接到服务器并运行shell脚本。一旦启动,它就会将所有内容记录到控制台,而控制台不会返回。当我关闭我的机器,ssh连接断开,我启动的服务器关闭时,问题就开始了。我想我需要启动服务器并从shell返回。以下是我到目前为止的情况: #!/bin/bash java -Xmx1G -Dhttp.port=8080 -Dconfig.file=MyProject/conf/application.conf -cp ".:MyProject/lib

我有一个启动服务器的shell脚本。实际上,我使用ssh连接到服务器并运行shell脚本。一旦启动,它就会将所有内容记录到控制台,而控制台不会返回。当我关闭我的机器,ssh连接断开,我启动的服务器关闭时,问题就开始了。我想我需要启动服务器并从shell返回。以下是我到目前为止的情况:

#!/bin/bash
java -Xmx1G -Dhttp.port=8080 -Dconfig.file=MyProject/conf/application.conf -cp ".:MyProject/lib/*" play.core.server.NettyServer .
exit 0

关于调用此shell脚本后如何返回的任何建议?

在ssh到服务器后,只是将脚本(./myscript&)后台化将不会对其进行后台监控。必须断开stdin、stdout和stderr,并使其忽略挂断信号(SIGHUP)

nohup./myscript 0/dev/null&

我会做好的。或者,要捕获所有输出:


nohup./myscript 0 my.admin.log.file&

要避免在ssh会话关闭时终止脚本,请使用
nohup
(无挂断)并将输出重定向到日志文件:

nohup bash /path/to/startScript.sh > script.log 2>&1 &

您可以将stdout和stderr重定向到文件、后台并断开进程(或nohup-it),然后退出脚本


但是,正确的方法是使用诸如upstart之类的process manager守护程序。

似乎不起作用。一旦启动服务器,它就会给我一个PID,该PID存储在start.sh所在位置的文件中。但是当我尝试使用上面的命令时,它根本没有运行服务器。我可以看到它打印了一些东西,可能是PID,但服务器没有启动。只需运行:
nohup./start.sh&
,然后检查
nohup.out
文件中是否有任何可能的错误。我想我不知怎么搞砸了。我现在无法再阻止它了。我在哪里可以找到进程id以便杀死它?您可以执行
pgrep-fl bash
来获取运行bash进程的进程。或者使用ps-fu谢谢,我这样做了,现在看起来不错。我猜原因是因为缺乏权限,无法使用nohup命令启动服务器。现在看起来一切正常。