Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';t初始值';d Python进程看到其他进程了吗?_Python_Linux_Bash - Fatal编程技术网

为什么可以';t初始值';d Python进程看到其他进程了吗?

为什么可以';t初始值';d Python进程看到其他进程了吗?,python,linux,bash,Python,Linux,Bash,我有一个Python进程在我的系统上运行,并检查是否有其他进程正在运行。我有一个问题,在重新启动时,我的Python无法工作。我认为这和开机时的环境有关。如果我停止我的Python脚本(从启动时开始),并以root用户或“dataturbine”用户的身份启动它,它就可以正常工作。以下是init脚本的有趣部分: SERVER_HOST=`hostname` SERVER_PORT='3333' RBNB_LOG_DIR=/var/log/rbnb LOG_FILE="${RBNB_LOG_DIR

我有一个Python进程在我的系统上运行,并检查是否有其他进程正在运行。我有一个问题,在重新启动时,我的Python无法工作。我认为这和开机时的环境有关。如果我停止我的Python脚本(从启动时开始),并以root用户或“dataturbine”用户的身份启动它,它就可以正常工作。以下是init脚本的有趣部分:

SERVER_HOST=`hostname`
SERVER_PORT='3333'
RBNB_LOG_DIR=/var/log/rbnb
LOG_FILE="${RBNB_LOG_DIR}/dataturbine-rpc.log"
DT_USER=dataturbine
OWNER=${DT_USER}:${DT_USER}
RBNB_RUN_DIR=/var/run/rbnb
PIDFILE=${RBNB_RUN_DIR}/dataturbine-rpc.pid
SCRIPT=/usr/local/rbnb/scripts/dataturbine.py

######################################################################################
start() {
if [ ${USER} == ${DT_USER} ]
   then
     ${SCRIPT} -logfile ${LOG_FILE} -bindport 12000 -bindip 0.0.0.0 > /dev/null 2>&1 & echo $! > ${PIDFILE}
   else
     su -m -c "${SCRIPT} -logfile ${LOG_FILE} -bindport 12000 -bindip 0.0.0.0  > /dev/null 2>&1 & echo \$"'!'" > ${PIDFILE}" ${DT_USER}
   fi
}
下面是运行Python命令来检查正在运行的进程。即使进程正在运行,它也会从init上的“WC”命令返回一个0:

output = subprocess.check_output("/bin/ps -ef | /bin/grep 'DaqToRbnb' | /bin/grep -v grep | /usr/bin/wc -l", shell=True)

当您跳过灰色时,输出中有什么内容?我相信所有其他流程都已经可见了,但也许您正在寻找的还真的不存在?尝试不使用grep,这样您的问题就会从“为什么我看不到其他进程”变为“为什么ps不工作”(何时运行?是否已装入/proc?)或“为什么我看不到特定进程”(为什么它还没有运行?)-还记得捕获stderr,而不仅仅是stdoutMy Python进程在循环中运行。如果从init运行,它永远不会看到其他进程。另一方面,很可能,
grep'DaqToRbnb'| grep-v grep | wc-l
可以简化为
grep-c'[D]aqToRbnb'
…非常好的一点。@mikeboldischar仍然-它看到了什么?它看不到不同的进程列表(除非您使用gr sec内核、特定的selinux/apparmor配置文件或类似文件运行),那么ps的输出或错误是什么呢?