PID를 통해 프로세스를 다시 시작하시겠습니까? [폐쇄]

PID를 통해 프로세스를 다시 시작하시겠습니까? [폐쇄]

나는 PID를 가지고 있고 다시 시작하고 싶습니다. 프로세스는 메인에서 시작되어 새로운 PID를 얻습니다.

pid바이너리 경로를 사용하지 않고 바이너리 경로만 사용하여 exec이 작업을 어떻게 수행할 수 있습니까?

답변1

명시된 바와 같이여기, 재시작 신호가 없습니다. 해당 과정을 다시 수행해야 합니다. 이것이 흔한 일이라면 이 프로그램을 서비스에 넣거나 간단한 루프 스크립트에 넣어 이 문제를 보다 유기적으로 처리할 수 있도록 해야 합니다.

하지만 또 다른 불안정한 bash 파이프라인을 원한다면 여기 있습니다. 이렇게 하면 보안 컨텍스트 없이 실행 사용자로 프로그램이 다시 시작됩니다(따라서 신뢰하지 않는 항목에서는 이 메서드를 호출하지 마세요!).

restart_pid() {
  # First we need to find the program's arguments
  SAVED_COMMAND="$(while IFS= read -r -d $'\0' f; do printf '%q ' "$f"; done < /proc/$1/cmdline)"
  # Then we need to cd into its directory so that we stay as true to the intial conditions as possible
  cd /proc/$1/cwd
  # Now kill the process
  kill $1
  # Now we can restart the process
  eval $SAVED_COMMAND
}

이 명령을 실행한 후 신호를 보낼 권한이 있는 restart_pid <pid>모든 개체를 호출할 수 있습니다 .<pid>

eval $SAVED_COMMAND & disown작업을 백그라운드에 두려면 마지막 줄을 .

관련 정보