【问题标题】:Bash script gets killed by systemBash 脚本被系统杀死
【发布时间】:2014-07-02 11:57:49
【问题描述】:

我有一个 bash 脚本,它在插入特殊设备后启动。在这个脚本中执行一个 python 脚本:

#! /bin/bash

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

python 脚本需要大量 CPU,但只需要少量 RAM。我在 htop 中看到,shell 脚本和 python 脚本都在运行。一段时间后,shell 脚本消失了! python脚本可以正常工作到最后。但是由于 shell 脚本不再存在,所以第二个 echo 永远不会执行。谁在扼杀我的剧本,为什么? (如果python脚本不需要太长时间就可以了)

【问题讨论】:

  • 你的 python 脚本是否也恰好写入 /home/pi/log ?
  • 如果您在 bash 脚本被杀死后键入,“dmesg”命令是否会为您提供有关系统正在做什么的任何信息?
  • 你的 shellscript 是从什么开始的?
  • python 会分叉吗?
  • shell脚本是udev启动的(RUN+=..."),python脚本没有写入/home/pi/log,dmesg没有显示任何相关信息。我用的是树莓派,python 脚本占用 100% CPU,这有问题吗?

标签: python linux bash


【解决方案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 超时?如果有人能澄清这一点,那将有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多