zsh
jobs
builtin pode alterar o nome do processo do shell. jobs -Z newname
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
.
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.
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
Tags bash zsh shell shell-script