在 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
进程。
我正在制作一个脚本,应该安装 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
进程。