pkill이 -9를 반환하는 이유는 무엇입니까?

pkill이 -9를 반환하는 이유는 무엇입니까?

pkill -9 -f 'java.*7104'Python3을 사용하여 명령을 실행 하고 싶지만 subprocess.run이유를 모르겠습니다 returncode=-9. 누군가 설명할 수 있습니까?

>>> subprocess.run("pkill -9 -f 'java.*7104'", shell=True)
CompletedProcess(args="pkill -9 -f 'java.*7104'", returncode=-9)

Bash 쉘에서 동일한 명령을 실행하면 반환 코드는 0입니다.

$ pkill -9 -f 'java.*7104'
$ echo $?
0

Bash 쉘에서 명령을 실행하십시오.

root@w-test01:/home/renyuntao# ps -ef | grep -E 'java.*7104' | grep -v grep
root     127147      1 99 11:37 pts/1    00:00:13 java -Djava.security.egd=file:/dev/./urandom -Xmx10240m -jar ./aichemy.jar --server.port=7104 --spring.profiles.active=test01_use
root@w-test01:/home/renyuntao# pkill -9 -f 'java.*7104'
root@w-test01:/home/renyuntao# echo $?
0

명령을 실행하려면 다음을 사용하십시오 subprocess.run.

root@w-test01:/home/renyuntao# ps -ef | grep -E 'java.*7104' | grep -v grep
root     128644      1 99 11:38 pts/1    00:00:22 java -Djava.security.egd=file:/dev/./urandom -Xmx10240m -jar ./aichemy.jar --server.port=7104 --spring.profiles.active=test01_use
root@w-test01:/home/renyuntao# python3
Python 3.5.2 (default, Apr 16 2020, 17:47:17) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.run("pkill -9 -f 'java.*7104'", shell=True)
CompletedProcess(args="pkill -9 -f 'java.*7104'", returncode=-9)

답변1

subprocess.runwith 를 사용하면 shell=TruePython은 셸 프로세스를 시작하고, 그 결과 프로세스가 시작됩니다. 즉 sh -c "pkill -9 -f 'java.*7104'", 프로세스 pkill는 상위 프로세스 일치가 아닌 자체 일치에 대해서만 특별한 보호를 받습니다. 정규식 자체가 일치하지 않도록 조정해야 합니다. 다음과 같이 ^앞에 를 추가하는 것이 java가장 쉬울 것입니다 .

subprocess.run("pkill -9 -f '^java.*7104'", shell=True)

관련 정보