我在 Jenkins 构建结束时运行一个脚本来重新启动 Tomcat。众所周知,Tomcat 的 shutdown.sh 脚本在许多情况下都不能正常工作,因此我的脚本应该捕获 Tomcat 进程的 PID,然后尝试手动关闭它。这是我用来捕获 PID 的命令:
ps -ef | grep Bootstrap | grep -v grep | awk '{print $2}' > tomcat.pid
手动运行时的输出完美地检索了 PID。在 Jenkins 构建期间,我必须切换用户才能运行该命令。我正在使用“su user -c 'commands'”,如下所示:
su user -c "ps -ef | grep Bootstrap | grep -v grep | awk '{print $2}' > tomcat.pid"
但是,每当我这样做时,“awk”部分似乎都不起作用。它不只是检索 PID,而是捕获整个过程信息。为什么是这样?如何修复命令?