是否有使用&的缺点在Bash脚本中?

时间:2015-03-13 12:40:00

标签: mysql linux bash mariadb

我正在创建一个应安装MariaDB / MySQL服务器的脚本,然后创建用户等。为此我需要mysqld_safe运行,它没有守护进程模式,所以脚本不会继续。执行mysqld_safe &会使其接缝。

/usr/bin/mysqld_safe > /dev/null 2>&1 &

RET=1
while [[ RET -ne 0 ]]; do
    sleep 5
    mysql -uroot -e "status" > /dev/null 2>&1
    RET=$?
done

...

问题

在bash脚本中使用&是否有缺点或不好做法?

如果推荐的方法是什么?

2 个答案:

答案 0 :(得分:0)

你想要一个否定的答案,但我这样做也是为了提高我在raspberry中的脚本的稳定性。

我还存储了进程的PID,以便我可以在以后的脚本中将其终止。

我使用lockfile,然后检查是否存在' mysql_safe'在运行之前。

但是,我不能评论这是不是一个好习惯。

答案 1 :(得分:0)

如果您需要并行运行多个流程,我认为您没有&的替代方案,而且看起来您确实这样做了。

在没有充分理由的情况下运行多个并行进程会使您暴露于各种竞争条件,因此应该避免,因此一般建议不要在脚本中不假思索地使用&

我希望您不会忘记在脚本结束时终止mysqld_safe进程。