特定のユーザーが使用しているリソースの中には、サーバー上のリソースの消費量が多いため、削除する必要があります。サーバーのプロセスを一覧表示すると、削除されたユーザーは削除前に表示された名前の代わりに「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
ユーザーの実行プロセスとDockerコンテナ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
私の質問に従う人のためです。何が起こっているのか少し奇妙ですが、プロセスを実行しているユーザーはDockerコンテナ内でホストと同じIDを持つことになるので、すべてのプロセスを一覧表示すると、コンテナ内部ユーザーのユーザーIDが特定のプロセスにマップされます。 1つはホストユーザーにあります。これは、ホストからユーザーを削除しても「1001」として実行されているプロセスが表示される理由を示しています。
今、私はそれがどのように機能するかを正確に知っていました。
私もこのツールを見ました。システムデータベース誰もが興味があれば、これは各コンテナに関する具体的な情報を提供するので、私が経験しているような問題を解決するようです。私の場合、ホストとコンテナの両方でプロセスが進行しているため、実際に何が起こっているのかを確認するのは困難です。