在 Bash 脚本中使用 & 有缺点吗?

Are there downsides of using & inside Bash scripts?

我正在制作一个脚本,应该安装 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 脚本中使用 & 是否有缺点,或者这是不好的做法?

如果,推荐的方法是什么?

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

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

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

但是,我无法评论这是否是一个好的做法。

如果您需要 运行 多个并行进程,我认为除了 & 没有其他选择,看起来您确实需要。

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

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