相关文章推荐
愤怒的佛珠  ·  MySQL 5.7 vs ...·  1 年前    · 

如何修改进程名称

分析如何修改进程名称,以利于更清楚的展示进程相关信息

引子

最近服务器中了挖矿病毒,CPU暴涨, top 查看到的高负载进程名为随机字母。 一般情况下进程名为可执行文件名,执行 cat /proc/{pid}/exe ,查看可执行文件路径,可执行文件已经被删除。

网上搜索相关资料,找到一个有意思的问题,如何修改进程名称?

redis nginx 中有修改进程名的相关实现,函数为 setproctitle 。 在 nginx 中有详细的原理解释。

核心

nginx 中注释所言:

/*
 * To change the process title in Linux and Solaris we have to set argv[1]
 * to NULL and to copy the title to the same place where the argv[0] points to.
 * However, argv[0] may be too small to hold a new title.  Fortunately, Linux
 * and Solaris store argv[] and environ[] one after another.  So we should
 * ensure that is the continuous memory and then we allocate the new memory
 * for environ[] and copy it.  After this we could use the memory starting
 * from argv[0] for our process title.