Как запустить crontab в Cygwin на Windows?


некоторые команды cygwin являются .exe файлы, так что вы можете запустить их со стандартным планировщиком Windows, но другие не имеют .exe расширение так что не может быть запущен из DOS (похоже).

например я хочу!--2--> работать по ночам.

как заставить cron работать?

8 90

8 ответов:

Вам также необходимо установить 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".)

у вас есть два варианта:

  1. установите cron в качестве службы windows, используя cygrunsrv:

    cygrunsrv -I cron -p /usr/sbin/cron -a -D

    net start cron

  2. ' non .файлы exe, вероятно, являются сценариями bash, поэтому вы можете запускать их через планировщик windows, вызывая bash для запуска сценария, например:

    C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"

наконечник шляпы http://linux.subogero.com/894/cron-on-cygwin/

запустите cygwin-setup и добавьте пакет "cron" из категории "Admin".

мы будем запускать крон в качестве сервиса по системе пользователей. Поэтому плохая система нуждается в домашнем каталоге и оболочке. Файл" /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 также запускает материал, найденный в таблице cron системного уровня в "/etc/crontab". Поэтому вставьте туда свой Суфф, чтобы система делала это от своего имени:

$ 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 лучше всего создать удобный путь. Главная директория и оболочка обычно берутся из "/ etc / passwd".

Что касается столбцов запланированных команд, см. страницу руководства.

если некоторые записи crontab не выполняются, лучшим диагностическим инструментом является следующее:

$ cronevents

просто хотел добавить, что параметры cron, похоже, изменились. Нужно пройти -n а не-D.

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 и запустите cron как службу windows в командной строке

 net start cron

сейчас Баш терминал запустить 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

я понял, как заставить службу Cygwin cron работать автоматически, когда я вошел в Windows 7. Вот что сработало для меня:

используя Блокнот, создайте файл C:\cygwin\bin\Cygwin_launch_crontab_service_input.txt С содержанием 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

Добавить ярлык в автозапуск папка: Cygwin_launch_crontab_service.bat

см.http://www.sevenforums.com/tutorials/1401-startup-programs-change.html Если вам нужна помощь о том, как добавить в Startup. Кстати, вы можете дополнительно добавить их в Startup, если хотите:

программа

XWin Сервера

первый выполняет

C:\cygwin\Cygwin.bat

а второй выполняет

C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
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.

правильный синтаксис для установки cron в cygwin в качестве службы Windows должен пройти - n как аргумент, а не - D:

cygrunsrv --install cron --path /usr/sbin / cron --args - n

- D возвращает ошибку использования при запуске cron in cygwin:

$

$cygrunsrv --install cron --path /usr/sbin / cron --args-D

$cygrunsrv --start cron

cygrunsrv: ошибка запуска службы: QueryServiceStatus: Win32 ошибка 1062:

служба не запущена.

$cat/var/log / cron.журнал

cron: неизвестный параметр -- D

использование: /usr / sbin / cron [- n] [- x [ext, sch, proc, parc, load, misc, test, bit]]

$

ниже страница имеет хорошее объяснение.

установка и настройка службы Cygwin Cron в Windows: https://www.davidjnice.com/cygwin_cron_service.html

П. С. мне пришлось бежать Терминал Cygwin64 на моем ПК с Windows 10 в качестве администратора заказ на установку cron как служба Windows.