切断後にプロセスのstdoutを読み取る方法

このQ&Aのポイント
  • 切断後にプロセスのstdoutを読み取る方法をご紹介します。
  • Ubuntu 18.04にログイン後、apt installを実行していた所、強制切断されてしまいましたが、進行状況(stdout)を確認するための方法をお伝えします。
  • Web検索で見つけたさまざまな方法を紹介しますが、インストールされていないパッケージのため、他の方法を試す必要があります。
回答を見る
  • ベストアンサー

切断後にプロセスのstdoutを読み取る方法

sshクライアントでUbuntu 18.04にログイン後、 apt installを実行していた所、強制切断されてしまい apt installの進行状況がわからなくなってしまいました。 topコマンドでaptとdpkgがまだ動いているのは確認できましたが進行状況がわかりません。 # ll /proc/<id>/fdの実行結果(一部)は 0 -> '/dev/pts/0 (deleted)' 1 -> '/dev/pts/0 (deleted)' 2 -> '/dev/pts/0 (deleted)' です。 また、ttyコマンドは/dev/pts/2を返しました。 Web検索でヒットした http://yudoufu.hatenablog.jp/entry/2014/02/06/001440 のように接続しようとしましたが、gdbがインストールされていなかったのでできませんでした。 他にもstraceを使う方法もWeb検索で見つけましたがそのstraceもインストールされておらず、 # tail -f /proc/<id>/fd/1 では tail: ファイルが全く残っていません と言われました。 apt,dpkgは他パッケージのインストール中なので使えません。 進行状況(stdout)を見る方法はありますか? 環境:Ubuntu 18.04 amd64

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

gdbが無いと無理だと思います。稼働中のプロセスにちょっかいを出せるのがgdbです。 同じバージョンのOSが他にあれば、そこにgdbをインストールして、gdbだけこぴーしてみるとつかえるかもしれません。とかやっている間に終わりそうですけど。 こういう事態にならないために、screenやtmuxを使いましょう。 https://linuxjm.osdn.jp/html/GNU_screen/man1/screen.1.html screen上で作業していれば、切れてもつなぎ直せます。

This---
質問者

お礼

お礼かなり遅れて申し訳ございませんm(_ _)m 回答ありがとうございました!

関連するQ&A

  • ubuntuでのプログラム

    windows上でubuntuを仮想的に動かし、C言語のプログラムを実行しようとしています。 ターミナルでgccコンパイルを行うと、どうもライブラリがインストールされていないようです。 そこで調べてlibc6-devというものをインストールしようとすると apt-get install libc6-dev E: ロックファイル /var/lib/dpkg/lock をオープンできません E: Unable to lock the administration directry/var/lib/dpkg/lockをオープンできません と言われました。 これを解決するにはどうしたらよいでしょうか? 分かる方どうか教えて下さい。

  • Ubuntuでlibc6-devのインストールが出来ません

    Ubuntu 7.04を使用しています。 プログラム開発環境を整える為に、 libc6-devをインストールしようとしたのですが 行き詰まってしまいました。 ネットを見て最初はapt-getでやろうとしたのですが、 # apt-get install libc6-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています Reading state information... 完了 パッケージ libc6-dev はデータベースには存在しますが、利用できません。 おそらく、そのパッケージが見つからないか、もう古くなっているか、 あるいは別のソースからのみしか利用できないという状況が考えられます E: パッケージ libc6-dev にはインストール候補がありません 上記のようなエラーが出ました。 なのでもう少し調べたところdebianからdebファイルを 落としてインストールした方がいたので、 公式よりファイルをダウンロードしてdpkgを実行したところ # dpkg -i libc6-dev_2.3.2.ds1-22sarge6_i386.deb 未選択パッケージ libc6-dev を選択しています。 (データベースを読み込んでいます ... 現在 114229 個のファイルとディレクトリがインストールされています。) (libc6-dev_2.3.2.ds1-22sarge6_i386.deb から) libc6-dev を展開しています... dpkg: 依存関係の問題により libc6-dev の設定ができません: libc6-dev は以下に依存 (depends) します: libc6 (= 2.3.2.ds1-22sarge6) ...しかし: システム上の libc6 のバージョン は 2.5-0ubuntu14 です。 libc6-dev は以下に依存 (depends) します: linux-kernel-headers ...しかし: パッケージ linux-kernel-headers はまだインストールされていません。 dpkg: libc6-dev の処理中にエラーが発生しました (--install): 依存関係の問題 - 設定を見送ります 以下のパッケージの処理中にエラーが発生しました: libc6-dev このようなエラーが出て行き詰まってしまいました。 この場合依存しているファイルをインストールしてから、 再度libc6-devをインストールすればよいのでしょうか?

  • ubuntuでrpmがインストールできません

    VM(VMware Player)上のubuntuでrpmパッケージをインストールしようとしています. http://notes3102.blogspot.com/2008/10/rpmubuntu.htmlを参考にして,rpmを扱える様にubuntuに以下のコマンドでパッケージを入れました. $ sudo apt-get install alien dpkg-dev debhelper build-essential そして, $ sudo alien (対象のファイル名).rpm を行ったのですが, sudo: alien: command not found というエラーが出てコンバートできません…. 色々と調べたのですが対策がわからないので教えて頂きたいと思います. 宜しくお願い致します.

  • EXT3ファイルシステム破損によりデータが読めない

    ファイルサーバとしてつかっていたUbuntu Linuxのユーザ切り替え画面で ユーザ切り替えができなくなっていたので、電源ボタン長押しで 強制的に電源を落としたところUbuntuが立ち上がらなくなってしまいました。 chrootを使った方法を試してみました。 プロセス番号が677となっていますが、こちらでは754でした。 http://ubuntuforums.org/showthread.php?t=1309423 ここにあるとおり、9.04のLiveCDを用いて cd / mount /dev/sda1 /mnt mount --bind /dev/sda1 /mnt/boot mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /mnt/dev chroot /mnt apt-get update apt-get dist-upgrade dpkg --configure -a とコマンドを打って、再起動したのですが UbuntuはGRUB画面すら立ち上がらず、 LiveCDからGPartedを立ち上げると ファイル共有用の1TBHDDのファイルシステムが壊れ、ファイルを読み出すことができなくなりました。 ファイル共有用の1TBHDDは/dev/sdb2として認識されています。 次に行った行動は http://www.atmarkit.co.jp/flinux/rensai/linuxtips/728fixpartition.html にある。 mkfs.ext3 -n /dev/sdb2 fsck.ext3 -b 32768 -B 4096 /dev/sdb2 mke2fs -S /dev/sdb2 とコマンドをうち、なんとかEXT2ファイルフォーマットとして Gparted上から認識されるようになりました。 しかし、マウントしようとすると org.freedesktop.Hal.Device.Volume.Unknownというエラーが出てしまいます。 このHDDを元の状態に戻すためにはどうしたらよいのでしょうか? ご教授お願いいたします。

  • インストール方法にいくつかありますが

    https://ubunlog.com/ja/chrome-algunas-formas-de-instalarlo-en-ubuntu-21-04/ リンク先には、いくつかのインストール方法が書いてあります。 gdebi dpkg apt付き これらはそれぞれどう違い、どう使い分ければいいのでしょうか? よろしくおねがいします。

  • EXT3フォーマット破損からのデータ復元

    ファイルサーバとしてつかっていたUbuntu Linuxのユーザ切り替え画面で ユーザ切り替えができなくなっていたので、電源ボタン長押しで 強制的に電源を落としたところUbuntuが立ち上がらなくなってしまいました。 chrootを使った方法を試してみました。 プロセス番号が677となっていますが、こちらでは754でした。 http://ubuntuforums.org/showthread.php?t=1309423​ ここにあるとおり、9.04のLiveCDを用いて cd / mount /dev/sda1 /mnt mount --bind /dev/sda1 /mnt/boot mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /mnt/dev chroot /mnt apt-get update apt-get dist-upgrade dpkg --configure -a とコマンドを打って、再起動したのですが UbuntuはGRUB画面すら立ち上がらず、 LiveCDからGPartedを立ち上げると ファイル共有用の1TBHDDのファイルシステムが壊れ、ファイルを読み出すことができなくなりました。 ファイル共有用の1TBHDDは/dev/sdb2として認識されています。 次に行った行動は ​http://www.atmarkit.co.jp/flinux/rensai/linuxtips/728fixpartition.html​ にある。 mkfs.ext3 -n /dev/sdb2 fsck.ext3 -b 32768 -B 4096 /dev/sdb2 mke2fs -S /dev/sdb2 とコマンドをうち、なんとかEXT2ファイルフォーマットとして Gparted上から認識されるようになりました。 しかし、マウントしようとすると org.freedesktop.Hal.Device.Volume.Unknownというエラーが出てしまいます。 これ以上、自分でいじると事態が取り返しのつかない状態になりそうです。 このHDDを元の状態に戻すためにはどうしたらよいのでしょうか? 最悪の場合はPhotorecを用いて復元しようと考えていますが、 ディレクトリ構造もなるべく残した形で復元したいのです。 ご教授お願いいたします。

  • ubuntu20 WiFiドライバ設定

    ubuntu20 ローカル環境でWiFiのドライバーをインストールしました。 もうできましたが途中でやり方が納得できなかったので、もっとマシな方法があれば教えてください。 <やること> Ubuntu 20.04.4 LTS (Focal Fossa)に UGREEN AC650 11ac Dual-Band Wireless USB Adapterの添付CDのドライバをインストール 同機器でインターネットにつなぐ 方法をググってみると、下記の方法でいけるようです。 sudo apt update sudo apt install build-essential git dkms git clone https://github.com/brektrou/rtl8821CU.git cd rtl8821CU chmod +x dkms-install.sh sudo ./dkms-install.sh まだネットに繋がっていないのでrtl8821CUはCDを使います CDを使うのでgitは要りません sudo apt install build-essential sudo apt install dkms この2つのコマンドをどうクリアするかが課題でした。 コマンド自体はDVD内にあるそうですので検索すると build-essentialもdkmsもヒットしますが、ダブルクリックでインストールしようとしてもフリーズしたままになります。 sudo apt install dkms とすると 以下のパッケージが新たにインストールされます: binutils binutils-common binutils-x86-64-linux-gnu build-essential dkms dpkg-dev fakeroot g++ g++-9 gcc gcc-9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libatomic1 libbinutils libc-dev-bin libc6-dev libcrypt-dev libctf-nobfd0 libctf0 libfakeroot libgcc-9-dev libitm1 liblsan0 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make manpages-dev と書いてるけど、されません。 仕方なく、コイツらを個別に全部インストールしました。 sudo apt install binutils-common --fix-missing sudo apt install libalgorithm-diff-xs-perl --fix-missing sudo apt install libalgorithm-merge-perl --fix-missing sudo apt install libatomic1 --fix-missing sudo apt install libbinutils --fix-missing sudo apt install libcrypt-dev --fix-missing sudo apt install libctf-nobfd0 --fix-missing sudo apt install libctf0 --fix-missing sudo apt install libfakeroot --fix-missing sudo apt install libitm1 --fix-missing sudo apt install liblsan0 --fix-missing sudo apt install libquadmath0 --fix-missing sudo apt install libtsan0 --fix-missing sudo apt install libubsan1 --fix-missing sudo apt install linux-libc-dev --fix-missing sudo apt install make --fix-missing sudo apt install manpages-dev --fix-missing sudo apt install libc6-dev --fix-missing sudo apt install libgcc-9-dev --fix-missing sudo apt install gcc-9 --fix-missing sudo apt install fakeroot --fix-missing sudo apt install libalgorithm-diff-perl --fix-missing sudo apt install libc-dev-bin --fix-missing sudo apt install binutils --fix-missing sudo apt install libstdc++-9-dev --fix-missing sudo apt install gcc --fix-missing sudo apt install g++ --fix-missing sudo apt install dpkg-dev --fix-missing sudo apt install build-essential --fix-missing sudo apt install dkms --fix-missing そうしたら build-essentialもdkmsもインストールできたので あとはドライバーのモジュールを動かしてインストール完了しました chmod +x dkms-install.sh sudo ./dkms-install.sh wifiさえ入ってしまえば sudo apt update sudo apt upgrade などで調整できますが、 build-essentialとdkmsのインストール部分がダサ過ぎて、ちゃんとした方法を知りたいです。 以上、よろしくおねがいします。

  • ubuntu 10.04でのlibgtk2.0

    ubuntu 10.04でlibgtk2.0-dev, libxml2-devをインストールしようとしているのですが 端末で sudo apt-get install libgtk2.0-dev を打つと パッケージ libgtk2.0-dev はデータベースには存在しますが、利用できません。 おそらく、そのパッケージが見つからないか、もう古くなっているか、 あるいは別のソースからのみしか利用できないという状況が考えられます というエラーメッセージがでてインストールする事ができません。 sudo apt-get install libxml2-dev でも同様のエラーメッセージが表示されます。 どなたか対策方法をご存知ないでしょうか?

  • Windows 8.1が起動しない

    Ubuntu 13.10 をUSB Bootしたら Windows 8.1が起動しない Ubuntu 13.10 をUSB Bootしたら Windows 8.1が起動しなくなりました。 このような現象は結構起こさせてしまう様なので、色々調べたのですが、解決ができませんでした。 リカバリディスクは手元に無い状態です。 【現状】 ・Ubuntu 13.10 をUSB Bootしたら Windows 8.1が起動しない状態になった。 ・USBを抜いて起動させると、BIOS画面「Aptio Setup Utility」が直ぐに表示される。 この画面以外表示されない。 →この時のBootは、「Boot Opiton #1」のみで、「Windows Boot Manager」となっている。 ・USBを挿した状態で起動させると、直ぐにUbuntuを「Ubuntuをインストールせずに起動する」 or 「Ubuntuをインストールする」の黒い画面が表示される。Bootを選択する画面などはでません。 ※Ubuntuはインストールしていません。「Ubuntuをインストールせずに起動する。」を毎回選択している。 ・USBを挿した状態BIOS画面を確認すると、Bootは、「Boot Opiton #1 が Windows Boot Manager」 「Boot Opiton #2 が UEFI: ELECOM MF-HSU...」となっている。 ※UbuntuをインストールしたUSBがELECOM →このUbuntuのBootが2番目の状態でもWindowsは全く起動せず、Ubuntuが起動させる 【今まで行った対処法】 ・以下のコマンドをUSB上のUbuntu端末から実行 $ sudo apt-get update $ sudo apt-get install lilo $ sudo lilo -M /dev/sda mbr fdisk -l コマンドで、 /dev/sdaであることを確認。 →シャットダウン後、USBを抜いて起動しても、直ぐにBIOS画面が表示され症状変わらず。 ・以下のコマンドをUSB上のUbuntu端末から実行 $sudo apt-get install mbr →パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ mbr が見つかりません 実行できず。 長文で申し訳ありません。私が無知なのにUbuntuを実行してしまったために・・・ Windowsを起動するにはどうしたらよいでしょうか。

  • オフラインのUbuntuにパッケージをインストールする方法

    理由があってネットワークに接続されてないPCに、Ubuntuをインストールしたいのですが、インストールCD-ROMに入ってないモジュールの入れ方がわかりません。 イメージとしては、他のネットワークに接続されているコンピュータにapt-getなどでパッケージを取得し、パッケージををUSBメモリに入れてオフラインのPCに差してインストールする、ということがしたいのですが、ネットで検索したり、dpkgやapt-getなどのmanを読んでもよくわかりません。 やり方をご存じの方はご教授ください。