シェルでプロセス名を更新できますか?

シェルでプロセス名を更新できますか?

C / C ++では通常、これが行われますstrcpyargv[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

関連情報