在 Windows 启动时自动启动 Cygwin 并运行 cygwin 命令

在 Windows 启动时自动启动 Cygwin 并运行 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 合并为一个可以在 Windows 启动时运行的 bat 文件?

答案1

您可以创建一个在启动时运行的新 .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 进行更改,但每次启动 shell 时命令都会运行。

答案2

我尝试让我的 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 

答案3

我现在有这个:

@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......

答案4

我使用了这个方法:

  1. 在 Windows 7 上,打开任务计划程序(控制面板 -> 管理工具 -> 任务计划程序)
  2. 在右侧“创建任务...”
  3. 在“程序/脚本”中的“操作”中:<letter>:\<path_to_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"用引号引起来)

相关内容