私はliveUSB isoファイルを作成し、多くのインストールとchroot script
スクリプトを実行していますmount -t proc proc /proc
(chroot
私は最初に「クリーンアップ」を実行したときにこの問題を発見し、chrootで実行したスクリプトはもう実行されませんでした)。今私の状況は非常に奇妙です。システムはどのようにこのように動作できますか?
$ if [ -d "newdir/proc" ]; then echo 1;fi
1
$ if [ -d "newdir/pro" ]; then echo 1;fi
$ sudo ls -al "newdir"
total 0
umount newdir
問題は、「ターゲットが使用中です」という出力にも表示されます。findmnt | grep proc
「newdir/proc」行は表示されなくなります。
1を追加:
$ sudo ls -al "newdir/media/root/usb" # another mount
total 0
$ sudo ls -al "newdir/media/root"
total 0
$ sudo ls -al "newdir/media"
total 0
違いがある場合はシステムnewdir
にあります。tmpfs
追加2:
@Bartの答えで提案されているように実行して、IIRCスクリプトの結果を見ることができるlsof
他の端末があることに気づきました。chroot newdir
これでchrootが終了したので、lsof | grep nwdir
bashコマンドのリストは出力されなくなり、警告のみが出力されfuse.gvfsd-fuse
ますfuse /run/user/1000/doc
。次の場合はまだ同じです。
$ sudo ls -al "newdir/media/root"
total 0
しかし、その後、出力でエラーなしで操作を実行できumount newdir
ましたsudo ls -al "newdir/media/root"
。no such file
ポリスチレン予期しない動作の原因は、こちらのヘルプで確認されています。 chrootを使用して端末を閉じないでください。しかし、開いているプロセスのハンドルを使ってファイルにアクセスする方法を読みましたが、ここでは「ゴースト」が一般的な実行方法であることを証明します。ls
私はこれがなぜ/どのように動作するのかについての説明を見ることができたらと思います。
答え1
実際にはprocfs
ファイルシステムではなく、メモリ内容と現在実行中のプロセスを表現したものです。あなたが見ているのは、一部のプロセスがchroot Mountedにファイルを生成しましたがproc
終了しておらず、まだそのディレクトリでファイル参照を使用していることを示しています。
lsof | grep /newdir/proc
存在しない場所をまだ使用しているプロセスを表示する必要があります。
あなたが望むのは、おそらくchrootの内側のどこかにバインドマウントすることです。
mkdir -m 0555 newdir/proc
mount --bind /proc newdir/proc
まさかmount -t
。