Macでcronを使用したいと思います。 Linuxでも新しい知識を使用できるようにしたいので、launchd
よりも選択します。ただし、crontab -e
コマンドが機能しないようです。 vimが起動し、テストジョブに入ります。
0-59 * * * * mollerhoj3 echo "Hello World"
ただし、保存して終了すると(:wq
)、
crontab -l
言う:
No crontab for mollerhoj3
私は何を間違えていますか?
次の手順に従ってください。
crontab -e
。たとえば、cronジョブを入力します。
30 * * * * /usr/bin/curl --silent --compressed http://example.com/crawlink.php
押す Esc vimの挿入モードを終了します。
crontab: installing new crontab
。 crontab -l
を使用して、crontabファイルを確認できます。ただし、~/.vimrc
ファイルのコンテンツによっては、これが機能しない場合があります。
この問題は一度もありませんでしたが、〜/ .crontabファイルを作成して編集し(これにより、Time Machineなどのバックアップが可能になります)、実行します
crontab ~/.crontab
多くの種類のUNIXで20年以上働いてきました。
NOTE:ZZ
コマンドを使用するという回答は、Mavericksシステムでは機能しませんが、これはおそらく私のvim設定に何かがあります。なぜなら、私が.vimrc
の初期状態から始めれば、受け入れられた答えが機能するからです。他の解決策がうまくいかない場合、私の答えはあなたのために働くかもしれません。
MacOS Xでは、crontabのマンページによると、crontab -e
で作成されたcrontab一時ファイルをインプレースで編集する必要があります。 Vimはデフォルトではその場で編集しません(が、crontab -e
をサポートするために特別なケースを行う可能性があります)。したがって、$EDITOR
環境変数がvi
(デフォルト)またはvim
、crontabの編集は常に失敗します。
Vimでファイルをその場で編集するには、次の操作を行う必要があります。
:setlocal nowritebackup
crontab -e
またはZZ
コマンドを使用して:wq
を実行すると、crontabを更新できるようになります。
.vimrcに自動コマンドを追加して、crontabの編集時にこれを自動的に機能させることができます。
autocmd FileType crontab setlocal nowritebackup
別の方法は、setlocal nowritebackup
を~/.vim/after/ftplugin/crontab.vim
に追加することです。これは、Filetypeプラグインを有効にしている場合、crontabファイルを編集するときにVimによって自動的にロードされます。複数のプラットフォームでvimファイルを使用している場合は、OSを確認することもできます。
""In ~/.vim/after/ftplugin/crontab.vim
if has("mac")
setlocal nowritebackup
endif
OS Xでのcronの使用は推奨されていません。代わりにlaunchd
が使用されます。 man launchctl
を試してください。ジョブを定義する特別なXMLファイルを作成し、特定の権限を持つ特別な場所に配置する必要があります。
通常は、launchctl load
を把握するだけです。
http://nb.nathanamy.org/2012/07/schedule-jobs-using-launchd/
編集
OS Xで本当にcronを使用したい場合は、次の答えを確認してください。 https://superuser.com/a/243944/2449
この問題を解決するために2つのことをしました。
EDITOR = emacs crontab -e
(vimが機能しない理由がわかりません)crontab -l
nowはcronjobsを出力します。今、私はcronジョブがまだ実行されていない理由を把握する必要があります;-)
前述のとおり、cronは非推奨(ただしサポートされています)であり、OS Xではlaunchdが推奨されます。
これは developer.Apple.com から取得されます
システムがオフまたはスリープ状態の場合、cronジョブは実行されません。次の指定時間が発生するまで実行されません。
StartCalendarIntervalキーを設定してlaunchdジョブをスケジュールし、ジョブが実行されるべきときにコンピューターがスリープしている場合、コンピューターが起動するとジョブが実行されます。ただし、ジョブを実行すべきときにマシンがオフになっている場合、ジョブは次の指定された時間が発生するまで実行されません。
コンピューターの電源が切れているか、スリープ状態の場合、他のすべての起動ジョブはスキップされます。次の指定時間が発生するまで実行されません。
そのため、ジョブの予定時刻にコンピューターの電源が常に切れている場合、cronジョブと起動ジョブの両方が実行されることはありません。たとえば、常に夜間にコンピューターの電源を切る場合、午前1時に実行するようにスケジュールされたジョブ。実行されることはありません。
ユーザーcrontab(crontab -e
)にユーザーフィールドを入力しないでください。
正しいcronは:
0-59 * * * * echo "Hello World"
ユーザーフィールドを使用した構文は、/etc/crontab
専用です。
0-59 * * * * mollerhoj3 echo "Hello World"
エラーcrontab: temp file must be edited in place
は、vimがバックアップファイルを処理する方法が原因です。
Cronでvimを使用するには、。bash_profileに次の行を追加しますexport EDITOR=vim
alias crontab="VIM_CRONTAB=true crontab"
ファイルを入手します。source .bash_profile
そして、あなたの。vimrcに以下を追加します:if $VIM_CRONTAB == "true" set nobackup set nowritebackup endif
これにより、cronでvimを使用するときにバックアップが無効になります。そして、crontab -e
を使用してcronjobを追加/編集できるようになります。
Cronjobを正常に保存すると、次のメッセージが表示されます。crontab: installing new crontab
ソース:
http://drawohara.com/post/6344279/crontab-temp-file-must-be-edited-in-placeリンクの説明をここに入力
以前の投稿はいくつかの許可の問題のために機能しなかったので、別のcrontabファイルを作成し、rootが機能している間に-uパラメーターを使用してユーザーのcrontabに追加することがわかりました。
Sudo crontab -u {USERNAME} ~/{PATH_TO_CRONTAB_FILE}
上記には正解が混在しています。まったく同じエラーが発生したために私にとってうまくいったのは:
1)bash構成ファイルを編集します
$ cd〜&& vim .bashrc
2)bash構成ファイルで、デフォルトのエディターがviではなくvimであることを確認します(これにより問題が発生します)。
eDITOR = vimをエクスポート
3)vim configファイルを編集します
$ cd〜&& vim .vimrc
4).vimrcでset backupcopyがyesであることを確認します
backupcopy = yesを設定します
5)ターミナルを再起動します
6)crontab editを試してください
$ crontab -e
10 * * * * echo "hello world"
Crontabファイルが正しく作成されることがわかります。 vim(ZZまたは:wq)を終了し、次のコマンドでcrontabをリストした場合;新しいcronジョブが表示されるはずです。お役に立てれば。
$ crontab -l