Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
当我从远程服务器注销时,mysql连接终止_Mysql_Bash_Ssh - Fatal编程技术网

当我从远程服务器注销时,mysql连接终止

当我从远程服务器注销时,mysql连接终止,mysql,bash,ssh,Mysql,Bash,Ssh,我编写了一个脚本,每6秒连接一次本地mysql服务器,检查表中是否有数据。如果有数据,它会运行一些php命令,然后从表中删除该数据。我通过ssh登录到我的远程服务器共享主机,然后复制脚本并使用命令nohup./script.sh 0alert.log执行它&因此它在后台运行,并将所有输出写入alert.log文件。我的问题是,当我通过SSH登录到服务器并执行脚本时,它运行良好,但当我从服务器注销时,它不会运行。当我在alert.log文件显示错误后检查它时,无法连接到本地mysql服务器。有什么

我编写了一个脚本,每6秒连接一次本地mysql服务器,检查表中是否有数据。如果有数据,它会运行一些php命令,然后从表中删除该数据。我通过ssh登录到我的远程服务器共享主机,然后复制脚本并使用命令nohup./script.sh 0alert.log执行它&因此它在后台运行,并将所有输出写入alert.log文件。我的问题是,当我通过SSH登录到服务器并执行脚本时,它运行良好,但当我从服务器注销时,它不会运行。当我在alert.log文件显示错误后检查它时,无法连接到本地mysql服务器。有什么解决办法吗

这是密码

while true
      do


    res=($(mysql -u root -p123456 --skip-column-names -Dtest -e "select id from temptab"))

        if [[ "$res" > 0 ]];then
        del=`mysql -u root -p123456  -Dtest -e "delete from temptab;" `

        now="$(date +'%d/%m/%Y:%H.%M.%S')"

        for ((i=0; i < ${#res[@]}; i++))
        do
        php -n /var/lib/mysql/trigger.php ${res[$i]}
        echo "[$now]:Trigger called with videoid ${res[$i]}" 

        done

        fi

    sleep 6
done

屏幕是你需要的。有很多关于屏幕使用的教程。

我建议将您的代码移动到crontab中,甚至每X分钟5分钟运行一次,或者任何您喜欢的操作,而不是让您的用户在实时会话中运行它

只需将PHP脚本放在对cron的调用中,登录并运行crontab-e,然后添加:

*/5 * * * * /home/username/phpscript.php

您可以尝试运行脚本,如下所示:

/path/to/script.sh </dev/null &>/home/yourname/alert.log &

disown

我终于找到了解决办法。。。。我正在使用/usr/bin/php调用我的php文件,但是……当我将其编辑为/usr/bin/php.orig时,它开始工作了。。。。。。。。。。。但是那是什么php.orig@非常感谢

是的,我也试过屏幕。。。。。在我的脚本中,我正在执行一个php命令。。。。当我通过ssh登录到服务器时,php命令正在执行,但当我与服务器断开连接时。。。php命令根本没有执行。。。。。。当我看到alert.log文件时,它将错误显示为php:command not found。。。。。当我断开SSH与服务器的连接时,我认为我的shell正在丢失它的所有资源。启动sceen。运行php代码。分离屏幕。从ssh会话注销。屏幕将继续在远程服务器上运行,而远程服务器将运行php代码。关于找不到命令,请提供更多信息。确定这是我的脚本-->>而true do res=$mysql-u root-p123456-跳过列名-Dtest-e如果[$res>0]],请从TENTLAB选择id;然后del=mysql-u root-p123456-Dtest-e从testab中删除;now=$date+“%d/%m/%Y:%H.%m.%S”表示i=0;i<${res[@]};i++do php-n/var/lib/mysql/trigger.php${res[$i]}echo[$now]:使用videoid${res[$i]}调用触发器睡眠6次,这是示例输出cat nohup.out X-Powered-By:php/5.4.20内容类型:text/html{multicast_-id:8864856209398798719411,成功:2,失败:1,规范_-id:0,结果:[{message-message_-id:0:13859797766832904%4C6467F7F0},]81插入的警察信息[30/11/2013:00.49.26]:使用videoid 65调用触发器。/alert.sh:第15行:php:未找到命令[30/11/2013:07.50.27]:使用videoid 70调用触发器。/alert.sh:第15行:/ramdisk/php/54/bin/php54:没有此类文件或目录[30/11/2013:09.09.52]:使用videoid 7调用触发器更新相关代码和输出。只是不可能在评论中理解它。是的,但是在cron选项卡中可以设置的最短时间是1分钟。。。。。但是我希望脚本每6秒钟执行一次,以检查数据库中的更新如果是perl,我会说fork,fork允许进程独立于其父进程运行,我不知道phpcan中的等效程序。你可以建议我如何将命令nohup./script.sh 0alert.log&添加到cron作业中
/path/to/script.sh </dev/null &>/home/yourname/alert.log &

disown