繁体   English   中英

检查Apache Tomcat状态时避免等待用户

[英]Avoid waiting for user when checking the Apache Tomcat status

作为 bash 脚本的一部分,我检查最近安装的 Apache Tomcat 状态

sudo systemctl status tomcat

output如下

● tomcat.service
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-01-30 16:25:48 UTC; 3min 9s ago
    Process: 175439 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 175447 (java)
      Tasks: 30 (limit: 4546)
     Memory: 253.0M
        CPU: 9.485s
     CGroup: /system.slice/tomcat.service
             └─175447 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.uti>

Jan 30 16:25:48 vps-06354c04 systemd[1]: Starting tomcat.service...
Jan 30 16:25:48 vps-06354c04 startup.sh[175439]: Tomcat started.
Jan 30 16:25:48 vps-06354c04 systemd[1]: Started tomcat.service.
Jan 30 16:25:48 vps-06354c04 systemd[1]: /etc/systemd/system/tomcat.service:1: Assignment outside of section. Ignoring.
Jan 30 16:25:48 vps-06354c04 systemd[1]: /etc/systemd/system/tomcat.service:2: Assignment outside of section. Ignoring.

这是我希望看到的信息,但在打印它之后, systemctl一直在等待用户键入一个键,破坏了我希望提供的自动化。

我怎样才能避免这种行为?

我很确定--no-pager选项可以防止这种情况发生。 我刚刚确认在我自己的系统上使用不同的服务。 否则,它会进行交互。

我不记得曾经看到过systemctl status要求输入,所以也许是这个命令中使用的sudo这样做,在这种情况下,你可以要求你的系统管理员在运行这个命令的帐户上启用无密码 sudo

在 shell 脚本中自动执行用户输入的通用解决方案是使用expect ,但对于只需要一次发送单个值的简单情况,通常可以使用echo并将值传递给命令(例如, echo 'foo' | sudo systemctl status tomcat ),尽管您永远不应该这样做来传递敏感信息(例如密码),因为该系统上的其他用户可能会访问这些信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM