2

の後sudo su -、k-shell 履歴リストにユーザー名とタイムスタンプの両方が必要です。コマンドラインがあります:

trap 'who am i|cut -d" " -f1 |tr "\n" " " && date|read -s' debug

このコマンドでは、次のようなことが期待されます。

UserName Tue Oct 13 15:37:06 CDT 2015 履歴リストに。ただし、表示されるのはTue Oct 13 15:37:06 CDT 2015

これは 2 番目のアクションdateのみを実行しているようで、最初のアクションを無視またはオーバーライドします。

履歴リストにユーザー名とタイムスタンプを含めるにはどうすればよいですか?

ユーザー名が必要な理由は、複数のユーザーが同じサービス ユーザーに対して同じ偽装権限を持っているためです。

4

3 に答える 3

1

私は簡単な解決策を見つけました:

  1. 次の 1 行で、サービス ユーザーのホーム ディレクトリにファイルtrapmeを作成します。

    私は誰ですか | カット -d" " -f1 |tr "\n" " " && 日付

  2. .profile に 1 行追加します。

    トラップ '~/trapme | read -s' デバッグ

これにより、コマンドの後に実際のユーザー ログインとタイムスタンプを含む行が作成されます。

于 2015-10-13T22:49:46.110 に答える
1

これは私のために働いた:

$ trap 'echo this; echo that' INT
$ sleep 10
^Cthis
that
$ 

複雑なコマンドが必要な場合、通常は を使用しますksh -c 'compound | pipe | command'が、引用符を使用するとかなりトリッキーになります。

(少なくとも bash では、サブシェルは親シェルの関数を呼び出すことができるため、コメンターが提案したように関数を定義できます。これは でテストされていませんksh)。

アップデート

これは私のために働く:

trap 'echo $(whoami|cut -d" " -f1 |tr "\n" " " && date)' INT

することを検討してください

trap 'echo "$(id -un) $(date)"' INT

あるいは

trap 'date "+$(id -un) %DT%T"' INT

等。

于 2015-10-13T21:03:41.940 に答える
0

出力を渡したいすべてのコマンドをreadグループに入れます。

trap '{ who am i|cut -d" " -f1 |tr "\n" " "; date; }|read -s' DEBUG
于 2015-11-22T00:20:25.287 に答える