AppleScriptを用いてキャッシュ消去した後、AppleScriptのdisplay dialogの表示がおかしくなった

みなさま、こんにちは

AppleScript、キャッシュ消去に関する質問です。


「QuickTime Playerのスピーカ表示が水色に変わるが、これは、何のメッセージですか」

https://discussionsjapan.apple.com/message/100589406#100589406


につきまして、みなさまからいただきましたコメントを参考に、次のAppleScriptを用いてMac OS Xのメンテナンス(キャッシュ消去)を行いました。


http://www2.ocn.ne.jp/~kimukazu/Cashes_clear.applescript


キャッシュの消去と再起動は、目的通りに動作しました。

しかし、その後、再度ScriptEditorでAppleScriptを実行しましたところ、display dialogの表示が写真の通り乱れたものになりました。

キャッシュ消去前より、消去後の方がiMacの状態が悪くなってしまったようです。

尚、今回がiMac購入後、初めてのキャッシュ消去です。(これまで、iMacはとても安定していたので、メンテナンスしておりませんでした。)

(写真)

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

AppleScript、キャッシュ消去で検索しても回答が見当たりませんでしたので、質問させていただいております。

とても困っております。お手数ですが、この解決策につきまして、ご存知の方がいらっしゃいましたら、ご指導いただければ幸いです。

よろしくお願いいたします。


(参考)

iMac OSX 10.4.11 Tiger

スクリプトエディタ 2.1.2 (82.1)

AppleScript 1.10.7


以上です。

iMac, Mac OS X (10.4.11)

投稿日 2011/04/22 01:18

返信
返信: 7

2011/04/22 03:00 kimukazu への返信

キャッシュとはいえ、とくにシステムキャッシュなどは生兵法的に削除すべきではないですね。

そういうわけもあって、先のリプライで私はユーザキャッシュの削除しか書かなかったのですが...(^^;)


xy さんが書かれているようにセーフブートするか、OnyXなどのユーティリティを使ってキャッシュを削除し直してみられては。

2011/04/22 05:35 Maculturati への返信

xy 様、Maculturati様:

貴重なコメント、ありがとうございます。大変参考になります。

レスをお返しするのが遅くなりましてすみません。これまでの現象の発生経緯や原因究明とその対策案を考えるのに時間を要してしまいました。

情報共有を目的nこれまでの経緯をより詳細にお知らせいたします。

新たな問題に遭遇するたび、ノウハウの蓄積がどんどんたまり、自分が機能追加されていく気分です。

現在の私の感想では問題解決のためには、スクリプトエディタのアンインストールと再インストールではないかと考えております。

私は、これは、まだ、実行経験がないのですが、OSXのDVDを探し、個別インストールするのでよろしいでしょうか?

解決策案も含め、コメントいただければ幸いです。


問題の原因究明(これまでの経緯の情報共有)

■事実からわかること

○問題の発生契機:下記の(X)と(Y)の間のどこか

○異常が発生すると思われるアプリ:キャッシュ全消去後に起動した唯一のアプリがスクリプトエディタ

○異常の発生部位:発生する現象よりスクリプトエディタの日本語関連機能に限定


■事実から想定される原因(仮設)

仮設1:(D)で日本語処理に必要な何かのファイルを消去してしまった。

仮設2:(A)のキャッシュ消去後、アプリを起動したため、そのアプリに何らかの異常が発生した


■解決策案

問題がスクリプトエディタ、特に日本語処理機能に限定

-スクリプトエディタのアンインストールと、再インストール


これまでの実施手順

1.Finderで ~/Library/Caches/* の中を確認。キャッシュフォルダが数多くあることを確認


2.do script "rm -R ~/ライブラリ/Caches/*"の実施

最初は、ディレクトリの指定を日本語で指定しておりました。


tell application "Terminal"

do script "rm -R ~/ライブラリ/Caches/*" ---(D)

end tell

<連続ビープ音発生>

Last login: Fri Apr 22 19:54:53 on ttyp1

rm -R ~/ÉâÉCÉuÉâÉä/Caches/*

Welcome to Darwin!

kimurakazuoiMac:~ kimurakazuo$ rm -R ~/Cu/Caches/*

rm: /Users/kimurakazuo/Cu/Caches/*: No such file or directory

kimurakazuoiMac:~ kimurakazuo$


ここでFinderで~/ライブラリ/Caches/*に数多くのキャッシュが、未消去で残っていることを確認。何か消されたのかは不明 ---- (C)


2.do script "rm -R ~/Library/Caches/*"の実施 (日本語から英語へ)


tell application "Terminal"

do script "rm -R ~/Library/Caches/*"

end tell

消去に15分程度かかる

Finderで~/Library/Caches/*内にフォルダが全くないことを確認 -------(A)


3.作成したAppleScriptをスクリプトエディタで実施。 ------- (B)

http://www2.ocn.ne.jp/~kimukazu/Cashes_clear.applescript

★キャッシュ消去後に実施した唯一のアプリがScript Editor

<AppleScript>の内容

-確認メッセージ:正しく日本語が表示。 ----(X)

-全てのアプリ終了

-ターミナルで、rm -R ~/Library/Caches/*実施

-ターミナル終了

-SystemEvetsでrestart

(注)実行時passwordは聞かれていないので、ルート、及び、システムキャッシュの消去は実行していない。

(参考)セーフブート後の現時点での状態

ルート/ライブラリ/キャッシュ(未消去)

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


システム/ライブラリ/キャッシュ(未消去)

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

4.再起動後、AppleScript起動(スクリプトエディタ) --- (Y)

★問題発見 ダイアログの日本語表示が異常(前報告)


xyさんのコメントを読む。


5.セーフブート実施

再起動し、起動音のあと[shift]を押したまままつ。歯車表示が現れてから[shift]を離す。

起動に15分程度かかるが、正常にデスクトップが表示

i★Mac OSのコアには、問題ないことが実証できた。


6.AppleScript起動および試験

display dialog "abc" --英字は正常に表示

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


display dialog "abc あいう" --日本語が混在すると表示が乱れる

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


7.AutomatorのAppleScriptエラー

http://www2.ocn.ne.jp/~kimukazu/test_workflow8.dmg

AppleScriptの日本語表示だけでなく、日本語ファイル名の分析に失敗

ここでのファイル名の正解は、"オーディオ.mov"

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


以上です。(長々とごめんなさい)

2011/04/22 12:26 Maculturati への返信

xy 様、Maculturati様、みなさま:

貴重なコメント、ありがとうございます。大変参考になりました。

根本原因にたどりつくまで、時間がかかりましたが、おかげさまで、原因が特定でき、無事、スクリプトエディタが日本語を話せるるようになりましたのでお知らせいたします。


【今回の不具合の原因】

$rm -R ~/ライブラリ/Caches/* コマンド(日本語を含む)により~/.CFUserTextEncodingファイル(日本語環境設定ファイル)を消去したため、スクリプトエディタの日本語環境が破壊された。

(なんで~/ライブラリ配下のCachesディレクトリ内の消去コマンドのはずなのに、ホームディレクトリのファイルが消せたのか、ここが大きなポイントです。普通は気づかないと思います)


【対策と結果】

他ユーザのアカウントにログイン

他ユーザの~/.CFUserTextEncoding(不可視化環境設定ファイル)を可視化ファイルとしてコピー

$cp .CFUserTextEncoding CFUserTextEncoding

ファインダでCFUserTextEncodingファイルを外部ディスクへコピー

他ユーザからログアウト

自ユーザでログイン

外部ディスクからファインダでCFUserTextEncodingへコピー

$mv CFUserTextEncoding .CFUserTextEncoding で不可視化

$chmod 644 .CFUserTextEncoding でパーミッション設定

$ls -la でパーミッションの設定を確認

ログアウト

再ログイン スクリプトエディタ起動 確認

問題解決(画面)

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


【再発防止策】

★do scriptコマンドでシェルコマンドを実行する際は、必ず、英語を使うこと。間違っても日本語を使ってはいけません。特にrmコマンド、とても危険です。

(なぜかって?それはわかりませんが、日本語を話すと予想外のことが起きるからです)


<<この問題に気づいたヒント>>

最初、問題はスクリプトエディタが問題と考え、スクリプトエディタの再インストールを考えたが、念のため、他のユーザでも同じことが発生していないか確認してみた。

その結果、他ユーザのスクリプトエディタ(日本語処理)は全く問題なく動作した。そこで、まず消去した~/Library/Caches/内のデータについて、他ユーザと自ユーザで比較したが、理にかなった設定ファイルらしきものは見当たらなかった。

そこで、次に$ls -la ~/ライブラリ/Caches/ コマンドを、自ユーザと他ユーザで実施し、その結果を比較した。その結果、.CFUserTextEncodingの存在の差に気がついた。

みなさん、スクリプトエディタのdo script コマンドで 日本語:"ライブラリ"を含んだ"ls -la ~/ライブラリ/Caches/"コマンドを、試しに実際実行して見てください。

一体何が起こると思いますか?No such file or directoryでしょうか?私はこの予想外の結果に大変驚きました。その結果のご確認とご判断は、みなさまにおまかせいたします。


以上です。

2011/04/22 13:39 kimukazu への返信

kimukazuさん、こんにちは


シェルで日本語を含むコマンドが適切に処理されないのは、単純にターミナルの文字エンコーディングのデフォルト設定が日本語を解釈できないエンコーディングになっているからだと思います。


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


Last login: Sat Apr 23 05:14:39 on ttys000

ls -la ~/ライブラリ/Caches/

ICEBOX:~ hogehoge$ ls -la ~/ライブラリ/Caches/

ls: /Users/hogehoge/ライブラリ/Caches/: No such file or directory

ICEBOX:~ hogehoge$

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

Last login: Sat Apr 23 05:15:00 on ttys000

ls -la ~/ライブラリ/Caches/

ICEBOX:~ hogehoge$ ls -la ~/ライブラリ/Caches/

ls: /Users/hogehoge/ライブラリ/Caches/: No such file or directory

ICEBOX:~ hogehoge$


従って、ターミナルのコマンドで日本語を適切に処理したい場合は文字エンコーディングをUTF-8等に設定していれば問題は生じないと思われます。


それより、今回の様な事故を防ぐにはrmコマンドの様な強力なコマンドを安易に用いない事かと思います。下手をすれば Mac OS のシステムが壊れます。せめてdeleteコマンド程度にとどめておいた方が宜しいかと。(deleteコマンドで消せないファイルはスクリプトで消さない方が良いと思います。)

2011/04/22 16:00 アイスクリーマ への返信

アイスクリーマ 様、みなさま

ご丁寧かつ適切なる、コメント、本当に感謝、感激です。

ターミナルの日本語設定、未確認でした。早速、これから確認してみます。すばらしい、一撃、ほんとうに痺れました。ありがとうございます。


kimukazu 拝

2011/04/22 18:03 アイスクリーマ への返信

アイスクリーマ様、みなさま:

貴重なコメント、ありがとうございます。

早速、ターミナルの日本語環境設定、やってみました。どうも、10.4.11 Tigerには、日本語設定を指定する部分が無いようです。

(写真)

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

ですので、日本語設定は、デフォルト:UTF-8になっているかと思います。また、この環境で日本語入力が可能です。以下のコマンドが文字化けせずに投入できたのですから。


(1)$ls -la ~/ライブラリ/Caches/の場合 (修復後の現時点)

Last login: Sat Apr 23 08:56:22 on ttyp1

ls -la ~/ライブラリ/Caches/*

Welcome to Darwin!

kimurakazuoiMac:~ kimurakazuo$ ls -la ~/.CFUserTextEncoding ~/.DS_Store ~/.Trash ~/.bash_history ~/.cpan ~/.dvdcss ~/.fgfs ~/.fontconfig ~/.fonts.cache-1 ~/.gervill ~/.gimp-2.2 ~/.jordan ~/.lpoptions ~/.macports ~/.mozilla ~/.mplayer ~/.profile ~/.recently-used ~/.spumux ~/.spwave ~/.spwave_tmp ~/.subversion ~/.swfinfo ~/.thumbnails ~/.viminfo ~/.xinitrc ~/.xinitrc.save ~/.xinitrc.save.1 ~/.xinitrc.save.2 ~/.zsnes ~/Desktop ~/Documents ~/Library ~/Movies ~/Music ~/Pictures ~/Public ~/Sites ~/system_profiler_0000.spx /Caches/*

ls: /Caches/*: No such file or directory

-rw-r--r-- 1 kimuraka kimuraka 4 Apr 23 03:04 /Users/kimurakazuo/.CFUserTextEncoding

-rw-r--r-- 1 kimuraka kimuraka 6148 Apr 23 08:59 /Users/kimurakazuo/.DS_Store

-rw------- 1 kimuraka kimuraka 3079 Apr 23 08:58 /Users/kimurakazuo/.bash_history

-rw-r--r-- 1 kimuraka kimuraka 347229 May 11 2009 /Users/kimurakazuo/.fonts.cache-1

-rw-r--r-- 1 kimuraka kimuraka 14 May 9 2010 /Users/kimurakazuo/.lpoptions

-rw-r--r-- 1 kimuraka kimuraka 457 Feb 23 11:32 /Users/kimurakazuo/.profile

-rw------- 1 kimuraka kimuraka 13268 May 11 2009 /Users/kimurakazuo/.recently-used

-rw-r--r-- 1 kimuraka kimuraka 1191 Mar 13 16:18 /Users/kimurakazuo/.spwave

-rw-r--r-- 1 kimuraka kimuraka 211 Apr 19 06:00 /Users/kimurakazuo/.swfinfo

-rw------- 1 kimuraka kimuraka 887 Mar 31 20:56 /Users/kimurakazuo/.viminfo

-rw-r--r-- 1 kimuraka kimuraka 645 Jan 25 2007 /Users/kimurakazuo/.xinitrc

-rw------- 1 kimuraka kimuraka 642 Jan 25 2007 /Users/kimurakazuo/.xinitrc.save

-rw------- 1 kimuraka kimuraka 645 Jan 25 2007 /Users/kimurakazuo/.xinitrc.save.1

-rw------- 1 kimuraka kimuraka 647 Jan 25 2007 /Users/kimurakazuo/.xinitrc.save.2

-rw-r--r-- 1 kimuraka kimuraka 4709 Feb 5 2007 /Users/kimurakazuo/system_profiler_0000.spx

(続く:省略)

★ここで、驚くべきことは、lsコマンドの参照先をユーザキャッシュを指定していしたはずなのに、なぜかlsコマンドが、その参照先を勝ってにホームディレクトリの不可視ファイル(フォルダ)と、ルートディレクトリのキャッシュに置き換えて指定していたのです。

ここまでくれば、$rm -R ~/ライブラリ/Caches/* が、どのような恐ろしい想定外のことをしてくれたかおわかりになるかと思います。

このようなこと、普通、予想できるでしょうか?私にはできませんでした。今回の事故の発生は、ここで生じていたのです。

また、アイスクリーマ様ご指摘の日本語設定の件ですが、今回の場合では、ターミナルには文字化けせずにコマンドが表示されておりますので、日本語設定は本質的な事故原因ではなかったのではないかと考えます。

次は、英語の場合です。


(2)$ls -la ~/Library/Caches/の場合 (修復後の現時点)

Last login: Sat Apr 23 09:07:57 on ttyp1

ls -la ~/Library/Caches/*

Welcome to Darwin!

kimurakazuoiMac:~ kimurakazuo$ ls -la ~/Library/Caches/*

-rw-r--r-- 1 kimuraka kimuraka 517029 Apr 23 04:58 /Users/kimurakazuo/Library/Caches/com.apple.automator.actioncache

(続く:省略)

$lsコマンドの参照先を英語で指定すれば、全く想定通りの動作をしています。日本語で指定した時のような想定がのことは、全く実行していません。もちろん、rmコマンドも同様に実行されます。


この現象は、アイスクリーマ様のご指摘のご様子から想像するに、どうやら10.4.11 Tiger特有なのかもしれません。他のみなさま、日本語lsコマンド、お試しになられたでしょうか?

情報共有させていただければ、幸いです。


以上です。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

AppleScriptを用いてキャッシュ消去した後、AppleScriptのdisplay dialogの表示がおかしくなった

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