쉘에서 프로세스 이름을 업데이트할 수 있습니까?

쉘에서 프로세스 이름을 업데이트할 수 있습니까?

C/C++에서는 일반적으로 이 작업이 수행됩니다 strcpy( argv[0], "새 프로세스 이름"). 이는 실제 프로세스 이름을 숨기기 위해 악성코드에서 사용되는 해킹입니다. 쉘을 통해 이것이 가능합니까?

내가 하고 싶은 일은 스크립트를 통해 사용자가 일부 정보를 쉽게 얻을 수 있도록 , , ...를 $1변경 하는 것입니다. $2예를 들어, 스크립트가 파일을 처리하는 경우 사용자가 즉시 사용할 수 있도록 This_is_file_nr12456.txt간단한 변경을 통해 이 파일을 "게시"할 수 있습니다 .argv[1]ps ax

답변1

최근 Linux에서는 "noclobber"가 설정되지 않은 경우(바람이 올바른 방향으로 부는 경우) printf foo > /proc/$$/comm실행 파일 이름(사물)이 변경됩니다.ps -p

zsh에서는 printf foo >! /proc/$$/comm손상된 상태에 관계없이 작동합니다.

답변2

zsh내장 jobs함수는 쉘의 프로세스 이름을 변경할 수 있습니다.jobs -Z newname

답변3

다음과 같이 스크립트를 재귀적으로 만들 수 있습니다.

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

그런 다음 실행하면 your-script a b c출력 ps이 순서대로 표시됩니다.

your-script a b c
your-script a b
your-script a

관련 정보