crontab에 다음 줄이 있습니다.
@reboot /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
재부팅하면 스크립트가 백그라운드에서 실행되지만(예: Teamspeak 3 서버 시작) 중지하는 방법을 찾고 있습니다. (이제 백그라운드에서 실행 중이므로 터미널에서 Ctrl+C를 누를 수 없습니다.) ). 포럼 게시물에 따르면 다음 명령을 사용하여 프로세스를 종료할 수 있습니다.
ps -ef | grep -i XXXX: to find your background running process
kill OID : kill your unnecessary process
나는 그가 말한 OID가 PID를 의미한다고 생각했습니다. 그런데 이것을 제 시나리오에 적용해 보면 아래와 같이 3개의 프로세스가 실행되고 있는 것을 발견합니다.
$ps -ef | grep ts3
server 889 586 0 22:33 ? 00:00:00 /bin/sh -c /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
server 890 889 0 22:33 ? 00:00:00 /usr/bin/teamspeak3-server_linux-amd64/ts3server_minimal_runscript.sh
server 903 890 0 22:33 ? 00:00:00 ./ts3server_linux_amd64
혼란스러워요. 왜 3개의 프로세스가 실행되고 있나요? 나는 하나의 스크립트만 실행될 것으로 예상합니다(즉, 중간 줄만 상상합니다). 세 프로세스를 모두 종료하면 스크립트가 중지될 것 같지만 여기에 프로세스가 하나가 아닌 세 개가 있는 이유를 알고 싶습니다.
답변1
첫 번째 프로세스는 스크립트를 실행하는 셸입니다.
두 번째 프로세스는 스크립트의 셸 하위 프로세스입니다. 아마도 대괄호 내에서 실행되는 명령으로 인해 프로세스가 분기되기 때문일 것입니다. 예: "(date;cat)".
세 번째 프로세스는 실행하려는 실제 서버의 바이너리입니다.
서버를 종료하려면 세 번째 프로세스를 종료하세요. 이로 인해 하위 프로세스가 종료된 다음 기본 쉘 스크립트가 종료될 수 있습니다. 그러나 하위 프로세스는 서버가 종료된 후 다시 시작될 때까지 기다리는 쉘 루프일 수 있습니다. 따라서 다시 생성되지 않도록 두 번째 및 세 번째 프로세스를 종료해야 할 수도 있습니다.
백그라운드에서 실행되도록 설계된 대부분의 프로그램에는 더 나은 종료 방법이 있습니다. 예를 들어, /etc/init.d에서 시작된 데몬은 일반적으로 "start", "stop", "restart" 등과 같은 매개변수를 사용하여 스크립트를 호출하여 제어할 수 있습니다. 귀하의 서버에도 비슷한 시스템이 있을 수 있습니다.
답변2
다른 애플리케이션을 실행하기 위한 명령이 포함된 스크립트 1개를 실행하고 있으므로 3개의 프로세스가 실행되고 있습니다.
Bash
(스크립트 실행)- 그 자체
script
. - 이것
app
.
스크립트 내부:
root@onare:/home/onare# cat Downloads/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh
#!/bin/bash
export KDEDIRS=
export KDEDIR=
export QTDIR=.
export QT_PLUGIN_PATH=.
export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH"
D1=$(readlink -f "$0")
D2=$(dirname "${D1}")
cd "${D2}"
if [ -e ts3client_linux_x86 ]; then
./ts3client_linux_x86 $@
else
./ts3client_linux_amd64 $@
fi
grep을 사용하여 실행 중인 모든 프로세스를 알고 싶다면 다음 명령을 사용할 수 있습니다.
pgrep ts3
일치하는 모든 PID를 묻는 메시지가 표시됩니다.*ts3*
그런 다음 다음을 실행하십시오.
kill -9 $(pgrep ts3)
그러면 ts3을 실행하는 모든 PID가 종료됩니다.
봄 여름 시즌: