Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
主管或cat或bash不';看不到已更改的文件_Bash_Caching_Supervisord - Fatal编程技术网

主管或cat或bash不';看不到已更改的文件

主管或cat或bash不';看不到已更改的文件,bash,caching,supervisord,Bash,Caching,Supervisord,我有一个主管“程序”(queue.sh),它运行从文本文件读取的bash脚本,如果文本文件不是空的,则运行另一个程序: while true; do # Read line 1 line=$(head -n1 ./.queue) echo $line if [ "$line" != "" ]; then # Remove line 1 sed -i '1d' ./.

我有一个主管“程序”(
queue.sh
),它运行从文本文件读取的bash脚本,如果文本文件不是空的,则运行另一个程序:

while true; do

        # Read line 1
        line=$(head -n1 ./.queue)
        echo $line

        if [ "$line" != "" ]; then
                # Remove line 1
                sed -i '1d' ./.queue

                # Call the download script
                /usr/bin/env php download.php $line
        else
                echo "Queue empty"
        fi

        sleep 2

done
download.php
需要几分钟,然后运行下一行。如果
.queue
包含20行,
queue.sh
将长时间处于繁忙状态。当它不忙时,它每隔2秒检查
.queue
内容

我的队列文件当前有3行。当我手动运行
queue.sh
时,我可以看到它在工作:它找到第1行,将其切掉,然后运行
download.php
。主管没有!即使在重新启动作业和整个守护进程之后,它也会每隔2秒不断地说
Queue empty
。在更改消息并重新启动作业后,它现在每2秒都会说
Queue empty II
。但是
.queue
不是空的,所以它应该运行这些行


在supervisor上下文中是否存在某种超级持久性文件缓存?我已经重新启动了作业和守护进程。我已经运行了
free&&sync&&echo3>/proc/sys/vm/drop\u缓存和&free
(不在主管上下文中!)。我已经触摸了.queue。什么都不管用。为什么主管的
队列.sh
坚持
.queue
为空?

问题在于目录。默认情况下,Supervisor运行在
/
中,而不是程序可执行文件所在的位置。主管有一个解决方案。新配置文件:

[program:xx]
command=/bin/bash queue.sh
directory=/my/path/xx

我必须重新启动服务(
service supervisor restart
),而不仅仅是程序(
supervisor ctl restart xx
)。

您确定脚本运行在正确的目录中吗?尝试将
/.queue
更改为绝对路径名。或者在脚本前面放置
cd
命令以切换到包含
.queue
的目录。顺便说一句,没有必要使用
/
,这是所有相对路径名的默认值。现在我觉得自己很愚蠢。主管有一个
目录
配置,可以修复所有问题。显然,重新启动程序是不够的。每次更改程序配置文件后,我都必须重新启动整个supervisor服务。谢谢