如何修改进程名称
分析如何修改进程名称,以利于更清楚的展示进程相关信息
引子
最近服务器中了挖矿病毒,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.