#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? Если кто-нибудь может прояснить это, это помогло бы.