ASSP 的作者向我发送了一个简单的监控脚本,但我不知道如何修复导致错误的 PROC= 行。
#!/bin/bash
# ASSP watchdog process.
#
# Start in the correct directory.
BASE=/usr/share/assp/
cd $BASE
# Check for a running ASSP process.
PROC=`ps -axvO ucomm | grep Schedule::Cron | grep perl | awk '{print $1}'`
FILES=`lsof -p "${PROC}" | grep /usr/share/assp | grep perl`
# If ASSP is not running, start it.
if [ "${FILES}" ]
then {
echo "ASSP is already running."
}
else {
echo "Restarting ASSP."
perl assp.pl
} fi
它出现以下错误。
ERROR: Must set personality to get -x option.
我不确定这条线是否接近工作状态。我正在考虑编写一个脚本,它只是检查是否有 perl assp.pl 脚本处于活动状态,如果没有,则手动启动它。此服务器运行 Debian 并安装了 ASSP/Postfix。
答案1
部分问题在于ps
它有十几个版本,Linux 的 ps 会尝试通过找出您要使用的版本选项来与所有版本兼容。以 开头的选项-
是 BSD 样式,但 -v 和 -O 是冲突的 BSD 选项。
尝试ps ax
获取当前正在运行的所有进程的命令列。由于您在管道中使用它,因此应该使用整个命令名称,但如果出于某种原因它截断了命令行,则使用axww
无限宽度。