오래된 프로세스를 죽이는 방법

앤디

Ubuntu 서버에서 트랜스 코딩을 실행하고 때로는 프로세스가 부실하고 출력을 제공하지 않지만 ps aux프로세스가 여전히 실행 중임을 표시하지만 CPU 사용량이 부실합니다.

다음 명령을 사용하여 CPU 사용량을 가져올 수 있습니다 (작업중인 ffmpeg 프로세스에는 프로세스 ID 4416이 있습니다.

ps aux | grep -v grep | grep 4416 | awk '{print $3}'

그리고 특정 프로세스를 죽이는 작은 스크립트를 만들 수 있지만 각 ffmpeg 프로세스를 확인하고 부실한 경우 종료하는 루프를 어떻게 생성합니까 (runit가 나중에 다시 시작합니다)?

1 분 크론으로 CPU 사용량을 두 번 얻고 CPU 사용량이 같으면 프로세스를 종료하려면 명령을 실행해야한다고 생각합니다. 이거할까요?

조개

좋습니다. 몇 가지 ps aux요청을 한 다음 오래된 프로세스를 확인합니다.

#!/bin/bash

# setup, change this if undesired
workdir="/tmp/.stale_process_killing"
[ -d "$workdir" ] || mkdir "$workdir"

# get ps aux outputs, change number of iterations if desired
for ((i=1; i<5; i++)); do
    # add file number to file
    echo $i > "${workdir}/psaux${i}"
    # add ps output to file
    ps aux | grep 'ffmpeg' >> "${workdir}/psaux${i}"
    # change this timeout to suit your needs
    sleep 1
done

# now parse the files using awk
awk '
    FNR==1 { ix = $1 }
    FNR!=1 { cpu[$2][ix] = $3 }
    END {
        for (pid in cpu) { 
            j=1;
            while (cpu[pid][j] == cpu[pid][j+1] && j <= ix) {
                if (cpu[pid][j++] == "") {
                    j=1;
                    break;
                }
            }
            if (j >= ix) {
                system("kill " pid);
            }
        }
    }' "${workdir}/psaux"*

안전하게 확인하기 위해 디버그 인쇄가 포함 된 버전입니다.

#!/bin/bash

# setup, change this if undesired
workdir="/tmp/.stale_process_killing"
[ -d "$workdir" ] || mkdir "$workdir"

# get ps aux outputs, change number of iterations if desired
for ((i=1; i<5; i++)); do
    # add file number to file
    echo $i > "${workdir}/psaux${i}"
    # add ps output to file
    ps aux | grep 'ffmpeg' >> "${workdir}/psaux${i}"
    # change this timeout to suit your needs
    sleep 1
done

# now parse the files using awk
awk '
    FNR==1 { ix = $1 }
    FNR!=1 { cpu[$2][ix] = $3 }
    END {
        for (pid in cpu) { 
            j=1;
            while (cpu[pid][j] == cpu[pid][j+1] && j <= ix) {
                print cpu[pid][j]
                if (cpu[pid][j++] == "") {
                    j=1;
                    break;
                }
            }
            if (j >= ix) {
                print "kill " pid;
            } else {
                print "no kill " pid;
            }
        }
    }' "${workdir}/psaux"*

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

프로세스를 죽이는 우아한 방법

분류에서Dev

자식 프로세스를 무해하게 죽이는 방법

분류에서Dev

프로세스를 죽이는 우아한 방법

분류에서Dev

좀비 프로세스를 죽이는 다른 방법

분류에서Dev

dovecot 프로세스를 죽이는 방법

분류에서Dev

스칼라 플레이 : 자동 리빌드에서 오래된 액터 / 스레드를 죽이는 방법?

분류에서Dev

스칼라 플레이 : 자동 리빌드에서 오래된 액터 / 스레드를 죽이는 방법?

분류에서Dev

파이썬 프로그램의 모든 프로세스를 죽이는 방법?

분류에서Dev

Timer ()를 사용하는 파이썬 프로세스를 죽이는 방법?

분류에서Dev

bash 스크립트에서 잘못된 프로세스를 죽이는 것을 피하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 하위 프로세스를 죽이는 방법

분류에서Dev

재생중인 내장 된 유튜브 비디오를 죽이는 방법

분류에서Dev

죽은 SSD에서 데이터를 가져 오는 방법

분류에서Dev

포트에 액세스하는 프로세스를 죽이는 Bash 기능을 만드는 방법

분류에서Dev

이 스레드를 죽이는 방법?

분류에서Dev

새로운 프로세스를 시작하는 스크립트를 죽이는 방법?

분류에서Dev

프로그램을 죽이는 방법?

분류에서Dev

이 프로세스를 죽이는 것은 무엇이며이를 중지하는 방법

분류에서Dev

nsis에서 내 프로세스를 죽이는 타사 exe를 방지하는 방법이 있습니까?

분류에서Dev

프로그래밍 방식으로 꼬인 웹 소켓 서버를 죽이는 방법

분류에서Dev

python popen 프로세스를 죽이는 방법, shell false [표준 메소드로 작업하지 않는 이유]

분류에서Dev

비슷한 이름 (한 번에 하나씩)을 가진 프로세스를 최신에서 오래된 것으로 삭제하는 방법

분류에서Dev

하위 프로세스 오류를 캡처하는 방법

분류에서Dev

실행중인 프로세스를 가져 오는 방법

분류에서Dev

타이머 js를 죽이는 방법

분류에서Dev

PHP 루프 (프로세스)를 찾고 죽이는 방법은 무엇입니까?

분류에서Dev

모든 프로세스를 정렬 된 이름으로 나열하는 방법

분류에서Dev

byobu 세션을 죽이는 방법?

분류에서Dev

byobu 세션을 죽이는 방법?

Related 관련 기사

  1. 1

    프로세스를 죽이는 우아한 방법

  2. 2

    자식 프로세스를 무해하게 죽이는 방법

  3. 3

    프로세스를 죽이는 우아한 방법

  4. 4

    좀비 프로세스를 죽이는 다른 방법

  5. 5

    dovecot 프로세스를 죽이는 방법

  6. 6

    스칼라 플레이 : 자동 리빌드에서 오래된 액터 / 스레드를 죽이는 방법?

  7. 7

    스칼라 플레이 : 자동 리빌드에서 오래된 액터 / 스레드를 죽이는 방법?

  8. 8

    파이썬 프로그램의 모든 프로세스를 죽이는 방법?

  9. 9

    Timer ()를 사용하는 파이썬 프로세스를 죽이는 방법?

  10. 10

    bash 스크립트에서 잘못된 프로세스를 죽이는 것을 피하는 방법은 무엇입니까?

  11. 11

    파이썬에서 하위 프로세스를 죽이는 방법

  12. 12

    재생중인 내장 된 유튜브 비디오를 죽이는 방법

  13. 13

    죽은 SSD에서 데이터를 가져 오는 방법

  14. 14

    포트에 액세스하는 프로세스를 죽이는 Bash 기능을 만드는 방법

  15. 15

    이 스레드를 죽이는 방법?

  16. 16

    새로운 프로세스를 시작하는 스크립트를 죽이는 방법?

  17. 17

    프로그램을 죽이는 방법?

  18. 18

    이 프로세스를 죽이는 것은 무엇이며이를 중지하는 방법

  19. 19

    nsis에서 내 프로세스를 죽이는 타사 exe를 방지하는 방법이 있습니까?

  20. 20

    프로그래밍 방식으로 꼬인 웹 소켓 서버를 죽이는 방법

  21. 21

    python popen 프로세스를 죽이는 방법, shell false [표준 메소드로 작업하지 않는 이유]

  22. 22

    비슷한 이름 (한 번에 하나씩)을 가진 프로세스를 최신에서 오래된 것으로 삭제하는 방법

  23. 23

    하위 프로세스 오류를 캡처하는 방법

  24. 24

    실행중인 프로세스를 가져 오는 방법

  25. 25

    타이머 js를 죽이는 방법

  26. 26

    PHP 루프 (프로세스)를 찾고 죽이는 방법은 무엇입니까?

  27. 27

    모든 프로세스를 정렬 된 이름으로 나열하는 방법

  28. 28

    byobu 세션을 죽이는 방법?

  29. 29

    byobu 세션을 죽이는 방법?

뜨겁다태그

보관