有时我的 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
我使用了这个方法:
- 在 Windows 7 上,打开任务计划程序(控制面板 -> 管理工具 -> 任务计划程序)
- 在右侧“创建任务...”
- 在“程序/脚本”中的“操作”中:<letter>:\<path_to_cygwin>\bin\bash.exe (我有
D:\Apps\cygwin64\bin\bash.exe
) - 在“添加参数(可选)”上:-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"
用引号引起来)