[英]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.