重新启动shell脚本而不在Linux中创建新进程

时间:2014-04-17 17:22:36

标签: shell loops process single-instance

我有一个我执行的shell文件,最后,我可以按 ENTER 再次运行它。问题是,每次按 ENTER 时,都会创建一个新进程,在20或30轮之后,我会得到30个PID,最终会破坏我的Linux。所以,我的问题是:如何让脚本始终在同一个进程中运行,而不是每次按 ENTER 时都创建一个新脚本?

代码:

#!/bin/bash

echo "Doing my stuff here!"

# Show message
read -sp "Press ENTER to re-start"
# Clear screen
reset
# Re-execute the script
./run_this.sh

exec $SHELL

1 个答案:

答案 0 :(得分:1)

您需要exec脚本本身,如此

#!/bin/bash

echo "Doing my stuff here!"

# Show message
read -sp "Press ENTER to re-start"
# Clear screen
reset
# Re-execute the script
exec bash ./run_this.sh

exec不适用于shell脚本,因此您需要使用execute bash代替脚本作为参数。

也就是说,脚本循环是一种更好的方法。

while :; do
  echo "Doing my stuff here!"

  # Show message
  read -sp "Press ENTER to re-start"
  # Clear screen
  reset
done