我需要将 Windows 批处理文件转换为 shell 脚本。如何使用 cron 在 Linux 中运行 .exe 文件?

我需要将 Windows 批处理文件转换为 shell 脚本。如何使用 cron 在 Linux 中运行 .exe 文件?

我正在尝试将 Windows 批处理文件转换为 bash shell 脚本。但我无法理解如何转换以下命令。我已经使用 wine 在 Linux 中运行 .exe 文件。还有其他方法可以在 Linux 中运行 .exe 文件吗?

我想在shell脚本中转​​换的批处理代码如下:

echo Deleting any task..
call schtasks.exe /delete /TN "Task_name" /F

echo Creating new task..
call schtasks.exe /create /RU %computerName% \%UserName% /RP %Password% /TN 
"Task_name" /XML  "DATA/Task_name.xml"

答案1

我相信OP想要做的是从shell脚本在Linux上创建计划任务。

确切的任务是什么以及为什么从他们发布的内容中根本不清楚,但通常这可以通过在 shell 脚本中自动化“crontab”来实现。

执行此操作需要一些相对高级的 shell 脚本技术,因此可能不建议 shell 脚本新手使用。

如何做到这一点的一个例子是:

#!/bin/bash
# Create empty temporary file with safe name
TEMPFILE=$(mktemp)

# Put current crontab for user into the temporary file
crontab -l > $TEMPFILE

# Append new command to end of the created file using a shell 'here document'
cat << EOF >> $TEMPFILE
0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
EOF

# Load the new extended file in as the crontab for the user
crontab $TEMPFILE

这只是一个示例,不应该直接复制 - 用它来研究正在演示的每个概念并理解它们。

如果用户还没有 crontab 文件,则可能会出现问题。根据man 5 crontab我系统上的手册页,另一个问题是某些 Linux 版本的crontab -l添加标题行,这意味着crontab -l | crontab -(即尝试导出和重新导入相同的数据)将不断添加额外的标题行。

还存在竞争条件 - 用户的 crontab 可能会被crontab -l行与末尾行之间的另一个进程编辑以重新导入 crontab。但我已经看到与此过程类似的东西在实际环境中成功使用。

有关该行的含义,请参阅和 的0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)文档。我的示例的效果是每天创建一个文件,其中包含系统命令的输出。croncrontab/tmpdf

相关内容