Иногда мой сервер 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 с командами, которые я хочу ...
Я использовал такой способ:
D:\Apps\cygwin64\bin\bash.exe
)-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"
с кавычками)