종료된 프로세스 ID를 stdout으로 인쇄합니다.

종료된 프로세스 ID를 stdout으로 인쇄합니다.

명령을 사용하여 종료된 백그라운드 프로세스의 프로세스 ID kill로 인쇄하는 방법이 있습니까 ? stdoutGoogle에서 검색해 보니 옵션(일부 Unix 또는 Linux의 경우)이 있는 것 같지만 --verboseUbuntu 20.x 또는 CentOS 7.x에서는 사용할 수 없는 것 같습니다.

명령만으로는 수행할 수 없는 경우 killCLI를 통해 다른 방법(예: 명령 kill및 기타 명령 사용)으로 수행할 수 있습니까?

다음은 백그라운드 프로세스를 종료하는 데 사용하는 명령의 예입니다.

kill $(jobs -p)

이 예제를 실행할 때 가능하다면 종료되는 프로세스 ID를 보고 싶습니다.

제가 인터넷에서 찾은 내용은 다음과 같습니다.

To enable verbose logging pass the --verbose flag to the kill command. 
Note that this is not supported by all shell built-ins so may not be available on your system.
    
    kill --verbose 17146
    sending signal 15 to pid 17146

추가 정보:

/usr/bin/kill --verbose 8411
Usage:
 kill [options] <pid|name> [...]
Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                        with the same uid as the present process
 -s, --signal <sig>     send specified signal
 -q, --queue <sig>      use sigqueue(2) rather than kill(2)
 -p, --pid              print pids without signaling them
 -l, --list [=<signal>] list signal names, or convert one to a name
 -L, --table            list signal names and numbers
 -h, --help     display this help and exit
 -V, --version  output version information and exit
For more details see kill(1).

그래서 내 시스템에서는 분명히 사용할 수 없습니다. 해결 방법이나 동등한 솔루션에 대한 제안 사항이 있습니까?

해결책:jobs -p | xargs -t kill

답변1

kill내장 쉘입니다

   $ type -a kill

    kill is a shell builtin
    kill is /usr/bin/kill

사용하려면 명령을 --verbose호출해야합니다kill

   $ /usr/bin/kill --verbose 4935

    sending signal 15 to pid 4935

SUSE 12(util-linux 2.33.2) 및 Centos 8(util-linux 2.32.1)을 확인했는데 verbose유효한 옵션입니다. 어쩌면 배포판이 kill다른 플래그로 컴파일되었을 수도 있습니다. 해결 방법으로 -p로깅 목적으로만 실행할 수 있습니다 prints the pids.

/usr/bin/kill --help

Usage:
 kill [options] <pid>|<name>...

Forcibly terminate a process.

Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                          with the same uid as the present process
 -s, --signal <signal>  send this <signal> instead of SIGTERM
 -q, --queue <value>    use sigqueue(2), not kill(2), and pass <value> as data
 -p, --pid              print pids without signaling them
 -l, --list[=<signal>]  list signal names, or convert a signal number to a name
 -L, --table            list signal names and numbers
     --verbose          print pids that will be signaled

 -h, --help             display this help
 -V, --version          display version

관련 정보