Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

シェルスクリプトの動作について

質問は2 つです。シェルスクリプトを起動時にlaunchd から読んだ際にType A とType B の動作の違いは何故か。

memory_pressure コマンドを読んだ際に、再起動前のFinder のウインドウが開かなくなるのは何故か。

です。


状況ですが、

勉強がてら下記のシェルスクリプトを作りました。勉強しながら作ったので、その手の人が見るとダメダメな可能性が高いすが、どうにも不思議な動きをするので質問することとしました。

下記のシェルスクリプトはThunderbolt 接続の外付けSSD から起動したさいにVM パーティションをマウントするためのものです。

Type A

#!/bin/bash -x



set -eu



UUID=「自分のところのUUID」

mountpoint=""

tpoint="/private/var/vm"

vmSwap="vm.swapusage: total = 0.00M"

swapfile="vm.swapusage: total = 0.00M"



sleep 7



for n in $(seq 1 5)

do

if [ "$mountpoint" = "$tpoint" ] ; then

echo $((n - 1)) >> /Users/Shared/n.txt

else

set +e

diskutil mount -mountPoint /private/var/VM "$UUID"

set -e



sleep 4

mountpoint=$(diskutil info "$UUID" | grep -o "$tpoint")

echo ${mountpoint}" xx" >> /Users/Shared/n.txt

fi

done



set +e

memory_pressure -l critical 2>&1 &

set -e



sleep 7



set +e



for n in $(seq 1 61)

do

if [ "$swapfile" = "$vmSwap" ] ; then

sleep 2

swapfile=$(sysctl vm.swapusage | grep -o "$vmSwap")

else

killall -15 -e memory_pressure

exit 0

fi

done

それでType B

#!/bin/bash



UUID=「自分のところのUUID」

mountpoint=“”

mou="vate/var/vm (apfs, local, nodev, nosuid, journaled, noowners, nobrowse)"



for n in `seq 1 14`

do

if [ "$mou" = "$mountpoint" ] ; then

echo $n >> /Users/Shared/Logs/n.txt

exit

else

diskutil mount -mountPoint /private/var/vm $UUID

fi



sleep 3

mountpoint2=`mount | grep "s4 on /private/var/vm (apfs,"`

mountpoint=${mountpoint2##*pri}

done

提載状態なら、どちらも正常に動きます。

それで、

最初の質問はType A の8 行目「sleep 7」です。Mac によってはこの「7」が4 以下になると動きません。動かないのにエラーは出ません。ログによれば目的のパーティションはマウントされて終了しています。ところがログイン後、確認するとマウントされていません。

これは何故でしょうか。これが第一の質問です。


第二の質問ですが、Type A のmemory_pressure コマンドです。

何故かType A の上記のコマンドを実行するとMac を起動してログインしたさいに再起動前に開いていたウインドウが開かなくなる症状があります。私のところでは再現性は高いのですが、気まぐれに起きなくなったりします。気まぐれに直るのは良いのですが何故、起きるのでしょうか。


macOS High Sierra 10.13.4

投稿日 2018/04/15 20:44

返信
返信: 29

2018/07/22 16:28 ni_ki への返信

macOS High Sierra 10.13.6 にアップデート後も順調に19 日まで動いていました。

20 日午後よりフリーズするようになりFirstAid や上書きインストールで改善が見られなかったのでTime Machine からOS ごと復元しました。復元したのは19 日夜のバックアップですのでOS のバージョンは10.13.6 です。

復元後、Launchd で呼び出しているスクリプト内のmount コマンドが権限無しというエラーで止まるようになりました。Safe Boot もSMC のリセットも効果なかったので、試しに10.13.2 で上書き後、Safe Boot で直りました。以前のバージョンでの上書き& Safe Boot が本当に効果があったのか、それとも気まぐれに直ったのかは不明です。

ちなみに37 度超の部屋で復旧作業を行ったので、きつい作業となりました^^;

WBGT は32 近かったです。

2018/05/09 21:33 ni_ki への返信

> diskutilコマンドはnoatimeの設定ができない様です。

マウントした後でも-uフラグを付けることでマウントオプションの変更が可能です。(diskutilの後にmountするのは二度手間ですが...)

ユーザがアップロードしたファイル

> 質問の2つ目が、sleepコマンドで回避できません。

mountに比べ、diskutilは動作が遅いので、sleepを5秒程多めに設定してもだめですか?

2018/04/18 15:39 hohokihai への返信

書き込みありがとうございます。grep の件、了解です。なぜかdevice にはUUID が入っているのでawk の方を確認してみます。

plist 置き場はDaemons の方です。マウント理由はお考えの通りですが、スワップファイルが作成されない問題の対策です。なのでスリープだと凌げません。

2018/04/18 16:49 ni_ki への返信

度々すみません。実のところTerminal.appでユーザーがVMをマウントすることが可能なので、システム起動中に実行される/Library/LaunchDaemonsではなく、ログイン後に実行される/Library/LaunchAgentsに入れたら勝手にunmountされることはない、なんてことありませんか?

2018/04/19 01:59 ni_ki への返信

横から失礼します。


サラッと試してみましたがAgents の方はroot 権限で実行されるのではないのですね。管理者権限だとsudo が必要になるのでexpect の方に戻さないといけないようです。


セキュリティ的にはちょっとアレだけど...、こんな感じで sudo の -S オプションを使ってみてはどうでしょうか?

echo 'password' | sudo -S whoami

2018/04/19 12:51 Hiro__S への返信

-S オプションはまだ試せていないですが、書込みありがとうございます。

とりあえず以前、作成してあったexpect の方で試したところログアウトでアンマウントされてしまいました。再ログインで再マウントされるのですが。

2018/04/19 19:40 hohokihai への返信

検証、感謝申し上げます。

どうも起動やログイン時のマウント系が不思議な動作をするようですね。もしかして外付けAPFS から起動すると、vm パーティションをマウントしないのもスワップファイルを作成しないのも、似た原因なのかと勘ぐってしまいます。


ちなみに別の外付けSSD を指定したら見事にマウントされてスワップもできました。何か楽しいですね。

2018/04/21 22:09 ni_ki への返信

前にも書き込んでいますが、やはりdiskutil mount コマンドを使う前に時間を置くのが最善なようです。

sleep 17

くらいから、我が家の複数のMac で安定します。


ちなみに別ストレージをVM にマウントしていて、それを強制的にアンマウントするとクラッシュします。当然ですね。

2018/04/24 11:49 ni_ki への返信

2台のmacOS High Sierra 10.13.4 で起動時に数分間フリーズするので、このスクリプトが原因かと思っていたらカスペルスキー18.0.1.35b が原因でした。スクリプトを外しても起きます。

一昨日くらいまでは起きなかったので何が原因か不明ですが、アップデートを自動にしているのでカスペルスキーがアップデートされたのかと思います。

カスペルスキーをお使いの方はご注意を。

2018/04/27 14:29 ni_ki への返信

本題ではないですが昨日、確認したところカスペルスキーの症状が起きなくなっていました。定義ファイルのアップデートは行われたのを確認しました。改善したと言えるかは、しばらく様子を見ないと謎です。

シェルスクリプトの動作について

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。