在 shell 中更新进程名称,这可能吗?

Jer*_*pas 9 shell bash zsh shell-script

在 C/C++ 中,通常可以执行strcpy( argv[0], “新进程名称”)。这是恶意软件中用来隐藏真实进程名称的黑客。是否可以通过shell进行这种操作?

我想要做的是:更改$1, $2, ... 以便脚本可以轻松地向用户提供某些信息。例如,如果脚本正在处理 file This_is_file_nr12456.txt,它可以argv[1]通过简单的更改使其立即对用户可用来“发布”它ps ax

小智 9

对于最近的 Linux,如果未设置“noclobber”(并且风向正确),printf foo > /proc/$$/comm将更改可执行文件名称(ps -p事物)。

在 zsh 中,printf foo >! /proc/$$/comm无论破坏状态如何都可以工作。


llu*_*lua 3

zshjobs内置函数可以更改 shell 的进程名称。jobs -Z newname

  • @JerryEpas,至少在 Linux 上不是这样。在那里,`zsh -c 'jobs -Z foo; ps-p“$$”;:'` 仍然显示 `zsh` 而 `zsh -c 'jobs -Z foo; ps-fp“$$”;:'` 显示 `foo`。在 Linux 上,您需要 `prctl(PR_SET_NAME)` 来更改进程名称,而 `zsh` 则不能。 (2认同)