web-dev-qa-db-ja.com

バックグラウンドプロセスに移動した後、lftpでジョブキューを表示するにはどうすればよいですか?

Debianを実行しているRaspberryPiでファイルをリモート転送するためにlftpを使い始めたところです。私はファイルを転送する方法を知っており、queuejobsを使用して転送ファイルを追加および表示します。

ただし、lftpがバックグラウンドに移動した後、これらの転送を表示する方法については実際にはわかりません。 lftpのマニュアルページ は、lftpがバックグラウンドに移動する方法について説明していますが、シェルからプログラムの新しいインスタンスを開いてjobsと入力すると、キューが空になります。ただし、ファイルマネージャーを使用すると、ファイルが存在し、サイズが大きくなるため、転送がまだ行われていることがはっきりとわかります。

Lftpを再度開くと、アクティブなキューを持つNohupモードのlftpに接続されていない新しいインスタンスが開かれているだけだと思います。いろいろな場所を検索してみましたが、この問題を抱えている人は他にいないようです。

だから、私が求めているのは2つあると思います。

  1. バックグラウンドのlftpプロセスに簡単に接続して、現在のjobsリストを表示する方法はありますか?

  2. そうでない場合、これを表示する方法はありますか?

8
drpfenderson

Lftpのインスタンスがジョブキューを共有しないのは正しいです。これはもちろん、シェルのジョブキューの動作と似ています。

それでも、lftpは実際に既存のバックグラウンドセッションに接続できます。 lftp news バージョン履歴によると、この機能はバージョン4.3.0(2011-06-17)で導入されました。 lftpセッションへの接続が切断された場合、またはバックグラウンド転送が進行中の状態で終了した場合でも、最近のバージョンでは、バックグラウンドのlftpプロセスを再開して、そのジョブキューにアクセスできます。

Lftpのマニュアルページから:

attach[[〜#〜] pid [〜#〜]]

指定されたバックグラウンドのlftpプロセスに端末を接続します。

これを行うには、バックグラウンドのlftpプロセスのプロセスID、PIDを知っている必要があります。これを行う簡単な方法は、一致するプロセスIDを一覧表示するpgrepコマンドです。

たとえば、ここではlftpで転送をバックグラウンドで実行します。

lftp remote:/path> get oi-dev-151a-x86.iso 
[0] get oi-dev-151a-x86.iso &                                             
     `oi-dev-151a-x86.iso' at 655360 (0%) 296.1K/s eta:46m [Receiving data]
lftp remote:/path> exit
[82106] Moving to background to complete transfers...

これは、アタッチするために必要なpidをリストしていますが、これを書き留めていない場合は、pgrepで再度見つけることができます。

$ pgrep lftp
82106

そしてここで、バックグラウンドのlftpを再開します。

$ lftp
lftp :~> attach 82106
[82106] Attached to terminal.
lftp remote:/path> jobs
[0] get oi-dev-151a-x86.iso 
    `oi-dev-151a-x86.iso' at 42827776 (5%) 1.49M/s eta:10m [Receiving data]

Debian安定バージョンにはアタッチ機能がない場合がありますが、pgrepを使用してアクティブなlftpプロセスを一覧表示できます。

12
joneskoo

lftpのマニュアルページ から:

If  you exit lftp when some jobs are not finished yet, lftp will move itself to
Nohup mode in background. The same happens when you have a real modem hangup or
when you close an xterm.

親プロセスが終了している場合、Nohupで実行されているバックグラウンドプロセスに接続することはできません。

1
Yedric

Lftpのマニュアルページから収集:ctrl-zを使用してプロセスをバックグラウンドで移動してlftpを終了し、後でlftpを再起動してwaitと入力します。

0
1398