특정 프로세스의 cgroup을 찾는 방법은 무엇입니까?


17

cgroup처리 할 방법이 있습니까?

내가 아는 유일한 패키지 ( cgroup-bin)는 cgroup으로 조작을 제공하고 cgroup 프로세스 / 프로세스 목록을 변경할 수는 있지만 특정 프로세스의 cgroup에 대한 정보를 알 수있는 기능은 없습니다.


9
Tryps -o cgroup <pid>
Matthew Ife

5
고양이 / proc 디렉토리 / <PID> / cgroup에
c4f4t0r

@MIfe, 그렇습니다. 매우 그렇습니다. 이것이 내가 필요한 것
zerospiel

@ c4f4t0r, 귀하의 방법은 그렇게 좋지 않습니다. 사용 가능한 모든 컨트롤러를 출력하지만 프로세스의 cgroup은 아니지만 출력합니다.
zerospiel

사실 @MIfe는, 미안, 다른 옵션은 예를 들어, 작업 파일에 그렙입니다 그렙 <PID> / cgroup에 /의 cpuset / APP1 / 작업
c4f4t0r

답변:


15

systemd 사용 (예 : PID 3378) :

# systemctl status 3378 | grep CGroup
CGroup: /user.slice/user-1000.slice/session-3.scope

proc 사용하기 :

# cat /proc/3378/cgroup 
10:memory:/user.slice/user-1000.slice
9:blkio:/user.slice/user-1000.slice
8:net_cls,net_prio:/
7:cpu,cpuacct:/user.slice/user-1000.slice
6:perf_event:/
5:freezer:/
4:cpuset:/
3:pids:/user.slice/user-1000.slice
2:devices:/user.slice/user-1000.slice
1:name=systemd:/user.slice/user-1000.slice/session-3.scope

/ sys /를 살펴보십시오 :

# cd /sys/fs/ && find * -name "*.procs" -exec grep 3378 {} /dev/null \; 2> /dev/null
cgroup/memory/user.slice/user-1000.slice/cgroup.procs:3378
cgroup/blkio/user.slice/user-1000.slice/cgroup.procs:3378
cgroup/net_cls,net_prio/cgroup.procs:3378
cgroup/cpu,cpuacct/user.slice/user-1000.slice/cgroup.procs:3378
cgroup/perf_event/cgroup.procs:3378
cgroup/freezer/cgroup.procs:3378
cgroup/cpuset/cgroup.procs:3378
cgroup/pids/user.slice/user-1000.slice/cgroup.procs:3378
cgroup/devices/user.slice/user-1000.slice/cgroup.procs:3378
cgroup/systemd/user.slice/user-1000.slice/session-3.scope/cgroup.procs:3378

마지막 명령은 pid가 13378, 또는 23378, 또는 33378
등인

8

프로세스의 cgroup을 보는 가장 빠른 방법은 다음 bash 스크립트를 사용하는 프로세스 이름입니다.

#!/bin/bash
THISPID=`ps -eo pid,comm | grep $1 | awk '{print $1}'`
cat /proc/$THISPID/cgroup

4
사용pgrepps | grep | awk
Patrick

4

RHEL7 이상과 다른 배포판 에서이 유틸리티가 유용하다는 것을 알았습니다.

$ systemd-cgtop

그것을 사용하기 전에, 확인, 당신은 DefaultCPUAccounting=yes에서 /etc/systemd/system.conf.

나는 여전히 유용하고 Patrick의 제안을 사용하여 Egbert의 스크립트를 약간 개선했습니다 pgrep.

#!/bin/bash
echo "PID  SLICE   SERVICE"
for THISPID in `pgrep $1`; do
  SLICE=$(cat /proc/$THISPID/cgroup | grep '^1:' | awk -F/ '{ print $2 }')
  SERVICE=$(cat /proc/$THISPID/cgroup | grep '^1:' | awk -F/ '{ print $3 }')
  echo "$THISPID $SLICE $SERVICE"
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.