除非您有一个非常具体(和改变)的要求,具有绝对的以域为中心的需求,当您的应用程序联机时,利用各种专用工具,自动化方法或脚本来帮助使你实际的开发工作更快- 好极了!...能够以有逻辑的组织编写这些任务(本地和远程)的脚本,最重要的,在你意识到浪费了多少时间不断重复相同的步骤,在此过程中呈现一切容易出错的情况之后,编程方式很快被证明是非常有价值的。...运行以下两个命令来安装RVM并为Ruby创建系统环境: curl -L get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh 最后,为了在我们的系统上完成...Ruby,让我们让RVM下载并安装Ruby版本2.1.0: rvm reload rvm install 2.1.0 为了验证Ruby确实已安装和设置,请运行以下命令: ruby --version...要向CVM添加新组,请运行以下命令: groupadd deployers 现在,我们可以继续将用户添加到deployers具有特权访问权限的组中。
警告:禁用root登录后,请确保您可以作为部署用户SSH连接到服务器,并在关闭您打开的root SSH会话以进行这些更改之前为该用户使用sudo。 本教程中的所有命令都应以deploy用户身份运行。...我们只是克隆以检查我们的部署密钥是否正常工作,每次推送新更改时我们都不需要克隆或拉取我们的存储库。我们将让Capistrano为我们处理所有这些。您现在可以删除此克隆目录。 在本地计算机上打开终端。...,在Rails应用程序中为Nginx和Capistrano创建配置文件。...输入以下命令来捆绑您的Rails应用程序: $ bundle 捆绑后,运行以下命令配置Capistrano: $ cap install 这将创建: Capfile 在您的Rails应用程序的根目录中...Rails应用程序,Puma作为你的Web服务器,以及配置了基本设置的Nginx和Capistrano。
Shell的分类 Linux/Unix提供了很多种Shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash; 想知道你的系统有几种...shell,可以通过以下命令查看: cat /etc/shells 显示如下: /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh bash...zsh介绍 zsh 是一款功能强大的 shell 软件,它可以兼容 bash,并且提供了很多高效的改进。...# User configuration source ~/.bash_profile 指定配置的环境变量文件,之后运行: source .zshrc 主题设置 在.zshrc文件中找到主题的配置项...或者我们将主题设置为随机(‘random’),每次打开命令行窗口,都会随机在默认主题中选择一个,如果遇到你喜欢的主题,可以输入命令查看其名字: $ echo $ZSH_THEME 插件开启 Oh My
问题 在 Linux 上,我如何将一个目录添加到 $PATH 中,以便在不同的会话中持续有效? 背景: 我正尝试将一个目录添加到我的路径中,以便它将始终在我的 Linux PATH 中。...我该如何做才能使这个设置永久生效? 回答 有多种方法可以实现。实际的解决办法取决于用户意图。 环境变量值通常存储在一个赋值列表中或是在系统或用户会话开始时运行的 shell 脚本中。...这是为登录到 X Window 系统的每个用户运行的。对于每个用户都有效的 PATH 条目,如 /usr/local/something/bin,这是一个很好的选择。...如果你主要使用一个特定的 shell(如 bash、zsh 等),那么你可以在这个文件中为该 shell 进行个性化设置,而不影响其他 shell。...对于那些只需要在非登录 shell 中生效的设置,使用 ~/.shell>rc 可以避免在全局配置文件中添加额外的条件判断,从而使配置更加简洁。
一来,目前线上运行的应用必须以容器方式进行交付运行,我们使用容器的方式注册应用,对外提供服务; 二来,个人倾向并坚持使用容器方案,可以方便后续快速水平扩展;以及最重要的一点,“代码和命令皆有记录”,方便离线的问题排查...\ nodejs \ npm \ sqlite-libs \ tzdata; # Change shell...to bash SHELL ["/bin/bash", "-c"] # Install needed development dependencies....,镜像配置文件中包含 2.3.0 的 Path 也需要更新为 2.4.0。...虽然我们在容器中首次进行安装,不需要清理缓存,但是考虑到官方镜像潜在的 tricks,还是选择设置安装时不从缓存中读取内容稳妥些。
一来,目前线上运行的应用必须以容器方式进行交付运行,我们使用容器的方式注册应用,对外提供服务; 二来,个人倾向并坚持使用容器方案,可以方便后续快速水平扩展;以及最重要的一点,“代码和命令皆有记录”,方便离线的问题排查...\ nodejs \ npm \ sqlite-libs \ tzdata; # Change shell to bash SHELL...["/bin/bash", "-c"] # Install needed development dependencies....,镜像配置文件中包含 2.3.0 的 Path 也需要更新为 2.4.0。...虽然我们在容器中首次进行安装,不需要清理缓存,但是考虑到官方镜像潜在的 tricks,还是选择设置安装时不从缓存中读取内容稳妥些。
当然,Capistrano并没有真正死亡——即使我正在使用过去式来描述它。开源工具从未真正死亡,它们只是变得不受欢迎(并可能被储存在阁楼中)。...使用这些定义,Capistrano可以针对特定计算机执行操作。 任务和角色 Capistrano中的基本命令是任务。这些是在部署的不同阶段执行的。..."先运行这个,然后运行那个"的模型并不能总是很好地预测部署后您的系统会是什么样子。像Chef这样的工具更擅长处理蔓延的系统,因为它们从模型开始,然后说“使这个设置为真”。...它还允许笔记本电脑和云服务器以相似的方式对待——仅仅作为挂载容器的地方。 最后,Kubernetes在不必担心速度变慢和超时的情况下处理了集群。...拥有一个完全透明的基础设施,以及运行所有方面的所需服务和确切配置的能力,使DevOps团队的生活更加轻松。与更改已经运行的服务不同,可以创建新容器并终止旧容器。
另外,当在一个 shell 中启动另一个 shell 的时候, SHELL 变量的值不会发生改变,而 BASH 变量的值会发生改变,指向新 shell 的路径。...该变量只有在 bash 开启 extdebug 选项的情况下才会设置 BASH_ARGV 该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数列表。...脚本从运行以来经过的时间(单位为秒)。...SHLVL Shell 嵌套的层次,第一个 shell 的 $SHLVL 为 1, 每启动一个 bash 实例就会 + 1 EMACS 判断 bash 是否在 EMACS 中执行,这种情况下 bash...IFS 内部字段分隔符,影响 read 命令如何将行进行分成词 OSIXLY_CORRECT 设定让 bash 进入 posix mode TMOUT 用于设置 Shell 的过期时间,TMOUT 不为
jenv 是一个命令行工具,可以在 Linux/OS X 平台使用,可以管理多个版本 JDK,方便在多个版本 JDK 之间切换,另外其还可以设置 JAVA_HOME 环境变量。...配置文件中。...若使用 Shell 为 bash: echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv...init -)"' >> ~/.bash_profile source ~/.bash_profile 若使用 Shell 为 zsh echo 'export PATH="$HOME/.jenv/bin...jenv shell 9.0 jenv global jenv global 将会设置一个全局默认的 JDK 版本,即使重启 Shell 窗口,该配置也不会改变。
使用 Capistrano 进行自动化部署 最近在折腾这个,弄了好多次都不成功,看了官方文档和很多博客,都没有说清楚,因此,我觉得有必要把它记录下来,以帮助更多像我这样被弄得烦躁的人。...首先是安装,其实 Ubuntu 上面安装 Capistrano 非常简单: gem install capistrano 然后,进入项目目录,运行下面命令生成 Capistrano 的配置文件: cap.../ tasks/ 在 config 中存放的的各个环境的配置文件,而我,就是在配置这个的时候产生的问题。...对于连接 Git 服务器的问题,此时的 Git 服务器是用 Gitlab 搭建的一个项目,可以通过 Web 访问;用上面同样的方法生成两个 Key,公钥在 Gitlab 中的个人设置中(下图)设置,私钥放在远程服务器访问...最后全部配置好了之后,再运行 cap staging deploy 输出一大堆命令,最后显示成功。
/etc/profile : 此文件为系统的环境变量,它为每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d 目录的配置文件中搜集shell 的设置。 ...假设用户使用的是BASH ,那么 2. /etc/bashrc : 在执行完/etc/profile 内容之后,如果用户的SHELL 运行的是bash ,那么接着就会执行此文件。...如何将环境变量永久化?.../etc/profile脚本中,会在PATH变量的最后增加/usr/X11R6/bin目录 在$HOME/.bash_profile中,会在PATH变量的最后增加$HOME/bin目录 以root...sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 以alice用户(普通用户)为例 /usr/kerberos/bin:/usr/bin
/xxx.sh 的形式运行脚本;若没有赋予执行权限,只能以 /bin/bash xxx.sh 的形式运行脚本,非 root 用户还需要加上 sudo 建议在 Shell 脚本的开头处使用 #!...,提升脚本的可配置能力 建议在 Shell 脚本中养成良好的缩进习惯,使脚本内容具有清晰易读的层级结构,有助于避免将直接执行的命令与函数体搞混 建议在 Shell 脚本中为关键命令语句的输出添加回显或将其重定向至日志文件...,方便在脚本运行出现异常时进行排查和调试;回显可以通过 echo -e "\033[2;32m xxxxxxx \033[0m" 命令设置颜色、高亮等特效提升输出效果 建议在 Shell 脚本中使用 >...为 0 时表示执行没有错误 建议在 Shell 脚本中处理文件前判断文件是否存在,并做好异常处理 建议在 Shell 脚本中使用 [[ ]] 代替 [ ] 建议在 Shell 脚本中使用 && 和 ||...,提升脚本运行效率 建议在 Shell 脚本中存在可以同时执行、互不关联的命令时,采用 & 和 wait 方式实现并发,提升脚本运行效率 建议在 Shell 脚本中采用 cat>> filename <
问: 如何验证程序是否存在,以一种要么返回错误并退出,要么继续执行脚本的方式? 这看起来应该很容易,但它一直困扰着我。...许多操作系统的 which 甚至不会设置退出状态,这意味着 if which foo 甚至不会正常工作,并且总是报告 foo 存在,即使它不存在(注意,一些 POSIX shell 似乎对 hash 也这样做..."; return 1;} } 再重开 shell 窗口,即可替代系统原有的 which 命令。...---- 参考: stackoverflow question 592620 man bash 相关阅读: 为什么在可执行文件或脚本名称之前需要..../(点-斜杠),以便在bash中运行它 在shell编程中$(cmd) 和 `cmd` 之间有什么区别
负责向内核翻译以及传达用户/程序指令,相当于操作系统的”外壳”.在Linux中默认shell一般为/bin/bash 2.Shell的使用方式 shell有两种使用方式,一种交互式的,另外一种是非交互式的...非交互式(脚本):需要提前设计,智能化难度大;批量执行,效率高;方便在后台静默运行。 3....[root@centos67-x64 /]# cat /etc/shells /bin/sh //多数UNIX默认的shell /bin/bash //多数Linux默认的shell /sbin.../nologin //非登录的shell /bin/dash 注:在RHEL系统中,/bin/sh实际上是bash的符号链接 4....78:执行历史记录中的第78条命令 -!str:执行最近一次以str开头的历史命令 三、I/O设备与重定向 1.
在过去几年的DevOps的浪潮中,自动化、持续集成这两个概念早已深入人心(互联网技术人)。...2.19 Capistrano Capistrano 是一个开源部署工具,使用Ruby开发。Capistrano 文档具有脚本语言和“理智的,富有表现力的API。”...5、关于环境配置文件:配置文件为自己手动维护,每次都是删除git仓库拉取下来的配置文件,把对应环境的代码文件复制进编译目录进行编译。 脚本代码大概的步骤如下: #!.../bin/bash # 设置时间变量 CTIME=$(date "+%Y-%m-%d-%H-%M") # 项目名称,建议和gitlab仓库名称一致 project= # 本地代码目录(gitlab拉取代码后存放目录.../bin/bash # 设置时间相关变量 CTIME=$(date "+%Y-%m-%d-%H-%M") # 项目名称,建议和gitlab仓库名称一致 project=test # 本地代码目录(gitlab
项目地址:https://github.com/bnb/awesome-hyper 整合 ZSH 通常 Linux 服务器上面默认使用的 SHELL 是 Bash。...其实除了 Bash 之外,还有很多其他的 SHELL 程序,比如:ZSH、CSH、Fish 等等。 这里我们将介绍的 ZSH 是我认为在类 Unix 系统下最优雅的 Shell 程序 。...你还可以通过命令 chsh -s /bin/zsh 将 ZSH 设置为默认的 Shell。 配置主题 Oh-My-ZSH 默认也附带了大量好看的主题,你可以利用它们对终端界面做进一步增强和美化。...现在,你只需打开 Hyper 设置页面文件,从菜单 Edit -> Preferences 进入,然后编辑 shell 和 shellArgs 参数即可。...shell: 'C:\\Windows\\System32\\bash.exe', shellArgs: [], 修改完成后,再次重新打开 Hyper,你会发现默认已经进入了 Bash 终端界面了。
Docker Exec 命令用于在正在运行的 Docker 容器内部执行命令。它允许用户与容器进行交互,从而可以在容器中执行各种操作,如运行 shell 脚本、安装软件包、查看日志等。...注:更多参数可以运行docker exec --help查看Docker Exec 实例演示进入运行中的容器并执行命令docker exec -it my_container bash这个命令将在名为...以非交互模式运行命令docker exec -d my_container python script.py这个命令会在后台模式下以非交互模式运行 script.py Python 脚本。...的值为 value,然后输出该变量的值。...以root身份进入容器docker exec -it -uroot tomcat_muller bash这样的优势是我们可以用root权限在容器内进行操作,不用担心我们的权限不足。
Bash Shell是一种Unix/Linux操作系统中的命令行解释器,它支持多种编程语言,包括C、C++、Java、Perl、Python等。...脚本的内容以换行符分隔,每行都是一个命令。在脚本中可以使用变量、条件语句、循环语句等各种语法结构。 4. 介绍一下Shell脚本的执行方式?...非交互式执行是指将脚本保存为一个文件,然后在终端中直接运行该文件。非交互式执行通常使用 ./filename 的方式来运行脚本。 5. 介绍一下Shell脚本中的变量?...Shell脚本中的变量可以存储任意类型的数据,包括字符串、数字、数组等。变量以字母或下划线开头,后面紧跟着变量名即可定义一个变量。...如何将标准输出和错误输出同时重定向到同一位置?
问: 如何从Bash脚本本身中获得其所在的目录? 我想使用Bash脚本作为另一个应用程序的启动器。我想把工作目录改为Bash脚本所在的目录,以便我可以对该目录下的文件进行操作,像这样: $ ....但是在以相对路径的方式去执行脚本时,获取的目录信息是相对路径,不能满足其他需要获取绝对路径的场景。 如果要获取绝对路径,可以使用如下方法: #!.../usr/bin/env bash script_dir=$(cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) echo...: [$(dirname $(realpath "$0") )]" 参考: stackoverflow question 59895 相关阅读: 在shell编程中$(cmd) 和 `cmd` 之间有什么区别.../(点-斜杠),以便在bash中运行它 shell脚本对编码和行尾符敏感吗
2.Maven Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。...2.Capistrano Capistrano 是一个用来并行的在多台机器上执行相同命令的工具,使用用来安装一整批机器。它最初是被开发用来发布 Rails 应用的。...(二)配置管理 1.Chef Chef 是一个系统集成框架,为整个架构提供配置管理功能。...4.Bash Bash 是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin...系统中,以实现windows的POSIX虚拟接口。