Um pouco sujo e provavelmente há uma solução mais limpa (talvez usando o SELinux ou grsec), mas você pode ocultar um processo montando um diretório vazio dentro de /proc/<pid>
.
Por exemplo, algo assim: %código% impedirá que usuários comuns vejam o processo 42.
No entanto, eles verão que algo está oculto, pois poderão ver o ponto de montagem.
Se você quiser fazer isso para um serviço, você terá que fazer isso toda vez que for iniciado, usando seu script de inicialização ou o que for.
Se você quiser ocultar o pid somente de um usuário específico, poderá brincar com namespaces (talvez usando
mount -o bind /empty/dir /proc/42
) para que o bind de montagem seja feito apenas no namespace do usuário de destino.