gzip 프로세스는 내 시스템에서 정기적으로 실행됩니다. 이를 트리거하는 요소를 어떻게 알 수 있나요?

gzip 프로세스는 내 시스템에서 정기적으로 실행됩니다. 이를 트리거하는 요소를 어떻게 알 수 있나요?

gzip나는 쿠분투 시스템의 프로세스가 무작위로 시작되어 많은 리소스를 차지하고 랩톱 팬이 미친 듯이 작동하는 문제를 한동안 겪었습니다 . 프로세스가 나타나고 gzip -c --rsyncable --best오랜 htop시간 동안 실행됩니다. 원인이 무엇인지 모르겠습니다. 시스템은 Kubuntu 14.04이고 백업 계획이 설정되어 있지 않습니다. 다음에 프로세스가 나타날 때 프로세스의 원인을 어떻게 찾을 수 있는지 아는 사람이 있습니까? Google에서 검색했지만 여전히 이유를 찾을 수 없습니다. 명령에 대한 몇 가지 제안을 보았지만 ps거기에 있는 모든 줄에 대한 grep은 실제로 아무 것도 가리키지 않습니다.

gzip -c --rsyncable --best

답변1

프로세스 트리

프로세스가 실행되는 동안 프로세스 계층 구조를 보려면 ps옵션을 사용해 보십시오.f

ps axuf

그런 다음 프로세스 트리를 얻어야 합니다. 이는 상위 프로세스가 무엇인지 확인해야 함을 의미합니다 gzip.

gzipthen 의 직계 자손인 경우 프로세스를 생성했을 init가능성이 없으므로 상위 프로세스가 종료되었을 수 있습니다 .initgzip

예약 된 일들

crontab또한 s를 확인하여 생성된 항목이 있는지 확인 해야 합니다 . 귀하가 보고 있는 프로세스를 실행하는 사용자 는 어디에 있습니까 sudo crontab -l -u <user>(귀하의 경우에는 그런 것 같습니다).usergziproot

이 시스템에 백그라운드 서비스 설정과 같은 작업을 수행한 다른 사용자가 있는 경우 crontab해당 사용자도 확인하세요. gzip실행 중이라는 사실이 root트리거된 원래 프로세스도 gzip실행 중임을 보장하지는 않습니다. 를 실행하면 root기존 목록을 모두 볼 수 있습니다.crontabsudo ls /var/spool/cron/crontabs

통나무

프로세스가 생성될 때 의심스러운 항목이 있는지 시스템 로그를 확인하세요. 쿠분투가 로그 파일의 이름을 다르게 지정하는지 확실하지 않지만 표준 우분투에서는 최소한 /var/log/syslog.

최후의 수단: gzip 래퍼

이들 중 아무 것도 발생하지 않으면 gzip바이너리 이름을 바꾸고 전달된 인수로 시작하는 작은 래퍼를 넣을 수 있지만 gzip당시 시스템 상태도 캡처할 수 있습니다.

답변2

아마도 사용하는 파일에 집중해야 할 것입니다.

lsof -c gzip

... 꽤 좋은 아이디어를 줄 것입니다. 질문의 이미지에 있는 목록을 강조 표시한 후에 htop만 누르면 이것이 바로 효과가 있을 것입니다. l이 외에도 htop키 입력으로 요청하면 프로세스 트리도 표시되므로 F5프로세스의 출처(있는 경우)를 직접 확인할 수 있습니다.

Linux 시스템의 경우:

ps -Fwwp"$((gzip_ppid=$(ps -oppid= -Cgzip)))"
fuser -vau "/proc/$gzip_ppid/fd/"*

gzip...상위 프로세스와 그것이 사용하는 파일, 그리고 이를 사용하는 다른 프로세스에 대한 많은 정보를 인쇄해야 합니다.

답변3

pstree는 무엇이 무엇을 생성했는지 보여주는 올바른 형식의 출력을 제공합니다(부모가 gzip 명령을 생성한 후 즉시 죽지 않는다고 가정).

또한 확인해보세요명령줄 인수를 포함하여 실행된 모든 명령을 기록하는 쉬운 방법이 있습니까?

답변4

다음은 무슨 일이 일어나고 있는지 파악하는 데 도움이 되는 몇 가지 팁입니다.

  1. 문제가 있는 프로세스의 PID를 가져옵니다.

    $ pgrep -a gzip 
    25267 gzip -c --best file
    

    내 시스템(주요 작업을 시작한 곳 gzip)에서는 단일 PID: 25267을 반환합니다. PID가 여러 개 있을 수 있으므로 올바른 PID를 선택했는지 확인하세요. 이 -a플래그는 pgrep전체 명령줄을 인쇄하여 정확히 무엇이 실행되고 있는지 확인할 수 있도록 지시합니다.

  2. 이를 시작한 프로세스의 PID, 상위 PID 또는 PPID 및 책임 있는 사용자를 가져옵니다.

    $  ps -p 25267 -o user -o pid -o pgid -o args
    USER       PID  PGID COMMAND
    terdon   25267 25266 gzip -c --best file
    

    이제 우리는 PID를 사용하는 프로세스에 의해 gzip시작된다는 것을 알고 있습니다.terdon25266

  3. 상위 프로세스가 무엇인지 알아보세요.

    $ ps -p 25266 -o user -o pid -o pgid -o args
    USER       PID  PGID COMMAND
    terdon   25266 25266 /bin/bash /home/terdon/scripts/a.sh
    
  4. 또는 프로세스 트리를 살펴보세요.

    $ pstree -p 25266
    a.sh(25266)───gzip(25267)
    
  5. 어떤 디렉터리에서 실행되고 있는지 확인하세요(Linux):

    $ readlink -f /proc/25267/cwd
    /home/terdon/foo
    

/home/terdon/scripts/a.sh따라서 내 경우 에는 쉘 스크립트에 의해 시작되었으며 /home/terdon/foo.

관련 정보