我有一个bash脚本,它永远循环,在里面它检查一个环境变量,看它是否应该运行php yii process-queue
。顺便说一下,这个脚本是docker容器的命令,PID 1也是如此。
ps aux
的输出:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19720 3340 ? Ss 09:26 0:00 /bin/bash /var/www/hub/process-queue-runner.sh
root 293 0.0 0.0 19936 3664 ? Ss 09:28 0:00 /bin/bash
root 1927 0.0 0.0 6012 648 ? S 09:42 0:00 sleep 0.5
root 1928 0.0 0.0 36092 3164 ? R+ 09:42 0:00 ps aux
当我从命令行运行export RUNPROCQ=true
时,我预计循环开始运行php yii process-queue
但它没有 - 是否有一个命令我可以在我的bash脚本中运行,所以它可以看到{ {1}}环境变量值的变化?
我的bash脚本名为RUNPROCQ
:
process-queue-runner.sh
以下是docker-compose.yml文件中的相关部分:
#!/bin/bash
while :
do
if [[ ${RUNPROCQ} != "false" ]]; then
php yii process-queue
fi
sleep 0.5
done
答案 0 :(得分:1)
它不会像那样工作,因为你在父shell中设置RUNPROCQ变量,你的脚本将无法读取它。也许你应该在 process-queue-runner.sh 中尝试这样的事情:
RUNPROCQ="true"
#or
RUNPROCQ="false"
#...
echo RUNPROCQ="$RUNPROCQ" > /tmp/.myvars
在 refresh_db.sh 中添加:
%include "std_string.i"
%include "std_string_ref.i"
%feature("director") DirectorClass;
%include "DirectorClass.h"
答案 1 :(得分:0)
你的剧本很好。
$ export RUNPROCQ=true
$ ./ba.sh
php yii process-queue
php yii process-queue
php yii process-queue
php yii process-queue
^C
$ cat ba.sh
while :
do
if [[ ${RUNPROCQ} != "false" ]]; then
echo php yii process-queue
fi
sleep 0.5
done
答案 2 :(得分:0)
用户supervisord并忘记这个手册脚本。 主管可以获取所有日志并监控流程