为进程列表中的start-stop-daemon服务添加标签

为进程列表中的start-stop-daemon服务添加标签

我有一堆 redis 服务实例,我想在命令的输出中为它们添加一个标签ps。目前我看到:

$ ps aux | grep redis
root     <snipped>   /usr/local/bin/redis-server *:6381                    
root     <snipped>   /usr/local/bin/redis-server *:6380  

有没有办法得到这样的输出:

root     <snipped>   /usr/local/bin/redis-server *:6381 item cache # <== label
root     <snipped>   /usr/local/bin/redis-server *:6380 page cache # <== label

即添加文本标签以轻松识别每个实例的用途。

有没有办法做到这一点,而不必复制二进制文件?

答案1

假设redis-server没有内置支持在启动后更改自己的命令名称(某些程序,尤其是守护进程,确实有这样的支持),您可以执行以下操作:

  • 使用备用命令名称。

    尽管命令行 ( argv[0]) 中的第一个参数通常是用于调用命令的二进制文件的名称(其完整路径名或其基本名称),但并非必须如此。如果不是,那么应用程序本身可能不会注意到或关心。但是 shell 会按照此约定启动带有 set 的命令argv[0],因此您必须以“特殊”方式启动它

    为此,您可能需要修改/etc/init.d启动此守护程序的脚本。

  • 建立到二进制文件的硬链接并启动它们。这与您复制二进制文件的建议类似,但副本是不必要的。如果使用硬链接,二进制文件将不会占用任何额外的磁盘空间,并且多个实例的代码(文本)将全部共享内存,而副本不会发生这种情况。

相关内容