メインコンテンツへスキップ

Macで定期実行(launchd)

用途によって配置するフォルダを選ぶ
#

フォルダ使用法
/System/Library/LaunchDaemonsAppleが提供するシステムデーモン
/System/Library/LaunchAgentsAppleが提供するエージェント。すべてのユーザに対してユーザごとに適用されます
/Library/LaunchDaemonsシステムデーモン
/Library/LaunchAgentsすべてのユーザに対してユーザごとに適用されます
~/Library/LaunchAgentsログイン中のユーザにのみ適用されます

LaunchAgentsはログイン前提、LaunchDaemonsはログインに依存せず実行される。

有効化・無効化
#

有効化

launchctl load /path/to/your.plist

無効化

launchctl unload /path/to/your.plist

plistのサンプル
#

20秒毎に実行・ログ出力
#

  • 標準出力、標準エラー出力をログに出力
  • コマンドのサーチパスを指定
  • ワーキングディレクトを指定
  • /usr/local/bin/node main.jsを実行
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.demo.daemon.plist</string>

    <key>RunAtLoad</key>
    <true/>

    <key>StartInterval</key>
    <integer>20</integer>

    <key>StandardErrorPath</key>
    <string>/Users/chet/demo/stderr.log</string>

    <key>StandardOutPath</key>
    <string>/Users/chet/demo/stdout.log</string>

    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string><![CDATA[/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin]]></string>
    </dict>

    <key>WorkingDirectory</key>
    <string>/Users/chet/demo</string>

    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/node</string>
      <string>main.js</string>
    </array>
  </dict>
</plist>

指定日時に実行
#

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>sample</string>
  <key>Program</key>
  <string>/Users/user_name/script/sample.sh</string>
  <key>StartCalendarInterval</key>
  <dict>
      <key>Minute</key>
      <integer>0</integer>
      <key>Hour</key>
      <integer>3</integer>
  </dict>
  <key>StandardOutPath</key>
  <string>/Users/user_name/script/sample.out</string>
  <key>StandardErrorPath</key>
  <string>/Users/user_name/script/sample.err</string>
</dict>
</plist>

参考にしたページ
#

関連記事

Alfred

Alfred - Productivity App for macOS Mac用のキーボードショートカットアプリ。キー入力だけでアプリを起動したり、Web検索をしたり、コンピュータ上のファイルを検索したり、システムコマンドを実行したりできる。 Alfred関連ノート # AlfredからObsidianの保管庫を検索する Alfred常用のための設定と導入ワークフロー AlfredでDeepL翻訳するワークフロー deepl-alfred-workflow2

Textwell

Textwell - The Modeless Textbox for iPhone, iPad, iPod touch, Mac, and Watch. メモ、メッセージ、ブログ、検索、投稿など、あらゆる文章作成タスクに使用できる多目的テキストエディタ ファイリングやスタイリングのための機能はないが、JavaScriptベースのカスタマイズ可能なアクション、自動履歴、クラウド同期などをサポートしており、シンプルで拡張性が高い Mac版、iOS版、AppleWatch版がある Textwell | URL Schemes 自作のアクションなど # ソートして重複行を削除するTextwellのアクション Obsidianのデイリーノートへ追記するTextwellのアクション Amazonから書誌情報をTextwellへ取り込むブックマークレット

Numi: 日常の電卓以上、Excel未満の計算に便利な美しい計算アプリ(Mac)

日常生活で良くある「電卓以上Excel未満」の計算で便利なMac用のアプリ Numi. Beautiful calculator app for Mac. 起動するとApple標準のメモ.appよりもシンプルな画面が開く。 ここへおもむろに数式を入力していくと、リアルタイムに計算結果が右側へ表示される。 上の画面では2021-1997をタイプしたところで、計算結果の24が表示されている。 改行すると次の数式を入力でき、感覚としてはテキストエディタで数式混じりの文書を書くと勝手に計算されていくイメージ。 他にもビット演算や平均値の計算、各種変換(通貨・タイムゾーン・CSS・単位)、変数、関数などもサポートし手いる。 Documentation · nikolaeu/numi Wiki · GitHub 計算式 # 数値・ビット演算 # 平均・通貨 # 変数・関数 # タイムゾーン・CSS・単位の変換 # Numi関連のノート # Numiの使用例

iCloud Driveのパスは?(ターミナルからアクセス)

パスとしては/Users/ユーザ名/Library/Mobile\ Documents/配下になるが、iOSのアプリが作ったフォルダと、自分が直接iCloud Driveへ作成したドライブでこの後のパスが違ったりわずらわしいので、 Finderからドラッグ&ドロップするのがお手軽 FinderでiCloud Driveのフォルダを選択しターミナルへDrag&Dropする ターミナルへパスが展開される。ちゃんとスペースをエスケープされた状態で展開されるので、そのままコマンドで使用できる

Kindle for Macの情報を使って蔵書一覧を作成する

Kindleで持っている本の一覧が欲しくなり方法を調べたところ、そのものズバリの情報があった。 Kindle蔵書一覧を取得する方法 - Qiita このページでは、以下の3つの方法が紹介されている。 コンテンツと端末の管理ページからスクレイピングする Kindle Cloud Readerが使っているWeb SQL Databaseのクライアント側のDBからそのまま取得する Kindle for PC(Kindle for Mac)で生成されるXMLを参照する いちばんお手軽そうな2.を試してみたが、自分の環境ではうまく動作しなかったため、3.のXMLをパースして蔵書一覧をCSVで出力するスクリプトを書いた。 出力されたCSVを眺めてみると、 最初に買ったKindle本は、2011年11月のThe Rails 3 Wayだった 所有情報は存在するが、読めなくなっている本があるようだ XML上はASINのみ出力され、書籍名は—などとなっており、どの本が読めなくなったのかわからない トータル1035冊あった Kindle Unlimitedで読んでいる本はXMLに出力されない などがわかり、なかなかおもしろかった。 Kindle for Macが生成するXMLからは、 ASIN 書籍名 著者 出版社 出版日 購入日 を取れるっぽいが、これに図書分類コード的なものがあれば、ジャンル別に分類したりもできたんだけどね。