Atualiza o nome do processo no shell, é possível?

4

No C / C ++, é geralmente possível fazer strcpy ( argv[0] , "novo nome do processo"). É um hack usado em software malicioso para esconder o nome real do processo. Essa operação é possível via shell?

O que eu quero fazer é: alterar $1 , $2 , ... para que o script possa tornar certas informações facilmente disponíveis para o usuário. Por exemplo, se o script estiver processando o arquivo This_is_file_nr12456.txt , ele poderá "publicar" isso alterando argv[1] , tornando-o imediatamente disponível para o usuário pelo simples ps ax .

    
por Jerry Epas 26.11.2014 / 05:05

3 respostas

2
zsh jobs builtin pode alterar o nome do processo do shell. jobs -Z newname

    
por 27.11.2014 / 19:13
4

Com o Linux recente, printf foo > /proc/$$/comm mudará o nome do executável (a ps -p thing), desde que "noclobber" não esteja definido (e o vento esteja na direção certa).

Em zsh, printf foo >! /proc/$$/comm funciona independentemente do estado de destruição.

    
por 30.04.2016 / 00:29
2

Você pode tornar seu script recursivo dessa maneira:

#! /bin/sh -
do-something-with "$1"
shift
[ "$#" -eq 0 ] || exec "$0" "$@"

Em seguida, ao executar your-script a b c , a saída ps será exibida por vez:

your-script a b c
your-script a b
your-script a
    
por 27.11.2014 / 18:27