Скрипт Bash уничтожается системой

#python #linux #bash

#python #linux #bash

Вопрос:

У меня есть скрипт bash, который запускается после подключения специального устройства. В этом скрипте выполняется скрипт python:

 #! /bin/bash

echo "before python" >> /home/pi/log
/usr/bin/python3.2 pythonscript.py
echo "after python" >> /home/pi/log
  

Скриптам Python требуется много процессора, но только небольшой объем оперативной памяти. Я вижу в htop, что оба сценария оболочки и скрипт python запущены. Через некоторое время сценарий оболочки исчезает! Скрипт Python работает нормально до конца. Но поскольку сценария оболочки больше нет, второе эхо никогда не выполняется. Кто убивает мой скрипт и почему? (Это работает, если скрипт Python не занимает слишком много времени)

Комментарии:

1. случается ли, что ваш скрипт python также записывает в / home / pi /log ?

2. Предоставляет ли команда ‘dmesg’ вам какую-либо информацию о том, что делала система, если вы вводите ее сразу после завершения работы вашего скрипта bash?

3. с чего начинается ваш shellscript?

4. происходит ли разветвление python?

5. Сценарий оболочки запускается udev (RUN =…»), скрипт python не записывает в /home /pi/log, dmesg не показывает никакой соответствующей информации. Я использую Raspberry Pi, и скрипт python использует 100% CPU. Это проблема?

Ответ №1:

Хорошо, я думаю, что у меня есть решение для этого отсюда: https://unix.stackexchange.com/questions/28548/how-to-run-custom-scripts-upon-usb-device-plug-in/28711#28711

Кажется, udev уничтожает мой скрипт bash, но не скрипт python. Поэтому я должен каким-то образом отключить процесс. Я решил это таким образом:

 #!/bin/bash
echo "/home/pi/mipod/src/script_taking_long.sh $1" | at now
  

Причиной такого поведения, по-видимому, является тайм-аут от udev? Если кто-нибудь может прояснить это, это помогло бы.