1

次の方法でスクリプトをローカルで開始しています。

sudo python run.py remote

このスクリプトはたまたまサブプロセスも開きます (それが重要な場合)

webcam = subprocess.Popen('avconv -f video4linux2 -s 320x240 -r 20 -i /dev/video0 -an -metadata title="OfficeBot" -f flv rtmp://6f7528a4.fme.bambuser.com/b-fme/xxx', shell = True)

SSH でログインしたときにこのスクリプトを終了する方法を知りたいです。

私ができることを理解しています:

sudo pkill -f "python run.py remote"

または使用:

ps -f -C python

プロセスIDを見つけて、そのように強制終了します。

ただし、これらのどれもプロセスを適切に強制終了するものではありません。CTRL/CMD C の同等のトリガーをトリガーして、終了コマンドを登録できるようにしたいと考えています (プロセスが単純に強制終了された場合にはトリガーされない、シャットダウン時に多くのことを行います)。

ありがとうございました!

4

2 に答える 2

3

それには「シグナル」を使用する必要があります。

http://docs.python.org/2/library/signal.html

例:

import signal, os

def handler(signum, frame):
    print 'Signal handler called with signal', signum

signal.signal(signal.SIGINT, handler)
#do your stuff

次にターミナルで:

kill -INT $PID

または、スクリプトが現在のシェルでアクティブな場合は ctrl+c

http://en.wikipedia.org/wiki/Unix_signal

これも役に立つかもしれません:

Pythonでデーモンを作成するにはどうすればよいですか?

于 2013-05-19T22:24:56.400 に答える