たまに掃除は必要!熱暴走…

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、CPU温度がたまたま目に入り、95℃を超えて徐々に上昇していく。 105℃あたりで再度マシンダウン。 これは、熱暴走によるダウンの可能性が高い。 以前、CPUをRyzen7→9にした頃は、60℃〜70℃程度だった記憶がある。 本当はGW中にSSDの載せ替えを行う予定だったけれど、忙しくて先延ばしにしていた。 その時やっていれば、多分掃除もしただろうに…。 ということで、午後からマシンを解体し、掃除をすることに。 ケース本体のFANはホコリがかなり溜まっている。 GPUのFANは問題ない。 電源とCPU FANはひどい。 一旦、CPU FANを取り外し、きれいにする。ついでにCPUグリスも塗り直しセット。 動作確認すると、投入直後で40℃台。 そりゃ、熱暴走も起こすわけだ。 せっかくバラしたので、SSDの載せ替えを実施。 OSは500GBで、ユーザ領域(/home)は1TBを使用しているもののAIのmodelをいくつも落としていたり、DockerのImageが多種置いてあるため、結構容量を食っている。 今回、2TBのSSD( Hanye SSD ¥17,800- で入手済)を用意してあるので、 1TB→2TB, 500GB→1TBと玉突きで移動させることを計画していたので実施する。 本当は、ddコマンドで移すつもりだったのだけれど、3月にお客さんのところで使いそうだったので、 ORICOのクローン機能付SSDアダプタ を入手済。 裸族のSSD版ですね…。1万円程度の品です。 これに、新品のSSDとこれまでの1TBのSSDを差し込んでクローン開始。 そこそこ時間はかかるものの、放置でOK。 ただ、HanyeのSSDについているヒートシンクが引っかかるため、一旦取り外してクローン後取り付ける必要があった。 続いて、500GB→先程の1TBに書き込み。 ただ、1TB(samsungの980pro)が、先程のクローンでかなり熱くなっていたため、速度低下が激しい感じ。1TB→2TBよりも時間がかかった感じ。 ...

findで条件に合わないものを探す

findってあんまり使わないけど…

今頃になって、知ったというか、調べたというか…。

一体何年使っているんだと言われそうなくらい初期の頃から使っているのに、こんな使い方したことなかったなぁと、自分でも驚いた。
忘れないとは思うけど、きっと同じような人がいるだろうと思うので、書いておく。

これまでの使い方

いままで、findを使う時って、
  • 特定の拡張子が含まれている
  • サイズが1MB以上
  • 何日前より古いファイル
  • 30分以内に編集したファイル
なんて使い方が多かった。

でもって、中身を検索するならgrepだし…。

もちろん、パイプも使うし、xargsも使ってきた。

今回、はて?と考えた事

今回相談があって、LibreOfficeで編集ができないファイルがある。とな…。
調べてみると、オーナーがnobodyになっている。
ちょいちょい不具合もあるので、根本原因は調査中だけど、編集できないのは困るというので、急ぎで修正する必要がある。

さて、user_aのホームフォルダ以下で、user_aがユーザではないファイルを探す…。
まず、思いついたのは findだよなぁと…。
# find /home/user_a -user user_a
これだと、user_aが所有者のファイルがリストアップされる。

あれ? 否定はどうするんだ???と
grep -v はよく使うけれど、findの条件否定って、よくよく考えると使ったことがないような気がする。(20年近くUNIX系触っているのに…)

まずは、Helpだよね。

$ find --help
使用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

デフォルトのパスはカレントディレクトリです。デフォルトの評価式 (expression) は -print です。評価式は演算子、オプション、テストおよびアクションで構成されます。

演算子 (優先順位は降順です。特に指定がない場合は -and が暗黙的に使用されます):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

位置オプション (常に真): -daystart -follow -regextype

通常オプション (常に真。他の評価式の前に指定します):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xdev -ignore_readdir_race -noignore_readdir_race

テスト (N は +N、-N または Nで指定します): -amin N -anewer FILE -atime N -cmin N
      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
      -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
      -nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
      -readable -writable -executable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]

actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print 
      -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

バグを発見した場合は findutils バグ報告ページ http://savannah.gnu.org/ を
使用して報告 (および修正の進捗を追跡) してください。Web を利用できない場合
は <bug-findutils@gnu.org> に E-mail を送ってください。

演算子のところに書いてあるじゃないか…。
terminalの高さが25行だと、ちょうどスクロールアウトするんだよね。

「!」か 「-not」を使えと。
$ find /home/user_a ! -user user_a
 これだけだった。
でもって、存在を確認して、chown するだけ。

まあ、滅多に使わないんだろうな。
次回はいつ使うのやら…。

調べていたら、他にも便利なものがあった

久々に、find --help なんてやったので、良く読んでみると、actionの最初に「-delete」なんて書いてある。

???

ぐぐってみたら、最近のfindには用意されているらしい。
自分の常識では、-exec rm {} か xargs rm と覚えていたのに…。
$ find ~/ -name '.lock.*' | xargs rm
の代わりに、
$ find ~/ -name '.lock.*' -delete
でOKなんだってさ…。
(ちなみに、LibreOfficeが作成するlockファイルの残骸をまとめて消す処理ですが)

読んでみるもんだな。

コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?