使う
Ctrl-Z
アプリケーションを一時停止し、コマンド ラインに戻ります。次に使用
bg
プロセスをバックグラウンドで続行できるようにします。最後に使用
disown
セッションを切断して端末を閉じたときにプロセスが閉じられないようにします。
プロセスは引き続き実行されますが、ターミナルに「再接続」して、新しいセッションに再接続した場合に私が認識している出力を表示する方法はありません.
reptyr
を使用
これはまさに man 1 reptyr
の場合です 明示的に言及:
reptyr
既存の実行中のプログラムを取得し、それを新しい端末に接続するためのユーティリティです。 ssh を介して実行時間の長いプロセスを開始しましたが、終了する必要があり、中断したくありませんか? screen
を開始するだけです 、 reptyr
を使用 それを取得するには、ssh セッションを強制終了して、ホームに向かいます。
(マニュアルには screen
が記載されています 、 tmux
を使用できます 代わりに、お好きな方を選んでください)。
このメモをお見逃しなく:
<ブロック引用>
reptyr
ptrace(2)
に依存 リモートプログラムにアタッチするためのシステムコール。 Ubuntu Maverick 以降では、セキュリティ上の理由から、この機能はデフォルトで無効になっています。することで一時的に有効にすることができます
echo 0 > /proc/sys/kernel/yama/ptrace_scope
root として、またはファイル /etc/sysctl.d/10-ptrace.conf
を編集して永続的に には、この設定に関する詳細情報も含まれています。
ファイルが存在しないが /etc/sysctl.d/
の場合 ディレクトリにある場合は、おそらく次の内容で作成するだけで十分です:
kernel.yama.ptrace_scope = 0
設定は次回の再起動時に適用されます。以下のセキュリティに関する考慮事項を参照してください。
基本的な使い方
基本的な使い方は簡単です:
reptyr PID
どこで PID
新しい端末にアタッチするプロセスの PID です。 reptyr
に注意してください プロセスを別の端末に接続するだけです。これは、プロセスが新しいシェルの子になるという意味ではありません。
セキュリティに関する考慮事項
設定 ptrace_scope
0
として 推奨されません。
Linux の人気が高まるにつれ、マルウェアの大きな標的になるでしょう。 Linux プロセス インターフェイスの特に厄介な弱点の 1 つは、1 人のユーザーが任意のプロセスのメモリと実行状態を調べることができることです。たとえば、1 つのアプリケーション (Pidgin など) が侵害された場合、攻撃者は実行中の他のプロセス (Firefox、SSH セッション、GPG エージェントなど) にアタッチして、追加の資格情報を抽出し、その範囲を拡大し続けることができます。ユーザー支援のフィッシングに頼らずに攻撃できます。
これは理論上の問題ではありません。 SSH セッション ハイジャック (http://www.storm.net.nz/projects/7) および任意のコード インジェクション (http://c-skills.blogspot.com/2007/05/injectso.html) 攻撃は既に存在し、残っています。 ptrace
なら可能 以前のように動作することが許可されています。 ptrace
以降 開発者や管理者以外は一般的に使用しないため、システム ビルダーには、このデバッグ システムを無効にするオプションを許可する必要があります。
[…]
sysctl 設定 (CAP_SYS_PTRACE
でのみ書き込み可能) ) は:
0
- クラシック ptrace
許可:プロセスは PTRACE_ATTACH
できます ダンプ可能である限り、同じ uid で実行されている他のプロセスに […]
1
- 制限付き ptrace
:プロセスは、PTRACE_ATTACH
を呼び出したい下位プロセスと事前定義された関係を持っている必要があります。 の上。デフォルトでは、上記の従来の基準も満たされている場合、この関係はその子孫のみの関係です。 […]
2
- admin-only attach:CAP_SYS_PTRACE
のプロセスのみ ptrace
を使用できます PTRACE_ATTACH
で 、または PTRACE_TRACEME
を呼び出す子を通じて .
3
- アタッチなし:プロセスは ptrace
を使用できません PTRACE_ATTACH
で PTRACE_TRACEME
経由でもありません .一度設定すると、この sysctl 値は変更できません。
合理的なアプローチは、ptrace_scope
を設定することです 2
へ reptyr
を許可する ptrace
を使用するには :
echo 2 | sudo tee /proc/sys/kernel/yama/ptrace_scope
sudo setcap CAP_SYS_PTRACE+pe /usr/bin/reptyr
永続的な設定を保持するファイルを忘れないでください。
機能はファイルの inode に保存されます。したがって、reptyr
であっても驚かないでしょう。 更新されると機能が失われます (新しい実行可能ファイルに原子的に置き換えられます)。
コマンドの関連付けを完全に解除できます (bash
で) または zsh
、おそらく他のシェル) disown
指図。ただし、tty が必要な場合、コマンドはこれに満足しない可能性があります。その場合は、reptyr
を参照してください。 答えてください。
$ ssh somecentos7system
-bash-4.2$ sleep 252727
^Z
[1]+ Stopped sleep 252727
-bash-4.2$ bg
[1]+ sleep 252727 &
-bash-4.2$ disown
-bash-4.2$ logout
Connection to somecentos7system closed.
$ ssh somecentos7system
-bash-4.2$ pgrep -lf 252727
20089 sleep
-bash-4.2$
もう 1 つのオプションは、screen (または tmux) セッションを自動的に開始することです。これにより、そのように設定したために既に開始されているため、開始するのを忘れることはありません。その方法については、別の場所に投稿があります。