我无法在后台启动 Jenkins(地址已被使用)

I Can't start Jenkins in background (Address already in use)

我是 运行ning jenkins 使用

java -jar jenkins.war -httpPort=31114

并且它正确启动,现在我正在尝试 运行 它在后台,我发现它可以使用 nohup java -jar jenkins.war -httpPort=31114 & 来完成,如此处 Start Jenkins in the background.

但是当我终止我在开始时启动的会话并尝试在同一端口的后台 运行 它时,我收到以下错误:

SEVERE: Container startup failed
java.io.IOException: Failed to start Jetty
    at winstone.Launcher.<init>(Launcher.java:186)
    at winstone.Launcher.main(Launcher.java:354)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at Main._main(Main.java:375)
    at Main.main(Main.java:151)
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:339)
    at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:395)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at winstone.Launcher.<init>(Launcher.java:184)
    ... 7 more

Caused by: java.net.BindException: Address already in use

这意味着 jenkins 已经 运行在给定端口上或其他进程正在使用该端口。

netstat -nltp 使用此命令检查所有打开的端口。如果 jenkin allready 运行ning 在该端口上或者其他进程正在使用该端口,则终止进程你可以 运行 jenkins 在其他端口上。

您使用的以下命令是正确的。可能是你打了两次。

nohup java -jar jenkins.war -httpPort=31114 & 

ps -ef | grep jenkins。检查詹金斯是否已经 运行ning.

我尝试将命令 nohup java -jar jenkins.war --httpPort=31114 & 添加到 bash 文件和 运行 文件,成功了