温馨提示×

怎样重命名linux进程名

小樊
32
2026-09-18 15:32:49
栏目: 智能运维

在 Linux 下“重命名进程名”有多种含义和做法,取决于你是想改命令显示名改进程 title,还是彻底改二进制名。下面按常见场景说明。


一、修改“进程名”(命令行显示,最常用)

1. 在 shell 中直接改(临时)

exec -a my_new_name bash

或运行程序时:

exec -a my_process_name ./my_program

ps / top 中看到的 COMMAND 会变成 my_process_name

✅ 不影响真实二进制
❌ 只对当前 exec 生效


2. 在 C 程序中修改 argv[0]

Linux 允许修改 argv[0] 所在内存来改进程名(常见于 Nginx、Redis)。

#include <string.h>

int main(int argc, char *argv[]) {
    strcpy(argv[0], "my_new_name");
    while (1);
}

ps -ef 会显示 my_new_name

⚠️ 注意:

  • 只能写短于原 argv[0] 长度的内容
  • 更稳健做法是覆盖 argv[i] 并清空后续指针

3. 使用 prctl(推荐方式)

#include <sys/prctl.h>

prctl(PR_SET_NAME, "my_proc");

查看:

ps -o comm= -p <pid>

cat /proc/<pid>/comm

✅ 内核级进程名
❌ 长度限制 15 字符(TASK_COMM_LEN


二、修改 ps 中的完整命令行(cmdline)

覆盖 /proc/<pid>/cmdline

在 C 中:

extern char **environ;
char *new = "my_process_name";
memset(argv[0], 0, envp[0] - argv[0]);
strcpy(argv[0], new);

常用于:

  • 守护进程
  • 服务伪装
  • 清晰运维标识

三、彻底“重命名”可执行文件

这是最简单的“物理重命名”:

cp myapp mynewname
./mynewname

ps 自然显示新名字。


四、Shell 脚本伪装进程名

#!/bin/bash
exec -a fake_name sleep 1000

五、常见用途总结

目的 推荐方式
运维易识别 prctl
守护进程 argv[0]
临时测试 exec -a
完全改名 复制二进制

如果你能说明:

  • C / Python / Shell
  • 想改 ps / top / comm
  • 是否用于 生产环境

我可以给你更精确的示例。

0