Удаление файлов / папок с файлами .nfs [дубликат]

У вас есть два варианта: изменить сценарий Python или написать оболочку сценария оболочки.

Чтобы изменить скрипт Python:

  1. Вы должны зацикливаться на том, что вы хотите делать.

  2. Установите обработчик сигналов, чтобы перехватить сигнал INT (отправленный Ctrl - C ) и сигнал TERM (отправленный обычным убить ). Когда сигнал будет пойман, установите переменную, сообщающую скрипту Python, что он больше не должен зацикливаться. Я недостаточно знаком с Python, чтобы рассказать вам, как это сделать.

Альтернативное решение: оболочка сценария оболочки, которая выполняет то же самое, что и выше, но вне сценария Python:

#!/bin/sh

loop_again=1

trap 'loop_again=0;wait' INT TERM

while (( loop_again )); do
    echo "Kill me with 'kill -9 $$'"
    ./python_script &
    echo "Kill the Python script with 'kill $!'"
    wait
done

Этот сценарий оболочки запускает ваш сценарий Python в фоновом режиме, а затем ожидает его завершения. Затем он перезапускает его на неопределенный срок.Он также сообщает вам, как завершить его и сценарий Python на каждой итерации.

Если вы уничтожите сценарий (используя простой kill , не kill -9 ), либо нажмите Ctrl - C , переменная loop_again устанавливается в ноль (что приводит к завершению цикла в конце текущей итерации), а затем ожидает завершения текущего фонового процесса. перед выходом.

Если вы завершите сценарий оболочки с помощью kill -9 (то же самое, что kill -s KILL , отправив сигнал KILL , который не может быть проигнорированным или перехваченным обработчиком сигнала), он завершится, оставив ваш скрипт Python работающим в фоновом режиме, пока он не завершится сам по себе.

12
20.11.2019, 00:47
0 ответов

Теги

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