
Ubuntu日本語フォーラム

ログインしていません。
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
単にファイルを消すのにやたら時間がかかってるだけだったりしないでしょうか?
/var/cache/apt/archives以下にファイルが山ほどあったりしませんか?
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-10 13:02:58)
オフライン
取り合えず気づいたこと.
> -rw-r----- 1 root root 0 2008-10-30 07:54 lock
lock の日付が古すぎますね.
以下のようにキャッシュを削除した日付が反映されるはず.
$ ls -l /var/cache/apt/archives/
合計 4
-rw-r----- 1 root root 0 2009-02-10 14:26 lock
drwxr-xr-x 2 root root 4096 2008-12-24 02:41 partial
$ date
2009年 2月 10日 火曜日 14:47:14 JST
$ sudo apt-get clean
$ ls -l /var/cache/apt/archives/
合計 4
-rw-r----- 1 root root 0 2009-02-10 14:47 lock
drwxr-xr-x 2 root root 4096 2008-12-24 02:41 partial
何らかの理由でロックを確保できず,待ち状態になっている?
$ sudo strace synaptics 2>&1 | grep open
または
$ sudo strace apt-get clean 2>&1 | grep open
でキャッシュ削除時の open システムコールの様子を調べてみては?
こちらでは,
$ sudo strace apt-get clean 2>&1 | grep open
... 中略 ...
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_TRUNC, 0640) = 4
open("/var/cache/apt/archives/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
open("/var/cache/apt/archives/partial/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 5
最後の編集者: einundzwanzighundertsechs (2009-02-10 15:07:05)
オフライン
微妙なところですが、キャッシュの削除以外、Synapticの設定変更でも同じような現象に遭遇されたりしますか?
https://bugs.launchpad.net/ubuntu/+source/synaptic/+bug/298389
また、
・通常のアップデート処理
・通常のパッケージインストール
・apt-getコマンドによるキャッシュ削除
$ sudo apt-get clean
あたりではおかしな事になりませんか?(ならないと想像)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-10 22:26:05)
オフライン
ごめんなさい.私のミススペルです.
synaptics -> synaptic
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-11 01:46:40)
オフライン
open()
<fcntl.h>
<int open(const char *pathname, int flags, mode_t mode);>
O_NOFOLLOW : シンボリックリンクの場合は辿らない。
--------------------------------------------------------
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640)
{/var/cache/apt/archives/ に有るlockと言うファイルを読み書き権限で開け。
lockが存在しなければ rw-r----- で新規に作れ。
lockがシンボリックリンクならばファイルを開くな。}
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-11 06:30:18)
オフライン
hir0さん、どうも有り難うございます。
/var/cache/apt/archives/lock
はシンボリックリンクでもありませんし、ファイルサイズが0ですし、sudo moreで念のために調べても中身はない様です。
???
私の言葉じゃないですよ。
kiyoshiさんの端末が出したメッセージ?じゃないですか。
↓↓↓
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640)
O_NOFOLLOW
となっていて、何やら、「追跡するな」と意味ありげですが、意味が分かりませんので、解説くださると助かります。
すみません。
O_NOFOLLOWの名前の意味って事ですか?
オフライン
混乱させたみたいでゴメンなさい.
当方は 8.04 なので apt-get の挙動が多少違うようです.
こちらでは,
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_TRUNC, 0640) = 4
O_TRUNC => ファイルサイズを 0 に切り詰めろ
つまり open の段階でファイルの中身が上書きされるので,write が行われなくても,アクセスタイムが更新されるのでしょう.
症状が lock の獲得待ち,もしくは,ファイルI/Oの処理待ちが疑われたので,
ともかく open システムコールをトレースすればフリーズの原因となったファイルが解るかも,
と考えたのです.
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-11 13:47:10)
オフライン
大丈夫ですか?
O_NOFOLLOWは引数で、その意味を聞いたのはkiyoshiさんですよね。
O_NOFOLLOW
となっていて、何やら、「追跡するな」と意味ありげですが、意味が分かりませんので、解説くださると助かります。
で、同じ事を書きますが意味が
O_NOFOLLOW : シンボリックリンクの場合は辿らない。
で次が使用例です、kiyoshiさんが質問に使った文を引用しました。
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640)
次に解説です。
{/var/cache/apt/archives/ に有るlockと言うファイルを読み書き権限で開け。
lockが存在しなければ rw-r----- で新規に作れ。
lockがシンボリックリンクならばファイルを開くな。}
はhir0さんの書き込みではないのですか?
説明求むとあったからですが、
なぜUbuntuがシステムに対して出している命令にkiyoshisさんが答えるのですか?
kiyoshiさんが打ったコマンドに対してエラーを含む何らかの出力(結果)に対して答えるべきだと思います。
その件に関しては私は終始ノータッチです。(今現在も)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-12 21:45:36)
オフライン
なるほど、意味をよく理解してAPIなどの関数が式通りに動作しているかどうかの確認をしてたのですね。
失礼しました。
突然#10のシステムコールの引数?(open関数)の検証が始まった事に気付かず流れが見えませんでした。
それで「私の言葉じゃないですよ。kiyoshiさんの端末が出したメッセージ?じゃないですか。」と書き込んだら、
open()
<fcntl.h>
<int open(const char *pathname, int flags, mode_t mode);>
O_NOFOLLOW : シンボリックリンクの場合は辿らない。
--------------------------------------------------------
open("/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640)
{/var/cache/apt/archives/ に有るlockと言うファイルを読み書き権限で開け。
lockが存在しなければ rw-r----- で新規に作れ。
lockがシンボリックリンクならばファイルを開くな。}はhir0さんの書き込みではないのですか?
となったので、また「私の言葉じゃ無いですよ」と書くよりコメントを付けて
同じ事を書いたのです。
/////////////////////////////////////////////////////////////////////
hir0さん、誤解ですよ。
下記の解説の意味はよく分かっていて、hir0さんが何に腹を立てておられる(いや、立てて居られない?)のかが分かりません。むしろ、先に書いたように、「有り難うございます」と感謝しているではないですか。
私が書いた意味は、hir0さんへの批判ではなく、シンボリックリンクではないので、開けるはずで、更新されないのが書き込んだ時点で分からないので、質問したまでです。
突然に何を言い出しているのか理解しかねますが批判されているとは思っていませんよ。もちろん腹を立ててもいません、違う方向に向かったと思いそれを修正しようと書き込んだのですが(ここが勘違いですね)。まさか呼び出されている関数を調べるのでは無く、関数自体の動作検証を行い始めるとは夢にも思わなかったので、
なぜUbuntuがシステムに対して出している命令にkiyoshisさんが答えるのですか?
と聞いてしまいました、失礼しました。
(私のレベルでは関数は絶対の(既存のバグは省く)物で、システムコールは忠実に実行(エラーを含む)される物だと思っていました。)
「独り言」
現時点では8.10と8.04で挙動が異なることを理解しておりますし、小生は何も問題に感じてはおりません。
hir0さん、勘違いしないでください。そして、有り難うございました。
あーあ、本当に言葉って、誤解されるものですね。小生の書き方が悪かったのでしょうけど。
「小生は何も問題に感じては降りません。」って言われても本題には一切関与してないんだけど。。。
こだわるほど何を勘違いされて、誤解されてると思っているんだろうか?
straceを使っているのに、なぜsynapticを使用してキャッシュクリア時をトレースしたログをとらないのだろう? 不具合を改善するために削除したファイルのバックアップが有るのなら正常時との比較も出来るのに? と思うのがもう間違っているのかな?趣味の独学だけど、はやく理解できるレベルになりたい。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-02-13 05:10:05)
オフライン