我遇到了一个shell脚本,它打算在Redhat 6服务器上每隔30分钟在cron上运行一次.shell脚本基本上只是一个运行python脚本的命令.
服务器上的本机版本python是2.6.6,但是这个特定脚本所需的python版本是python 2.7+.我可以使用"scl"命令在命令行上轻松运行它(此示例包含用于显示版本更改的python -V命令):
$ python -V
Python 2.6.6
$ scl enable python27 bash
$ python -V
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)
此时我可以在命令行上运行python 2.7.3脚本没问题.
这是障碍.
当您发出scl enable python27 bash命令时,它会启动一个新的bash shell会话,该会话(再次)适用于交互式命令行工作.但是当在shell脚本中执行此操作时,只要它运行bash命令,脚本就会因新会话而退出.
这是失败的shell脚本:
#!/bin/bash
cd /var/www/python/scripts/
scl enable python27 bash
python runAllUpserts.py >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
它只是在它到达第4行时就会停止,因为"bash"将它从脚本中弹出并进入一个新的bash shell.所以它永远不会看到我需要它运行的实际python命令.
另外,如果每30分钟运行一次,这将每次添加一个新的bash,这是另一个问题.
由于几个原因,我不愿意立即将服务器上的本机python版本更新为2.7.3.Redhat yum repos还没有python 2.7.3,手动安装将在yum更新系统之外.根据我的理解,yum本身运行在python 2.6.x上.
这是我找到使用scl的方法的地方
有没有办法永久启用RedHat的自定义软件集合?
我已经安装了一个scl来在RHEL6中提供python27,并且不希望每次都必须启用自定义scl.
任何人都有运气从红帽软件收藏中使用rh-php56吗?
我看到有关如何在CLI中启用较新版本的php的文档...但不是为了让Apache使用通过rh-php56软件包安装的新版PHP.
(我应该澄清 - 这是RHEL 7.x盒子)
我有这个 Vagrantfile。在这里,我将所有 VM 的内存定义为 2048。但是我希望我的傀儡师有 4096 和代理有 2048。如何做到这一点?
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
config.vm.define "puppetmaster" do |pm|
pm.vm.box = "centos/7"
pm.vm.network "private_network", ip: "192.168.33.10"
pm.vm.hostname = "puppetmaster"
end
config.vm.define "puppet-agent-centos" do |pac|
pac.vm.box = "centos/7"
pac.vm.network "private_network", ip: "192.168.33.11"
pac.vm.hostname = "centos-agent"
end
config.vm.define "puppet-agent-ubuntu" do |pau|
pau.vm.box = "ubuntu/xenial64"
pau.vm.network "private_network", ip: "192.168.33.12"
pau.vm.hostname = "ubuntu-agent"
end
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
我遵循了软件集合快速入门,现在我已经安装了 Python 3.5。如何使它始终在我的中启用~/.bashrc,以便我不必手动启用它scl enable rh-python35 bash?
我目前正在尝试在Centos 6.6机器上构建一个Ruby应用程序.通过软件集合安装了不同的Ruby堆栈.请注意,我的机器上没有root,我的权限有限,特别是它们不包括软件包安装.
本机扩展不构建.它似乎ruby-devel缺失了,但管理员告诉我它已正确安装两个堆栈:
dnf install rh-ruby22-ruby-devel.x86_64 ruby193-ruby-devel.x86_64 -y
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
bob@server ~> scl enable rh-ruby22 bash
bash-4.1$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux-gnu]
bash-4.1$ gem install json Building native extensions. This could take a while... ERROR: Error installing json:
ERROR: Failed to build gem native extension.
/opt/rh/rh-ruby22/root/usr/bin/ruby -r ./siteconf20150625-17536-saskmd.rb extconf.rb mkmf.rb can't find header files for ruby at /opt/rh/rh-ruby22/root/usr/share/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in ~/.gem/ruby/gems/json-1.8.3 for inspection. Results logged to ~/.gem/ruby/extensions/x86_64-linux/json-1.8.3/gem_make.out …Run Code Online (Sandbox Code Playgroud)