2

わかりましたので、launchctl を使用して github アカウントで自動コミットを設定しようとしています。これを行うために、git コマンドを実行する sh ファイルと、sh を 2 分ごとに実行する plist ファイルを作成しましたが、plist ファイルは失敗します。plistの外で実行すると、shは正常に実行されます

launchctl ログは次のとおりです。

Aug  2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 4: git: command not found
Aug  2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 5: git: command not found
Aug  2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 6: git: command not found
Aug  2 00:02:24 Caseys-iMac com.apple.launchd.peruser.501[123] (com.github.gitSync[9227]): Exited with code: 127

plist ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"

"http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.github.GitSync</string>
    <key>Program</key>
    <string>/usr/bin/gitsync.sh</string>
    <key>ProgramArguments</key>
    <array>
    <string>gitsync.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true />
    <key>StartInterval</key>
    <integer>120</integer>
  </dict>
</plist>

shファイル

#!/bin/bash
DATE=`date`
cd /Applications/Minecraft\ Server/
git pull origin master
git commit -a -m "Auto Sync - $DATE"
git push origin master

助けてください

4

2 に答える 2

1

言及のmanページ:launchd.plist

UserName <string>

このオプションのキーは、ジョブを実行するユーザーを指定します。このキーは、launchdが root として実行されている場合にのみ適用されます。

そう:

  • ユーザーがgit自分のパスに持っている可能性があります(「sh外で実行すると正常に実行される」と述べているためplist
  • ただし、launchdがルートとして実行されている場合、ルートのパスに git が含まれていない可能性があります。

可能であればplist、ジョブを実行するユーザーをファイルで指定することをお勧めします。

于 2012-08-02T07:52:42.187 に答える
1

パスに git がありません。git exe があるパスをパス環境変数に追加します。

于 2012-08-02T06:15:43.820 に答える