Tomcat9 在步骤 NAMESPACE 处失败

Gim*_*bap 4 linux debian tomcat server systemctl

我的操作系统是Debian 10(Buster),4.19内核,Tomcat9似乎不稳定。

\n\n

我不想在运行“systemctl status tomcat9.service”命令时看到任何错误消息。

\n\n

但是,“systemctl status tomcat9.service”命令打印错误消息。

\n\n
\xe2\x97\x8f tomcat9.service - Apache Tomcat 9 Web Application Server\n   Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor preset: enabled)\n   Active: failed (Result: exit-code) since Tue 2020-03-03 21:02:15 KST; 12min ago\n     Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html\n  Process: 25999 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy.sh (code=exited, status=226/NAMESPACE)\n\nMar 03 21:02:15 doonas.com systemd[1]: Starting Apache Tomcat 9 Web Application Server...\nMar 03 21:02:15 doonas.com systemd[25999]: tomcat9.service: Failed to set up mount namespacing: No such file or directory\nMar 03 21:02:15 doonas.com systemd[25999]: tomcat9.service: Failed at step NAMESPACE spawning /usr/libexec/tomcat9/tomcat-update-policy.sh\nMar 03 21:02:15 doonas.com systemd[1]: tomcat9.service: Control process exited, code=exited, status=226/NAMESPACE\nMar 03 21:02:15 doonas.com systemd[1]: tomcat9.service: Failed with result \'exit-code\'.\nMar 03 21:02:15 doonas.com systemd[1]: Failed to start Apache Tomcat 9 Web Application Server.\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,尽管出现错误消息,我还是确认该网页工作正常。

\n\n

我不知道为什么会发生这种情况。

\n\n

我试图解决这个问题。

\n\n
    \n
  1. shutdown.sh、startup.sh 已激活。
  2. \n
\n\n

但是,它仍然不起作用。

\n\n
root@doonas:/usr/share/tomcat9/bin# bash shutdown.sh\nUsing CATALINA_BASE:   /usr/share/tomcat9\nUsing CATALINA_HOME:   /usr/share/tomcat9\nUsing CATALINA_TMPDIR: /usr/share/tomcat9/temp\nUsing JRE_HOME:        /usr\nUsing CLASSPATH:       /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar\nNOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/jav                                                                                     a.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED\nMar 03, 2020 9:14:13 PM org.apache.catalina.startup.Catalina stopServer\nSEVERE: No shutdown port configured. Shut down server through OS signal. Server not shut down.\nroot@doonas:/usr/share/tomcat9/bin# bash startup.sh\nUsing CATALINA_BASE:   /usr/share/tomcat9\nUsing CATALINA_HOME:   /usr/share/tomcat9\nUsing CATALINA_TMPDIR: /usr/share/tomcat9/temp\nUsing JRE_HOME:        /usr\nUsing CLASSPATH:       /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar\nTomcat started.\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  1. 我通过引用this 链接修改了符号链接。
  2. \n
\n\n

他说“Tomcat 被 systemd 沙箱化了,只有以下目录的写权限”

\n\n

但是,它仍然不起作用。

\n\n
root@doonas:/var/lib/tomcat9# ls -l\ntotal 12\ndrwxr-xr-x 2 root   root   4096 Mar  3 21:00 conf\ndrwxr-xr-x 2 tomcat tomcat 4096 Jun 14  2019 lib\nlrwxrwxrwx 1 root   root     16 Mar  3 20:48 logs -> /var/log/tomcat9\ndrwxr-xr-x 2 root   root   4096 Feb 18 13:31 policy\nlrwxrwxrwx 1 root   root     19 Mar  3 20:48 work -> /var/cache/tomcat9/\nroot@doonas:/var/lib/tomcat9# ls -l conf/Catalina\nlrwxrwxrwx 1 root root 21 Mar  3 21:00 conf/Catalina -> /etc/tomcat9/Catalina\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的 Tomcat9 信息。

\n\n

CATALINA_BASE 是 /usr/share/tomcat9。

\n\n
root@doonas:/usr/share/tomcat9# ls -l\ntotal 24\ndrwxr-xr-x 2 root root 4096 Feb 17 10:37 bin\nlrwxrwxrwx 1 root root   13 Mar  3 21:14 conf -> /etc/tomcat9/\n-rw-r--r-- 1 root root 1017 Jun  3  2019 default.template\ndrwxr-xr-x 2 root root 4096 Feb 17 10:37 etc\ndrwxr-xr-x 2 root root 4096 Feb 17 10:37 lib\n-rw-r--r-- 1 root root  133 Apr  1  2019 logrotate.template\nlrwxrwxrwx 1 root root   21 Mar  3 21:10 logs -> /var/lib/tomcat9/logs\nlrwxrwxrwx 1 root root   23 Mar  3 21:10 policy -> /var/lib/tomcat9/policy\ndrwxr-xr-x 5 root root 4096 Feb 17 10:37 skel\nlrwxrwxrwx 1 root root   21 Mar  3 21:10 work -> /var/lib/tomcat9/work\nroot@doonas:/usr/share/tomcat9# ls -l /etc/tomcat9/\ntotal 208\ndrwxrwxr-x 3 root tomcat   4096 Feb 18 13:26 Catalina\n-rw-r----- 1 root tomcat   7483 Feb  4  2019 catalina.properties\n-rw-r----- 1 root tomcat   1400 Jul  5  2017 context.xml\n-rw-r----- 1 root tomcat   1149 Nov 21  2017 jaspic-providers.xml\n-rw-r----- 1 root tomcat   2799 Jun 14  2019 logging.properties\ndrwxr-xr-x 2 root tomcat   4096 Feb 17 10:37 policy.d\n-rw-r----- 1 root tomcat   7638 Feb 18 13:08 server.xml\n-rw-r----- 1 root tomcat   2286 Feb 18 10:49 tomcat-users.xml\n-rw-r----- 1 root tomcat 170202 Nov 18  2017 web.xml\nroot@doonas:/usr/share/tomcat9# ls -l /var/lib/tomcat9/\ntotal 12\ndrwxr-xr-x 2 root   root   4096 Mar  3 21:00 conf\ndrwxr-xr-x 2 tomcat tomcat 4096 Jun 14  2019 lib\nlrwxrwxrwx 1 root   root     16 Mar  3 20:48 logs -> /var/log/tomcat9\ndrwxr-xr-x 2 root   root   4096 Feb 18 13:31 policy\nlrwxrwxrwx 1 root   root     19 Mar  3 20:48 work -> /var/cache/tomcat9/\nroot@doonas:/usr/share/tomcat9# ls -l /etc/tomcat9/\nCatalina/             context.xml           logging.properties    server.xml            web.xml\ncatalina.properties   jaspic-providers.xml  policy.d/             tomcat-users.xml\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

该错误消息不是来自 tomcat,而是来自 systemd。此非特定消息(GitHub Issue 10972)已在 Systemd 243 中修复。

问题是什么:在单元文件中ReadWritePath=指定了选项,但文件夹/路径不存在。

要修复此问题,请运行systemctl cat tomcat9以获取单元文件的完整内容以及所有可能存在的覆盖文件。然后检查所有行并ReadWritePath=确保指定的目录确实存在。