我在Git中有一些软件(主要是python,.sh和cron等),我在启动我的Pi时拉下来确保我总是运行最新的代码。我是Unix和Git的新手。我有很多Pis,所以我有效地尝试自动化分发,并在每次启动时保持最新状态。
我有一个MySQL数据库,我刚刚添加了一些新表。
我现在要做的是下拉一个脚本文件来创建一个表并设置一些默认值,但我不希望每次启动时都这样做,或者它可能会设置数据值每次开机都回到默认状态......没问题。
到目前为止我所获得的是一个在重启时通过crontab运行的.sh文件。这个文件执行Git pull,然后移动文件并对其进行排序。
我计划做的是在我的boot .sh文件中添加以下命令:
sudo MySQL --batch -h localhost -u root --password=PASSWORD -D databasename < sqlscript > outfile.log
sqlscript文件将包含CREATE TABLE
命令,UPDATE
等。
但我能解决的问题是如何只做一次?
考虑的选项:
我可以在运行之后删除sqlscript,但每次启动时我都会从.sh文件中收到错误。
我可以在没有MYSQL命令的情况下运行一次后替换.sh文件...但是如果一个Pi落后于版本并且在升级中跳过几个版本我就会错过在中间.sh文件上,SQL表是
我可以通过在整个地方添加版本号来做一些非常复杂的事情,但现在这工作太多了。
我或许可以通过从TABLES
表中选择来检查表格是否已经存在,如果它确实跳过了脚本,如果没有执行则可以?这可能是前进的方向,任何人都有一个示例脚本来检查这个...我之前没有做过shell脚本中的语句。
我怀疑这已经做了很多次,所以欢迎任何建议。
答案 0 :(得分:0)
你可以创建一个标志文件,比如说
/root/run-database-init
它不必包含任何内容,只是存在,因为您将在init脚本中测试它的存在并在之后删除它:
if [ -f /root/run-database-init ]; then
# do stuff with mysql...
rm /root/run-database-init
fi
答案 1 :(得分:0)
我这样做了:
如果! [-f chkfile];然后
触摸chkfile
MySQL blah blah
否则
echo found chkfile,因此跳过表创建
网络连接
(不确定为什么它没有缩进,但它的2个字符缩进)