我正在尝试了解我的 Ubuntu 服务器上的进程 exe
sudo ls -l /proc/6293/exe
lrwxrwxrwx 1 jenkins 65533 0 апр 4 09:03 /proc/6293/exe -> /usr/local/bin/node
当我在垃圾箱里寻找
/usr/local/bin# ls node
ls: cannot access 'node': No such file or directory
这个符号链接实际上指向什么?
我正在尝试了解我的 Ubuntu 服务器上的进程 exe
sudo ls -l /proc/6293/exe
lrwxrwxrwx 1 jenkins 65533 0 апр 4 09:03 /proc/6293/exe -> /usr/local/bin/node
当我在垃圾箱里寻找
/usr/local/bin# ls node
ls: cannot access 'node': No such file or directory
这个符号链接实际上指向什么?
进程的可执行程序可能位于容器或其他花哨的 chroot 中,或者文件可能在仍在运行时已被取消链接。
在 Linux 上,大多数容器(docker、podman)或服务管理器(systemd)都使用 cgroup。在 proc 上也可以看到,请参阅
/proc/$pid/cgroup
将这些映射到未知容器技术并不总是显而易见的。虽然有时很明显,但 podman 会在路径中添加“libpod”和一个可以传递给 的长 IDpodman inspect
。用户“jenkins”表示 Jenkins CI/CD 软件。可执行文件名称“node”表示用 Node.js 编写的程序。在这里看到一个软件构建过程并不奇怪,它会先建立一个完整的环境,安装所有东西。然后在下一次构建时删除它并重新开始。
在我看来,搞乱这个作业的
/usr/local/bin/node
可能性不大。相比之下,假设 Jenkins 节点已经安装了 Node.js 就更好了。Node.js 是一个系统路径,通常你不会想以特权身份运行构建过程。但这是任意代码,所以我不知道这是什么玩意儿,更不知道它有多乱。最终,应该有人负责这个软件的用途。除了安全之外,还要确保它能为你的组织正常运转。即使你不是这个软件的开发者,而只是提供服务器,你仍然应该对它运行的内容保持好奇心,并提出一些基本问题。这个软件是用 Node.js 开发的吗?Jenkins 是如何实现它的?任务的运行是用容器实现的吗?