Відповіді:
Вам також потрібно встановити, 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
команду для перегляду подій (з журналу вікон вікон). Їх ніколи не відкидають, я б обрізав колоди кожні кілька місяців.
У вас є два варіанти:
Встановіть cron як сервіс Windows, використовуючи cygrunsrv:
cygrunsrv -I cron -p /usr/sbin/cron -a -n
net start cron
Зауважте, у (дуже) старих версіях cron потрібно використовувати -D замість -n
Файли "non .exe" - це, ймовірно, скриптові сценарії, тому ви можете запустити їх через планувальник Windows, викликавши bash для запуску сценарію, наприклад:
C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
порада шапки http://linux.subogero.com/894/cron-on-cygwin/
Запустіть налаштування cygwin та додайте пакет "cron" із категорії "Адміністратор".
Ми запустимо 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 також запускає речі, знайдені в таблиці cron системного рівня в "/ etc / crontab". Тому вставте туди свій суф, щоб 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 найкраще створити корисну ПАТ. Домашній dir та оболонки зазвичай беруть із "/ etc / passwd".
Щодо стовпців запланованих команд, див. Сторінку керівництва.
Якщо певні записи на кронтаб не запускаються, найкращим діагностичним інструментом є такий:
$ cronevents
Просто хотілося додати, що параметри крона, схоже, змінилися. Потрібно пройти -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 у cmd-запиту
net start cron
Зараз у терміналі bash запустіть crontab -e
налаштуйте вам запис крону нижче, наприклад:
#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
Додайте ярлик до наступної у папці запуску Windows:
Cygwin_launch_crontab_service.bat
Дивіться http://www.sevenforums.com/tutorials/1401-startup-programs-change.html, якщо вам потрібна допомога щодо додавання до запуску. BTW, ви можете додатково додати їх до запуску, якщо хочете:
Сігвін
Сервер XWin
Перший виконує
C:\cygwin\Cygwin.bat
а другий виконує
C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe
Правильний синтаксис для встановлення cron в cygwin як службу Windows - передавати -n як аргумент, а не -D :
cygrunsrv --встановити cron - шлях / usr / sbin / cron --args -n
-D повертає помилку використання під час запуску cron у cygwin:
$
$ cygrunsrv --встановити cron - шлях / usr / sbin / cron --args -D
$ cygrunsrv - стартовий крон
cygrunsrv: Помилка запуску послуги: QueryServiceStatus: Помилка Win32 1062:
Служба не була запущена.
$ cat /var/log/cron.log
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
PS Мені довелося запустити Cygwin64 Terminal на своєму ПК з Windows 10 як адміністратор, щоб встановити cron як службу Windows.
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
навіть якщо явний запит був зроблений НЕ використовувати інші акаунти. Переключення акаунтів на cgwin на cygwin, мабуть, ОБОВ'ЯЗКОВО. Ви повинні сказати "НІ", щоб працювати як себе ...