使用 Bash 脚本执行重复任务

使用 Bash 脚本执行重复任务

我有一个 php 控制台应用程序和一个 Ubuntu 服务器。我使用以下基本命令执行该应用程序:

php app.php

我想重复执行它,但 cronjobs 不适合我。相反,我希望它执行时,当 app.php 完成工作时,它会立即再次执行(就像一个无限循环),而不是每隔 X 分钟再次执行一次。所以我制作了这个 bash 脚本:

while true; do
php app.php
done

这解决了我的问题,但是使用while true似乎很糟糕。如果需要,是否可以停止此 bash 脚本?或者你能告诉我一个更好的方法吗?

(app.php 文件,获取一长串网站 URL 及其内容。它就像一个网络蜘蛛。我通过 ssh 连接到服务器,用 nohup 执行 bash 脚本,然后关闭终端。)

答案1

以下是您可以执行的操作的示例:

#!/bin/bash

while true; do
    if [ -t 0 ]; then stty -echo -icanon time 0 min 0; fi

    keypress=''
    while [ "x$keypress" = "x" ]; do
        #do something... in your case:
        php app.php
        #end of 'do something'

        read keypress
    done

    if [ -t 0 ]; then stty sane; fi

    echo "You pressed '$keypress' for pause."
    read -p 'Press [Enter] key to continue or [Ctrl+C] to finish...'
done

要暂停,您可以按任意键而无需Enter。要继续,您必须按Enter。要完成,您必须按Ctrl+ C


如果您使用以下命令在后台运行脚本:

nohup <name_of_script> &

您可以使用以下命令来停止它:

ps -ef | grep <name_of_script> #to find the pid of the running script
kill -9 <pid_of_your_running_script>

答案2

我认为您可以使用您的脚本,当您想要停止它时,您可以打开一个终端并:
1.获取脚本的 pid:ps -ef | grep "mycript"
2.终止kill -s 15 PID或杀死kill -s 9 PID它。

相关内容