1
subprocess.Popen( ["-c", "kill -SIGUSR2 %s" % master],
    stdout=subprocess.PIPE, shell=True).wait()

私は得ています

kill: 1: Illegal option -S

を指し-SIGUSR2ます。

そのパラメータが完全に渡されるようにするにはどうすればよい-SIGUSR2ですか?

PS:

私が使用する場合、-s SIGUSR2私は得ていますkill: 1: invalid signal number or name: SIGUSR2

PPS:

私が使用する場合、["-c", "kill", "-SIGUSR2", master]私は得ています

kill: 1: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
4

3 に答える 3

3

SIG暗示されています。

代わり-USR2に:

subprocess.Popen( ["-c", "kill -USR2 %s" % master],
    stdout=subprocess.PIPE, shell=True).wait()

GNU coreutils'killは、このリストそのものを提供できます。

$ /bin/kill --list|grep USR2
USR2

編集:私の間違い。killあなたの例は、 GNUではなくシェルを使用しています。あなたはどのシェルとは言いませんでしたが、結果に基づいて、それは可能性が高く、そうdashではありませんbash. またはのbashいずれかを使用できますが、使用できません。-SIGUSR2-USR2dash

$ dash -c 'kill -l' |grep USR
USR1
USR2
$ bash -c 'kill -l' |grep USR
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
$ bash -c 'kill -SIGUSR2 99999'
bash: line 0: kill: (99999) - No such process
$ bash -c 'kill -USR2 99999'
bash: line 0: kill: (99999) - No such process
$ bash -c 'kill -NOTASIGSPEC 99999'
bash: line 0: kill: NOTASIGSPEC: invalid signal specification
$ dash -c 'kill -SIGUSR2 99999'
dash: 1: kill: Illegal option -S
$ dash -c 'kill -USR2 99999'
dash: 1: kill: No such process
于 2013-08-15T22:16:37.433 に答える
2

私はあなたがこのようなものが欲しいと思います:

subprocess.Popen(["-c", "kill -USR2 %s" % master], 
                 stdout=subprocess.PIPE, shell=True).wait()

ただし、SIGUSR2 は有効な sigspec ではありません。ブライアン・ケインが正しいかもしれませんが、SIG などの例が見られます。

于 2013-08-15T22:11:19.940 に答える
1

私にとってこれはうまくいきます:

subprocess.Popen( ["-c", "kill -USR2 %s" % master],
                  stdout=subprocess.PIPE,shell=True).wait()
于 2013-08-15T22:18:20.127 に答える