一部の cygwin コマンドは.exe
ファイルであるため、標準の Windows スケジューラで実行できますが、.exe
拡張子がないため DOS から実行できないものもあります (そのようです)。
たとえば、updatedb
毎晩走りたいとします。
cron を機能させるにはどうすればよいですか?
cygrunsrv
cronをWindowsサービスとして設定できるようにインストールしてから、を実行する必要もありますcron-config
。
exim
cronジョブで出力の電子メールを送信する場合は、またはssmtp
(実行する前に)のいずれかをインストールする必要がありますcron-config
。
詳細については、を参照/usr/share/doc/Cygwin/cron-*.README
してください。
拡張機能のないプログラムに関して.exe
は、おそらく何らかのタイプのシェルスクリプトです。ファイルの最初の行を見ると、それらを実行するために使用する必要のあるプログラム(たとえば、 " #!/bin/sh
")がわかります。したがって、シェルプログラム(たとえば、 ""を呼び出すことにより、Windowsスケジューラからそれらを実行できますC:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog
。 )。
2つのオプションがあります。
cygrunsrvを使用して、cronをWindowsサービスとしてインストールします。
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
(非常に)古いバージョンのcronでは、-nの代わりに-Dを使用する必要があることに注意してください。
'non .exe'ファイルはおそらくbashスクリプトであるため、bashを呼び出してスクリプトを実行することにより、Windowsスケジューラを介してファイルを実行できます。例:
C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
帽子のヒントhttp://linux.subogero.com/894/cron-on-cygwin/
cygwin-setup を起動し、「管理者」カテゴリから「cron」パッケージを追加します。
ユーザー SYSTEM によってサービスとして cron を実行します。したがって、貧弱な SYSTEM にはホーム ディレクトリとシェルが必要です。「/etc/passwd」ファイルはそれらを定義します。
$ mkdir /root
$ chown SYSTEM:root /root
$ mcedit /etc/passwd
SYSTEM:*:......:/root:/bin/bash
サービスを開始します。
$ cron-config
Do you want to remove or reinstall it (yes/no) yes
Do you want to install the cron daemon as a service? (yes/no) yes
Enter the value of CYGWIN for the daemon: [ ] ntsec
Do you want the cron daemon to run as yourself? (yes/no) no
Do you want to start the cron daemon as a service now? (yes/no) yes
ローカル ユーザーは、次のようにスケジュールされたタスクを定義できるようになりました (crontab はお気に入りのエディターを起動します)。
$ crontab -e # edit your user specific cron-table HOME=/home/foo
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
# testing - one per line
* * * * * touch ~/cron
@reboot ~/foo.sh
45 11 * * * ~/lunch_message_to_mates.sh
ドメイン ユーザー: 機能しません。貧弱な cron は、マシン上のドメイン ユーザーに代わってスケジュールされたタスクを実行できません。しかし、別の方法があります。cron は、「/etc/crontab」のシステム レベルの cron テーブルにあるものも実行します。SYSTEM が独自にそれを行うように、そこにサフを挿入します。
$ touch /etc/crontab
$ chown SYSTEM /etc/crontab
$ mcedit /etc/crontab
HOME=/root
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
* * * * * SYSTEM touch ~/cron
@reboot SYSTEM rm -f /tmp/.ssh*
最後に、crontab エントリについて少し説明します。これらは、環境設定またはスケジュールされたコマンドのいずれかです。上記のように、Cygwin では使用可能な PATH を作成するのが最善です。ホームディレクトリとシェルは、通常「/etc/passwd」から取得されます。
スケジュールされたコマンドの列については、マニュアル ページを参照してください。
特定の crontab エントリが実行されない場合、最適な診断ツールは次のとおりです。
$ cronevents
cron のオプションが変更されたように見えることを追加したかっただけです。-D ではなく -n を渡す必要があります。
cygrunsrv -I cron -p /usr/sbin/cron -a -n
Windows 7 にログオンしたときに Cygwin cron サービスを自動的に実行する方法を見つけました。
メモ帳を使用して、1 行目と2 行目C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt
にコンテンツを含むファイルを作成します(引用符なし)。これらは、 のプロンプトに対する 2 つの応答です。no
yes
cron-config
C:\cygwin\Cygwin_launch_crontab_service.bat
コンテンツを含むファイルを作成:
@echo off
C:
chdir C:\cygwin\bin
bash cron-config < Cygwin_launch_crontab_service_input.txt
Windows スタートアップ フォルダーに次のショートカットを追加します。
Cygwin_launch_crontab_service.bat
スタートアップへの追加方法についてヘルプが必要な場合は、http://www.sevenforums.com/tutorials/1401-startup-programs-change.htmlを参照してください。ところで、必要に応じて、オプションでこれらをスタートアップに追加できます。
シグウィン
XWin サーバー
最初のものは実行します
C:\cygwin\Cygwin.bat
そして2番目のものは実行されます
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
この回答の指示を適用すると、うまくいきました。回答のようなコピーペーストを指摘するだけです(cygwinのインストール手順は、コピーと貼り付けを防止する方法で実装されているため)
WinLogoボタンをクリックし、cmd.exeと入力し、右クリックして「管理者として開始」。コマンドプロンプトで:
cd <directory_where_i_forgot_the setup-x86_64.exe> cygwin installer:
set package_name=cygrunsrv cron
setup-x86_64.exe -n -q -s http://cygwin.mirror.constant.com -P %package_name%
インストーラーがプロンプトでエラーをスローしないことを確認してください...エラーが発生した場合-おそらくいくつかのcygwinバイナリが実行されているか、Windows管理者ではないか、または奇妙なバグです...
コマンドプロンプトで:
C:\cygwin64\bin\cygrunsrv.exe -I cron -p /usr/sbin/cron -a -D
または、cygrunsrv.exe への完全なファイル パスを入力し、cmd プロンプトで Windows サービスとして cron を開始します。
net start cron
bashターミナルで crontab -e を実行します
次の例のように cron エントリを設定します。
#sync my gdrive each 10th minute
*/10 * * * * /home/Yordan/sync_gdrive.sh
# * * * * * command to be executed
# - - - - -
# | | | | |
# | | | | +- - - - day of week (0 - 6) (Sunday=0)
# | | | +- - - - - month (1 - 12)
# | | +- - - - - - day of month (1 - 31)
# | +- - - - - - - hour (0 - 23)
# +--------------- minute