python调用shell脚本

os.system(command) 返回command命令的退出状态。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

os.popen(command,mode) 返回command命令的执行结果。返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r’)。如果mode为’r’,可以使用此函数的返回值调用read()来获取command命令的执行结果。如a=os.popen(cmd).read()。还可以使用 a.rstrip() 进行去除换行符“\n”。

commands.getstatusoutput(command) 返回command命令的执行状态和执行结果,返回的是一个元组。该方法其实也是对popen的封装。

演示1:

import os
line=os.popen('date -d -5day +"%Y%m%d"','r')
print line.read().rstrip()  #调用read()方法获取结果,调用rstrip()方法去除换行符

执行结果如下

[root@bear ~]# python 9.py
20130306  #如果不调用rstrip()方法,后面会多出一行空行

继续阅读

配置RedHat yum源

由于RedHat与CentOS同根同源的特性,因此,它俩的yum源可以共用。只是在使用的时候,要注意版本号,比如RedHat5必须使用CentOS5的源,RedHat6必须使用CentOS6的源。

一,导入key文件(可省略)
Key文件用于检验yum下载回来的软件有无问题,类似于Windows系统里的md5验证。这一步不是必须的步骤。

Redhat5执行 
$ rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

Redhat6执行
$ rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

$ rpm -qa | grep gpg-pubkey*    #检查本机安装的key
$ rpm -e gpg-pubkey-e8562897-459f07a4    #卸载key

二,配置RedHat(CentOS)的yum源
在/etc/yum.repos.d/目录下新建一个.repo的文件,把yum源的地址写进去即可。

RedHat 5的yum源:

$ vi /etc/yum.repos.d/163.repo    #如果没有这个文件,新建一个
[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=0

[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
enabled=1
gpgcheck=0

[addons]
name=CentOS-$releasever - Addons - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
enabled=1
gpgcheck=0

[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
enabled=1
gpgcheck=0

RedHat 6的yum源:

$ vi /etc/yum.repos.d/163.repo    #如果没有这个文件,新建一个
[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=0

[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
enabled=1
gpgcheck=0

[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
enabled=1
gpgcheck=0
$ yum clean all
$ yum makecache    #生成缓存

如果机器无法联网,在redehat的安装光盘里预置了很多软件和依赖包,也可以直接把将本地光盘设置为yum源

Python压缩和解压缩文件(zip/unzip)

1,单个文件压缩成zip文件

#!/usr/bin/python
import zipfile
f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)
f.write('1.py')
f.write('/root/install.log')
f.close()

仔细观察压缩以后的archive.zip,里面有一个1.py和一个root的目录,root目录下有一个install.log
ZIP_DEFLATED是压缩标志,如果使用它需要编译了zlib模块,如果仅仅是打包而不压缩的话,可以改为zipfile.ZIP_STORED 继续阅读

Linux修改日期时间

1.修改时区为东八区
执行代码:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.修改日期,如修改为2013年4月13日
执行代码:date -s 04/13/2013

3.修改时间。如修改为17:30
执行代码:date -s 17:30:00

然后将当前时间和日期写入BIOS,避免重启后失效
执行代码:hwclock -w

==========================================

2013.04.04补充:
今天发现自己的一个VPS,安装的是Centos系统,其时间无法用上面的命令修改,后经过百度解决了问题,现整理一下思路:

检查本机是否安装了 nptd 服务(可以不开机启动),如果没有,则 yum install -y ntp

检查 /etc/ntp.conf 里面的时间同步服务器是否有问题(一般是没有问题的)。

执行 ntpd -gq && hwclock -w 同步时间并写入BIOS
(g选项允许调整15分钟以上,q选项是在同步成功后退出)
发现仍然无效,时间仍然相差了近20分钟

编辑 /etc/sysctl.conf 文件,添加一行 xen.independent_wallclock = 1,然后执行 sysctl -p 命令重新加载内核配置

再一次执行 ntpd -gq && hwclock -w 重新同步时间,然后再使用 date 命令,发现时间正常了。

原因分析:这是 Xen 虚拟化技术导致的,Xen 虚拟机默认不允许不同的虚拟机使用不同的系统时间,因此所有虚拟机的系统时间都会同宿主机的系统时间严格同步,用 date 命令修改虚拟机系统时间时虽然提示成功但其实系统时间还是没变,因此只好修改内核配置文件了。

==========================================

2017.12.12补充:Ubuntu 16.04 VPS更新系统时间的方法,跟上面的命令大同小异

$ sudo apt-get install ntp

$ sudo dpkg-reconfigure tzdata  #选择Asia–Hong Kong即可

$ sudo ntpd -gq    #同步NTP时间

$ date         #查看系统时间
Fri Dec  8 18:49:11 HKT 2017

$ hwclock -r   #查看hardware时间
Fri 08 Dec 2017 08:51:05 PM HKT  .429333 seconds

$ sudo hwclock -w --systohc   #set the hardware clock from the current system time

$ hwclock -r   #再次查看hardware时间
Fri 08 Dec 2017 06:49:22 PM HKT  .953891 seconds 这应该是12小时制,所以显示06:49是正常的

$ date
Fri Dec  8 18:49:32 HKT 2017

python中os和os.path模块

python中os.path模块用法

其它函数:
os.path.isabs() 指定路径是否为绝对路径
os.path.isdir() 指定路径是否存在且为一个目录
os.path.isfile() 指定路径是否存在且为一个文件
os.path.islink() 指定路径是否存在且为一个符号链接
os.path.ismount() 指定路径是否存在且为一个挂载点 ???
os.path.samefile() 两个路径名是否指向同一个文件
os.path.exists() 检验路径是否真实存在
继续阅读

512M VPS上Apache性能和内存优化

最近廉价的VPS有越来越流行的趋势,但是很多廉价的VPS很多只有512M,甚至更少的内存,而Apache和MySQL这些建站必备的软件,又偏偏都是内存消耗大户,所以如何优化本来就不多的内存空间,就显得额外重要了。

注:本文是抓抓自己的经验之谈,没有什么权威性,欢迎理性的讨论和评价,拒绝出现诸如Nginx比Apache牛X很多之类的口水仗,谢谢。

虽然抓抓最喜欢和最熟悉的Linux发行版是Gentoo,但是通常在使用VPS时,我还是会安装主流的CentOS 5 32Bit版本。选择CentOS是因为CentOS是从Redhat演变而来,所以对大多数服务器软件的兼容性还算不错,比如Kloxo就可以在CentOS下面进行简易的一键安装,等等。而32Bit是因为可以避免使用64Bit的发行版而造成的诸多稀奇古怪的问题,相当稳定而且性能几乎没有什么差别,并且因为内存不超过4G而无需用到64Bit的寻址。

好了,言归正传。对于低端的VPS来说,因为内存本来就不是非常充足,所以如果你对Linux服务器平台的架设非常熟悉的话,完全可以不用什么控制面板;如果是一个初学者,出于方便的考虑,可以安装轻型的Kloxo控制面板,功能强大,内存占用少(大约4M~8M),除了功能排版有些混乱之外,其他该有的功能都有,不该有的功能也有,非常实用。

在优化Apache/MySQL之前,首先可以关掉一些不必要的后台守护进程,比如ClamAV(一个杀毒软件),你可以运行chkconfig –list查看哪些后台守护进程是不必要的,当然很多东西取决于你的具体应用。比如如果你不是经常登陆Kloxo,可以把Kloxo关闭;如果不发邮件,可以关闭QMail,等等。如果碰到一些自己不熟悉的进程,千万别忙着下手,先去Google一下,以免出现其他预料之外的问题。关闭自动启动可以使用chkconfig 守护进程名 off,但是内存中已经运行的守护进程不会被关闭,需要运行service 守护进程名 stop进行关闭。 继续阅读

Page 30 of 148« First...1020...282930313233...405060...Last »