как автоматизировать cygwin и minty

В настоящее время у меня есть это под моим ярлыком

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

после этого я должен ввести

cd x:ВВОД

затем я запускаю скрипт curl, который не меняется.

Я попытался автоматизировать это, выполнив следующую команду, но, похоже, она не работает.

мой файл SH

#!/bin/bash

cd x:
curl http://thedomain.com/update.json --connect-timeout 10000 --max-time 10000 --data-binary @jsonfilename -H 'Content-type:application/json;charset=utf-8;[email protected];'

это то, что я запускаю в CMD

mintty.exe --exec 'c:/cygwin/bin/test.sh'

cygwin всплывает на 2 секунды и исчезает.

пожалуйста помоги

обновить

Новая ошибка

$ /bin/test.sh
      0 [main] bash 12000 child_info_fork::abort: cygreadline7.dll: Loaded to different address: parent(0x3B0000) != child(0x320000)
/bin/test.sh: fork: retry: Resource temporarily unavailable
      0 [main] bash 12052 child_info_fork::abort: cygreadline7.dll: Loaded to different address: parent(0x3B0000) != child(0x2B0000)
/bin/test.sh: fork: retry: Resource temporarily unavailable
      0 [main] bash 9304 child_info_fork::abort: cygreadline7.dll: Loaded to different address: parent(0x3B0000) != child(0x3A0000)
/bin/test.sh: fork: retry: Resource temporarily unavailable
      0 [main] bash 9036 child_info_fork::abort: cygreadline7.dll: Loaded to different address: parent(0x3B0000) != child(0x3A0000)
/bin/test.sh: fork: retry: Resource temporarily unavailable
      0 [main] bash 9588 child_info_fork::abort: cygreadline7.dll: Loaded to different address: parent(0x3B0000) != child(0x3C0000)
/bin/test.sh: fork: Resource temporarily unavailable

person nkman    schedule 10.04.2013    source источник


Ответы (3)


Ваша команда говорит mintty запустить и запустить ваш скрипт, что он и делает, а затем выйти. Это «всплывающее окно», как вы его называете, представляет собой открытие терминала, запуск команды, которую вы ему передали, а затем выход, поскольку он выполнил свою работу.

person Costa    schedule 10.04.2013
comment
похоже, он не запускает скрипт в моем файле оболочки. - person nkman; 11.04.2013

для тех, кто заинтересован в этом .. вот решение

создайте ярлык в Windows для Mintty со следующей целью

Предполагая, что ваш файл оболочки находится в c:\cygwin\bin

C:\cygwin\bin\mintty.exe /bin/bash -l -e '/cygdrive/c/cygwin/bin/test.sh'

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

Windows 7 Pro: создайте базовое задание с помощью планировщика заданий Windows, чтобы запускать его ЕЖЕДНЕВНО и выполнять все шаги. После того, как вы создали задачу, перейдите в «Свойства», затем перейдите на вкладку «ТРИГГЕРЫ» и нажмите «ИЗМЕНИТЬ».

под рамкой РАСШИРЕННЫЕ НАСТРОЙКИ вы увидите ПОВТОРЯТЬ ЗАДАЧУ КАЖДЫЙ.... оттуда не требуется пояснений.

person nkman    schedule 12.04.2013

Оценивает ли mintty.exe аргументы --exec с корнем файловой системы c:\ или средой cygwin /? Попробуй это.

mintty.exe --exec '/bin/test.sh'

or

mintty.exe --exec '/cygdrive/c/cygwin/bin/test.sh'

Кроме того, если вы этого не сделали, вам следует chmod 755 /bin/test.sh сделать его исполняемым.

person rojo    schedule 10.04.2013
comment
попробовал оба и все равно ничего :( В результате я должен получить электронное письмо, если сервер получил файл JSON, с ошибкой или нет. - person nkman; 11.04.2013
comment
@nkman - Является ли c:\cygwin\bin фактическим местоположением test.sh? Будет ли сценарий иметь желаемый эффект, если вы запустите mintty.exe и в этой консоли выполните /bin/test.sh? Если нет, возникает ли соответствующая ошибка? - person rojo; 11.04.2013
comment
да, фактическое место для test.sh - c:\cygwin\bin . Я запустил Mintty и выполнил /bin/test.sh. НЕТ ошибки, но окно после этого закрывается. - person nkman; 11.04.2013
comment
Странно, что окно само закрывалось, если вы были в командной строке bash. Помогает ли изменить ваш сценарий .sh и заменить cd x: на cd /cygdrive/x ? Если это не поможет, попробуйте добавить какие-нибудь sleep 5s и echo после каждой команды, чтобы увидеть, в какой момент ваша консоль дает сбой. - person rojo; 11.04.2013
comment
мое сообщение слишком длинное. Пожалуйста, посмотрите на обновленный мой вопрос. - person nkman; 11.04.2013
comment
Та же ошибка при запуске /bin/test.sh? Кстати, exec вам особо и не нужно. Просто введите /bin/test.sh в строке $. - person rojo; 11.04.2013
comment
верный. CURL отлично работает вне скрипта. $ curl URL --connect-timeout 10000 --max-time 10000 --data-binary @test.json -H 'Content-type:application/json;charset=utf-8;X- Электронная почта поставщика[email protected];' {uploaded:true,сообщение: JSON получено. Электронное письмо будет отправлено после завершения обработки.} - person nkman; 11.04.2013
comment
Извините, nkman, но я не могу объяснить вам, почему ваша команда curl выполняется успешно из командной строки bash, но не из сценария оболочки. Но в любом случае нынешняя обсуждаемая проблема уже не имеет ничего общего с заголовком вверху этой страницы. Вам, вероятно, следует отредактировать свой вопрос и сделать это вопросом. Почему curl работает успешно из командной строки, но не работает в этом скрипте? И, возможно, измените тег Windows на bash или аналогичный. - person rojo; 11.04.2013
comment
Спасибо за помощь Рохо. Одна проблема влечет за собой другую :) - person nkman; 11.04.2013