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