특정 사용자가 사용하는 일부 리소스가 서버에서 많은 리소스를 소모하기 때문에 삭제해야 합니다. 서버의 프로세스를 나열하면 삭제된 사용자가 제거 전에 표시되었던 이름 대신 "1001"로 표시됩니다.
%Cpu(s): 19.8 us, 29.5 sy, 0.0 ni, 50.7 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 3882456 total, 183568 free, 2003808 used, 1695080 buff/cache
KiB Swap: 1679356 total, 1155300 free, 524056 used. 1463480 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9192 1001 20 0 2068436 74700 10284 S 0.3 1.9 3:02.86 node
이를 사용하여 systemctl status
사용자의 실행 프로세스와 도커 컨테이너 ID가 다음 위치에 있음을 발견했습니다.
├─docker
│ ├─42b40e73687acb7fcd9a0e43372ced7588b5568c942f740d06510ab0e85b1462
│ │ ├─17156 /bin/sh -e /usr/local/sbin/start.sh
└─11148 node --debug --nolazy dist-release/server
그래서 컨테이너로 가서 start.sh 파일을 살펴보았지만 이는 단지 실행 파일일 뿐이고 파일 내부에는 실행 파일 내에서 사용자가 호출되고 있음을 나타내는 내용이 없습니다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
apiassets_1
42b40e73687a local.io/api-statements:development "start.sh" 21 hours ago Up 18 hours 0.0.0.0:32785->3000/tcp, 0.0.0.0:5966->5858/tcp
내가 하고 싶은 것은 해당 사용자가 해당 리소스를 사용하지 못하도록 하는 것이므로 해당 사용자가 해당 스크립트를 호출하여 중지할 수 있는 방법이나 중지하는 방법을 찾는 방법이 궁금합니다.
답변1
내 질문을 따르는 사람을 위한 것입니다. 무슨 일이 일어나고 있는지 조금 이상하지만 프로세스를 실행하는 사용자는 도커 컨테이너 내부에서 호스트와 동일한 ID를 가지게 되므로 모든 프로세스를 나열하면 컨테이너 내부 사용자의 사용자 ID가 특정 프로세스에 매핑됩니다. 하나는 호스트 사용자에게 있습니다. 이는 호스트에서 사용자를 삭제해도 여전히 "1001"로 실행되는 프로세스가 표시되는 이유를 설명합니다.
이제 나는 그것이 어떻게 작동해야 하는지 정확히 알았습니다.
나는 또한 이 도구를 보았습니다.시스템 데이터베이스누구든지 관심이 있다면 이것은 각 컨테이너에 대한 구체적인 정보를 제공하므로 내가 겪고 있는 것과 같은 문제를 해결하는 것 같습니다. 제 경우에는 호스트와 컨테이너 모두에서 프로세스가 진행되고 있어서 실제로 무슨 일이 일어나고 있는지 확인하기가 어렵습니다.