Shell脚本启动服务器并返回
我有一个启动服务器的shell脚本。实际上,我使用ssh连接到服务器并运行shell脚本。一旦启动,它就会将所有内容记录到控制台,而控制台不会返回。当我关闭我的机器,ssh连接断开,我启动的服务器关闭时,问题就开始了。我想我需要启动服务器并从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
#!/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命令启动服务器。现在看起来一切正常。