Повторяющиеся задачи с использованием сценариев bash

У меня есть консольное приложение php и сервер Ubuntu. Я выполняю приложение с помощью этой базовой команды:

php app.php

Я хочу выполнить его повторно, но cronjobs мне не подходит. Вместо этого я хочу, чтобы он выполнялся так, чтобы, когда app.php заканчивал работать, он выполнялся снова немедленно (как цикл бесконечности), а не выполнялся снова каждые X минут. Поэтому я сделал этот скрипт:

while true; do
php app.php
done

это решает мою проблему, но использование while true кажется злым. Можно ли остановить этот скрипт, если это необходимо? Или вы можете сказать мне лучший способ сделать это?

(файл app.php, извлекает длинный список URL-адресов веб-сайтов и их содержимого. Это как веб-паук. Я подключаюсь к серверу через ssh, выполняю скрипт bash с nohup, а затем закройте терминал.)

2
задан 22 January 2016 в 11:22

2 ответа

Я думаю, что вы можете использовать свой скрипт, и когда вы хотите остановить его, вы открываете терминал и:
1. Получите pid скрипта: ps -ef | grep "mycript"
2. Завершите [ 111] или убей kill -s 9 PID его.

0
ответ дан 22 January 2016 в 11:22

Вот пример того, что вы можете сделать:

#!/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>
0
ответ дан 22 January 2016 в 11:22

Другие вопросы по тегам:

Похожие вопросы: