web-dev-qa-db-ja.com

端末コマンドまたはスクリプトファイルをスケジュールしてMac OS Xの特定の時間に毎日実行する

コンピュータの音量を毎晩11時45分に特定のレベルに設定したい。 OS X 10.11.4を実行しています。端末から手動で音量を設定できます

osascript -e "set Volume 1.7"

またはスクリプトとして

set volume 1.7

私はそれが毎晩予定されることを望みます。オンラインで時代遅れになっていないものを見つけるのは難しいです。私は本当にiCalを使いたくありません。私がオンラインで見つけたものから、launchdは進むべき道ですが、初心者として、どこから始めればよいかわかりません。

/ Library/LaunchAgentsで.plistを使用することについて確認しているので、気の利いたplistジェネレーター Launched.zerowidth.com を見つけましたが、目的の効果を得るためにどのようなコードをplistに入れますか?これが、ユーザーがログオンしている場合に実行する正しいパスかどうかも質問しています。

ここで間違った道を進んでいますか?私はこれを実現するためにどんなアイデアにも心を開いていますが、サードパーティのアプリを常に開いておく必要はありません。

おかげで、

ナブー

11
Naboo

Cronデーモンの使用を検討してください。デフォルトでosxに存在します。

音量調整用のスクリプトを作成する

#!/bin/bash -l
/usr/bin/osascript -e "set Volume 1.7"

次に、crontabに新しい行を追加します。

crontab -e

デフォルトでは、vi(m)エディターで開きます。しかし、あなたはどんなエディタでも調整することができます

export EDITOR=/path/to/your/awesome/editor

次に、新しい文字列をcrontabに追加します

0 20 * * * /path/to/volume/script.sh

指定されたコマンドは毎日午後8時に実行されます。

Crontabの例については、こちらをご覧ください https://en.wikipedia.org/wiki/Cron

16
retgoat

@TheDarkKnightが指摘するように、cronはlaunchdを支持して廃止されました。

Launchdを使用するには、以下をcom.example.volume.plist~/Library/LaunchAgents/として保存します。

<?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.example.volume</string>
        <key>ProgramArguments</key>
        <array>
                <string>sh</string>
                <string>-c</string>
                <string>set volume 1.7</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
                <key>Hour</key>
                <integer>23</integer>
                <key>Minute</key>
                <integer>45</integer>
        </dict>
</dict>
</plist>

次に、launchctl load ~/Library/LaunchAgents/com.example.volumeを実行して開始します。 launchctl start com.example.volumeを使用して、タスクを強制的にすぐに実行できます。

ルートとして実行する場合は、代わりに/Library/LaunchDaemons/に保存してください。

12
Miles Wolbe