私はこの問題に何度もぶつかりました。現在アクティブなセッションの履歴にアクセスする必要があります。より簡単な方法がない場合は、ターゲットセッションでそれを読み取るCプログラムを作成します。
bashセッションのセッション履歴がメモリに保存される場所を知っている人はいますか? 環境変数または/procのどこかに保存されていますか?私はこれをどこでも検索し、私が見つけることができる最も近い答えは「どこか覚えて」でした。当然、誰かがコマンドを実行するたびにセッション履歴を記録するようにシステムを設定できますが、これは私の特定の用途には実用的ではありません。 (他のアクティブセッションが実行されたときにコマンドを「history -a」できる場合はこれで十分です)。
誰かがこの情報を見つけることができる場所、またはこの情報を含む開始メモリアドレス(与えられたセッション/ TTYへ)を見つけることができる場所への建設的なヒントやポインタがある場合。
これは、現在の履歴セッションをメモリに保存する方法、またはすぐに保存するようにbashを設定する方法を尋ねる一般的な履歴質問の繰り返しではないことに注意してください(インターネットとこのフォーラムにはすでにこれらの質問がいっぱいです)。
これは、ルート(または他のユーザー)としてログインしている他のセッションの現在の「メモリ履歴」を取得する方法を尋ねます。
ご協力ありがとうございました、
ジェフ
答え1
history -a FILE
履歴を保存最後の実行以降history -a
内容をメモリ履歴にFILE
ロードします。デフォルト設定としてシェルで試してみましょう。history -r FILE
FILE
$ PS1='parent\$ ' bash --noprofile --norc
それでは、使用したいカスタム履歴ファイルとデフォルトのBash履歴ファイルを消去しましょう。
parent$ > history.txt
parent$ > ~/.bash_history
それでは始めましょうその他保存およびロード履歴を示すサブシェル:
parent$ PS1='child\$ ' bash --noprofile --norc
次に、次のコマンドを実行します。
child$ echo foo
foo
特定のファイルに履歴を保存します。
child$ history -a history.txt
基本ファイルに履歴を追加します。
child$ cat history.txt >> ~/.bash_history
シェルを終了します。
child$ exit
exit
カスタム履歴ファイルに予想される内容が含まれていることを確認してください。
parent$ cat history.txt
echo foo
history -a history.txt
Bash履歴ファイルに予想される内容が含まれていることを確認してください。
parent$ cat ~/.bash_history
echo foo
history -a history.txt
cat history.txt >> ~/.bash_history
exit