我已经被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。
ps一部分问题是它有十几个版本,Linux的ps试图通过找出你想要使用的版本的选项来兼容所有的版本。 选项开头-是BSD风格,但-v和-O是冲突的BSD选项。
试试ps ax来获取当前运行的所有进程的命令列。 既然你在pipe道中使用它,它应该使用整个命令名称,但是如果由于某种原因它截断命令行,使用axww为无限宽度。