Назад | Перейти на главную страницу

Автозапуск Cygwin при загрузке Windows и выполнение команды cygwin

Иногда мой сервер Windows перезагружается ночью, чтобы установить новые обновления. На следующий день я обнаружил, что мой экземпляр cygwin остановлен.

Я хочу, чтобы при запуске Windows также запускал Cygwin И запускал определенную команду.

Итак, шаг 1: прямо сейчас у меня есть cygwin.bat для запуска cygwin:

@echo off
C:
chdir C:\cygwin\bin
bash --login -i

Шаг 2 - ввести команду в командных окнах, которые появляются после запуска cygwin.bat:

cd /cygdrive/e/solr/apache-solr-4.0-2010-10-12_08-05-48/example/;java -Dsolr.solr.home="./example-DIH/solr/" -jar start.jar

Но я хочу, чтобы эта команда вызывалась автоматически при запуске cygwin.bat.

Как я могу объединить шаг 1 и шаг 2 в один файл bat, который я могу запустить при запуске Windows?

Вы можете создать новый .bat-файл, который запускается при запуске, и использовать bash -c возможность передавать команды в bash при его запуске. Например:

@echo off
C:
chdir C:\cygwin\bin
bash -c "echo 'it works'; read -n 1 -p 'Press any key to continue...' "

Вы также можете внести изменения в свой cygwin.bat, но тогда команды будут запускаться каждый раз при запуске оболочки.

Я стараюсь, чтобы мои возможности Windows были такими же, как у UNIX, насколько это возможно. Первое, что я хотел бы сделать, это установить cron и использовать @REBOOT для запуска скрипта при запуске.

Я нашел здесь хорошую запись об установке cron: https://stackoverflow.com/a/7900158/1607020

Затем создайте файл в /etc/cron.d/myservicename с

@REBOOT /path/to/bash/script > /tmp/myservicename.log 2>&1 

Теперь у меня есть это:

@echo off

C:

chdir C:\cygwin\bin

bash -c cd /cygdrive/e/solr/apache-solr-4.0-2010-10-12_08-05-48/example/;java -Dsolr.solr.home="./example-DIH/solr/" -jar start.jar

bash -c "echo 'it works'; read -n 1 -p 'Press any key to continue...' "

Но похоже, что это не запускает cygwin с командами, которые я хочу ...

Я использовал такой способ:

  1. В Windows 7 откройте Планировщик заданий (Панель управления -> Администрирование -> Планировщик заданий)
  2. Справа «Создать задачу ...»
  3. В «Действиях» в «Программе / скрипте»: <буква>: \ <путь_к_cygwin> \ bin \ bash.exe (у меня D:\Apps\cygwin64\bin\bash.exe)
  4. На «Добавить аргументы (необязательно)»: -c «<все, что вы хотите выполнить внутри bash>» (у меня -c "sleep 60; while true; do /cygdrive/d/xampp/scripts/daily_work_no_wait.sh >> /cygdrive/d/xampp/monitor/daily_work_no_wait.out.txt ; done" с кавычками)