通过交互性来限制 bash 脚本的执行时间?

通过交互性来限制 bash 脚本的执行时间?

我通常会在部署系统时记录步骤,并且经常会在初始测试期间复制服务器。例如,如果我在测试时有点太过纠结,我宁愿在成功后重新测试服务器。这样我就可以很容易地回到那个点,而不用去执行之前不必要的额外步骤。如果我觉得周围有不必要的依赖项,我就睡不好觉。

我还没有遇到限制,但是 BASH 是否会在某个点放弃等待我完成。例如,如果我创建一个deploy.sh包含一堆命令(包括使用 nano 编辑文件)的脚本,bash 是否会无休止地等待我编辑文件并保存更改,然后继续执行脚本?比如我可以在脚本中间停下来,睡一觉再回来继续?

这相当于获取 bash 历史记录并将其标记以供以后使用。并非真正要取代带有条件的实际脚本。

示例 deploy.sh

# Fix hosts file
sudo nano /etc/hosts

# Update System
sudo apt-get update ; sudo apt-get -y dist-upgrade

# Install Java from repo
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java8-installer

# Test JAVA
java -version

# Install build-essential, git
sudo apt-get -y install build-essential git

# Generate SSH key for github
ssh-keygen -t rsa -b 4096 -C "[email protected]"

# Check on ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

# Add SSH to github keys
cat ~/.ssh/id_rsa.pub

# Verify SSH access to github
ssh -T [email protected]

# Elastic Search Install
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list
sudo apt-get update
sudo apt-get -y install elasticsearch

# Edit elasticsearch config (adjust cluster name, node name, and data path)
sudo nano /etc/elasticsearch/elasticsearch.yml

# Change paths ownership to elasticsearch
sudo chown -R elasticsearch:elasticsearch /mnt/data/elasticsearch

# Restart elasticsearch
sudo service elasticsearch restart

# Add elasticsearch to boot
sudo update-rc.d elasticsearch defaults 95 10

# Install Node 5.x
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
sudo apt-get install -y nodejs

答案1

nano没有超时,到目前为止唯一的超时是设置sshsftp尝试登录。因此,当您登录时,您不会直接停止,而是在必须输入登录凭据的地方,这样就保存了。

相关内容