gpt4 book ai didi

mysql - pi 上的一次性启动脚本

转载 作者:行者123 更新时间:2023-11-29 07:17:27 24 4
gpt4 key购买 nike

我在 Git 中有一些软件(主要是 python、.sh 和 cron 等),我在 Pi 启动期间将其拉下来,以确保我始终运行最新的代码。我是 Unix 和 Git 的新手。我有很多 Pi,所以我正在有效地尝试自动化分发,并在每次启动时保持它们都是最新的。

我涉及到一个 MySQL 数据库,并且刚刚添加了一些新表。

我现在想做的是下拉一个脚本文件,该文件将创建一个表并设置一些默认值,但我不想每次启动时都这样做,否则它可能会将数据值设置回每次启动时的默认值...不好。

到目前为止,我得到的是一个在重新启动时通过 crontab 运行的 .sh 文件。该文件执行 Git 拉取,然后移动文件并整理内容。

我计划做的是将以下命令添加到我的 boot .sh 文件中:

sudo MySQL --batch -h localhost -u root --password=PASSWORD -D databasename < sqlscript > outfile.log

sqlscript 文件将包含CREATE TABLE 命令、UPDATE 等。

但是我不知道如何只执行一次?

考虑的选项:

  • 我可以在运行 sqlscript 后将其删除,但每次启动时都会从 .sh 文件中收到错误。

  • .sh 文件运行一次后,我可以将其替换为不带 MYSQL 命令的文件...但是,如果 Pi 落后于版本并在升级中跳转多个版本,我就会错过中间 .sh 文件,其中 SQL 表为

  • 我可以通过在各处添加版本号来完成一些非常复杂的事情,但目前这工作量太大了。

  • 我也许可以通过从 TABLES 表中进行选择来检查该表是否不存在,如果它确实跳过脚本,如果不执行它?目前这可能是前进的方向,任何人都有一个示例脚本来检查这一点...我以前没有在 shell 脚本中做过 if 语句。

我怀疑这之前已经做过很多次了,所以欢迎任何建议。

最佳答案

您可以创建一个标志文件,例如

/root/run-database-init

它不必包含任何内容,只需存在即可,因为您将在初始化脚本中测试它是否存在,然后将其删除:

if [ -f /root/run-database-init ]; then
# do stuff with mysql...
rm /root/run-database-init
fi

关于mysql - pi 上的一次性启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com