回答:
またcygrunsrv
、cronをWindowsサービスとして設定してを実行できるように、インストールする必要がありますcron-config
。
cronジョブが出力の電子メールを送信するようにしたい場合は、exim
またはssmtp
(を実行する前にcron-config
)をインストールする必要もあります。
詳細については/usr/share/doc/Cygwin/cron-*.README
、を参照してください。
.exe
拡張子のないプログラムに関しては、おそらく何らかのタイプのシェルスクリプトです。ファイルの最初の行を見ると、それらを実行するために使用する必要のあるプログラム(「#!/bin/sh
」など)がわかるため、シェルプログラム(「」など)を呼び出して、Windowsスケジューラから実行することができますC:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog
。 )
cronevents
コマンドを使用して、イベントを表示します(Windowsイベントログから)。それらは決して廃棄されません、私は数か月ごとにログを剪定します。
次の2つのオプションがあります。
cygrunsrvを使用して、cronをWindowsサービスとしてインストールします。
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
(非常に)古いバージョンのcronでは、-nの代わりに-Dを使用する必要があることに注意してください。
「非.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を起動し、「Admin」カテゴリから「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
この回答からの指示を適用し、それは機能しました回答のようなより多くのコピーとペーストを指摘するだけです(cygwinのインストール手順はアンチコピーとペーストの賢明な実装の一種であるため)
WinLogoボタンをクリックし、cmd.exeと入力して右クリックし、「管理者として開始」。中には、cmdをプロンプト:
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管理者でないか、または奇妙なバグです...
今でCMD PROMT:
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
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を参照してください。ところで、必要に応じて、これらをスタートアップにオプションで追加できます。
Cygwin
XWinサーバー
最初のものは実行します
C:\cygwin\Cygwin.bat
そして2番目のものが実行されます
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
Windowsサービスとしてcygwinにcronをインストールする正しい構文は、-Dではなく-nを引数として渡すことです。
cygrunsrv --install cron --path / usr / sbin / cron --args -n
-Dは、cygwinで cronを起動すると使用法エラーを返します。
ドル
$ cygrunsrv --install cron --path / usr / sbin / cron --args -D
$ cygrunsrv-cronを開始します
cygrunsrv:サービスの開始エラー:QueryServiceStatus:Win32エラー1062:
サービスは開始されていません。
$ cat /var/log/cron.log
cron:不明なオプション-D
使用法:/ usr / sbin / cron [-n] [-x [ext、sch、proc、parc、load、misc、test、bit]]
ドル
以下のページは良い説明があります。
WindowsでのCygwin Cronサービスのインストールと構成:https : //www.davidjnice.com/cygwin_cron_service.html
PS cronをWindowsサービスとしてインストールするには、Windows 10 PCで管理者としてCygwin64ターミナルを実行する必要がありました。
Getting updatedb to work in cron on Cygwin -- debugging steps
1) Make sure cron is installed.
a) Type 'cron' tab tab and look for completion help.
You should see crontab.exe, cron-config, etc. If not install cron using setup.
2) Run cron-config. Be sure to read all the ways to diagnose cron.
3) Run crontab -e
a) Create a test entry of something simple, e.g.,
"* * * * * echo $HOME >> /tmp/mycron.log" and save it.
4) cat /tmp/mycron.log. Does it show cron environment variable HOME
every minute?
5) Is HOME correct? By default mine was /home/myusername; not what I wanted.
So, I added the entry
"HOME='/cygdrive/c/documents and settings/myusername'" to crontab.
6) Once assured the test entry works I moved on to 'updatedb' by
adding an entry in crontab.
7) Since updatedb is a script, errors of sed and find showed up in
my cron.log file. In the error line, the absolute path of sed referenced
an old version of sed.exe and not the one in /usr/bin. I tried changing my
cron PATH environment variable but because it was so long crontab
considered the (otherwise valid) change to be an error. I tried an
explicit much-shorter PATH command, including what I thought were the essential
WINDOWS paths but my cron.log file was empty. Eventually I left PATH alone and
replaced the old sed.exe in the other path with sed.exe from /usr/bin.
After that updatedb ran to completion. To reduce the number of
permission error lines I eventually ended up with this:
"# Run updatedb at 2:10am once per day skipping Sat and Sun'
"10 2 * * 1-5 /usr/bin/updatedb --localpaths='/cygdrive/c' --prunepaths='/cygdrive/c/WINDOWS'"
Notes: I ran cron-config several times throughout this process
to restart the cygwin cron daemon.
can't switch user context
でも、他のアカウントを使用しないように明示的に要求されたとしても、seteuid(または何か)が使用され、不可解で矛盾して失敗することに注意してください。cygwinでのcronによるアカウント切り替えは明らかに必須です。自分で実行する場合は、NOと言う必要があります...