导航:首页 > 操作系统 > linuxpython系统管理

linuxpython系统管理

发布时间:2023-08-01 14:29:24

python linux

Python与Linux有着密切的关系。Linux是一个自由软件团或野和开放源码的类Unix操作系统,Python是一种高级编程语言团孙。它们都是开源的,并且可以免费使用。
Python在Linux系统中得到了广泛应用,特塌喊别是在系统管理、网络编程、Web开发、科学计算、数据分析等领域。Linux作为一种强大的服务器操作系统,Python也因其简洁、易读、易学以及丰富的库而成为了Linux服务器端开发的重要工具。同时,Python内置了许多Linux系统操作的模块和工具,如os和subprocess模块,使得Python在与Linux交互和管理方面表现得非常出色。
此外,Linux和Python社区之间也有很多的合作和交流,如通过Python实现Linux桌面环境(如Ubuntu Unity桌面)和Linux软件包管理器(如apt-get)等。因此,学习Python也可以帮助人们更好地理解和使用Linux操作系统。

⑵ 如何在linux系统中安装python

linux系统中安装python包括以下滚键罩三个步骤:

⑶ 如何使用Python动态控制Linux系统的内存占用百分比

如何使用Python动态控制Linux系统的内存占用百分比?

近期有网上朋友寻求帮助:如何通过脚本动态控制Linux系统的内存占用百分比?经过一番网络+编写调试,终于初步完成了动态控制Linux系统内存占用百分比。现写出来以帮助更多的朋友。
1 前言
根据需求是动态控制Linux系统内存占用百分比,比如当前内存占用30%,如果设置内存占用为70%,则需要申请内存使达到占用70%;如果再降低到40%,则需要释放部分申请的内存。其实脚本的本质是内存动态申请与释放。
注意:因为Python脚本运行之前内存有一定占用,故设定内存占用不能低于该百分比。
2 内存动态申请
通过查询资料,使用Python动态申请内存块,可以使用ctypes包中的函数,导入包及代码如下所示:
>>> from ctypes import *
>>> mem=create_string_buffer(1024)
说明:内存申请使用create_string_buffer()函数,上面申请了1024字节的内存块。
下面演示申请100MB内存前后变化
申请前如下图所示:

使用代码如下:
>>>mem=create_string_buffer(104857600)
申请后如下图所示:

从上述两幅图中可以看出,申请内存前内存占用295MB,申请后内存占用397MB,增加了约100MB内存占用。
3 内存动态释放
由于Python对内存是有垃圾回收机制的,采用对象引用计数方式。当对象的引用计数为0时,启动垃圾回收GC。此处内存动态释放就是使用该原理。
代码如下:
>>> mem=None
释放后内存占用如下图所示:

内存占用由397MB降低到297MB,释放了100MB内存占用。
说明:将None赋值给对象mem后,mem对象的引用计数即为0,此时垃圾回收启动,释放mem对象占用的内存。
4 系统总内存、占用内存检测
由于需要设定内存占用百分比,故需要获取系统总物理内存和占用内存。本文使用的方法是读取系统文件“/proc/meminfo”,从中解析出总内存大小以及当前内存占用大小等内存相关的信息。该文件内容格式如下图所示:

代码片段如下所示:
f = open("/proc/meminfo")
lines = f.readlines()
f.close()
for line in lines:
if len(line)< 2:continue
name = line.split(':')[0]
var = line.split(':')[1].split()[0]
mem[name]= long(var)* 1024.0
mem['MemUsed']= mem['MemTotal']- mem['MemFree']
说明:按行读取meminfo文件内容,创建字典对象mem,将meminfo文件第一列设置为mem对象的键值,将meminfo文件第二列数字设置为mem对象的值。
5 获取用户输入百分比
通过读取键盘输入字符串,然后转换为数字实现接收用户输入的百分比,代码如下所示:
input_str=raw_input("Input UsedMemory`s Rate or q to exit:")
rate=float(input_str)
注意:此处键盘输入的都是字符串,需要进行字符串转换为数字,使用float()或long()函数进行转换。
6 动态设置内存占用百分比测试
测试使用两个Python脚本文件,分别是test.py和mem_rate.py,其功能分别是查看当前内存占用和动态设定内存占用百分比。如下图所示:

注意:上述两个文件需要使用“chmod +x *.py”修改为可执行属性。
6.1 查看当前内存占用
查看当前内存占用百分比,使用上述test.py文件,运行命令为“./test.py”,运行结果如下图所示:

当前使用内存为320MB,占用百分比为17%。
6.2 动态设置内存占用百分比
动态设置内存占用百分比使用上述mem_rate.py脚本,注意该脚本文件第一行代码为“#!/usr/bin/python2.6”,表示该脚本使用python2.6程序运行。该行需要修改为待运行Linux系统中Python实际的安装程序路径。
动态内存百分比设置界面如下图所示:

处于待输入状态。另外显示了当前内存占用(321MB),总内存大小(1869MB)以及内存占用百分比(17%)。
如果此时设置内存占用百分比为80%,则脚本会每次申请10MB空间,直至内存占用接近或等于80%为止。如下图所示:

内存申请过程如下图所示:

内存申请过程中占用百分比变化为:35%,45%,56%,70%,…
mem_rate.py运行过程如下图所示:

内存申请过程中占用变化为:1461MB,1471MB,1481MB,1491MB。
此时如果内存占用百分比设置为20%,则需要释放一部分内存。
test.py脚本运行过程如下图所示:
由于释放内存运行较快,抓取到最后结果

内存占用为20%。
mem_rate.py脚本运行过程如下图所示:

内存释放过程中内存占用为:413MB,403MB,393MB,383MB,最后内存占用稳定在20%,383MB。
输入“q”或“Q”退出内存占用百分比设定过程,如下图所示:

此时内存占用如下图所示:

内存占用恢复到运行mem_rate.py脚本之前状态,17%,321MB。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
附:完整Python脚本代码
test.py
------------------------------------------------------------------------------------------------
#!/usr/bin/python2.6
def memory_stat():
mem = {}
f = open("/proc/meminfo")
lines = f.readlines()
f.close()
for line in lines:
if len(line)< 2:continue
name = line.split(':')[0]
var = line.split(':')[1].split()[0]
mem[name]= long(var)* 1024.0
mem['MemUsed']= mem['MemTotal']- mem['MemFree']
# - mem['Buffers']- mem['Cached']
return mem

mem=memory_stat()
print("Used(MB):%d"%(long(mem['MemUsed'])/1024/1024))
print("Rate:%d%%"%(100*long(mem['MemUsed'])/float(mem['MemTotal'])))

§§§§§§§§§§§§§§§§§§§§§§§§§§
mem_rate.py
---------------------------------------------------
#!/usr/bin/python2.6

from ctypes import *

# Get Memory Info(Total, Used... Byte)
def get_memory_stat():
mem = {}
f = open("/proc/meminfo")
lines = f.readlines()
f.close()
for line in lines:
if len(line)< 2:continue
name = line.split(':')[0]
var = line.split(':')[1].split()[0]
mem[name]= long(var)* 1024.0
mem['MemUsed']= mem['MemTotal']- mem['MemFree']
# Return MemroyInfo Object
return mem

# Get Simple Memory Info
def get_memory_info(mem):
# Byte -> MB
n=1024* 1024
used=float(mem['MemUsed'])/ n
total=float(mem['MemTotal'])/ n
rate=used/total* 100
smp={'used':used,'total':total,'rate':rate}
return smp

# Display Current Memory Info
def print_memory_info(mem):
# Get SimpleMemory Info
smp=get_memory_info(mem)
print("Used(MB):%d\tTotal(MB):%d\tUsedRate:%d%%"%(smp['used'], smp['total'], smp['rate']))

# Get Rate Of Memory Used To Be Setted(Integer Formate)
def input_memory_used_rate(org_rate):
# Byte -> MB
n=1024* 1024
while(True):
mem=get_memory_stat()
print_memory_info(mem)

input_str=raw_input("Input UsedMemory`s Rate or q to exit:")
if(len(input_str)== 0):
continue
if("q"== input_str):
info={'rate':0,'used':mem['MemUsed']/ n}
return info
if("Q"== input_str):
info={'rate':0,'used':mem['MemUsed']/ n}
return info
try:
rate=float(input_str)
if((rate>=org_rate)and (rate<=95)):
info={'rate':rate,'used':mem['MemUsed']/ n}
return info
else:
print("Please inputa valid number(%d%%~95%%)."%(org_rate))
except:
print("Please inputa valid number(%d%%~95%%)."%(org_rate))

# Set Rate Of Memory Used
def set_memory_used_rate(new_rate, total, pre_used,list):
if(new_rate==0):
return None
dest_mem=total* new_rate /100.0
# 10MB
mb10=10485760
n_chg=10
# Free Memory OrAllocate Memory ?
is_new=dest_mem>pre_used
cur_used=pre_used
while(True):
# To Calc FreeMemory Or Allocate Memory ?
need_new=dest_mem-n_chg>=pre_used
need_del=dest_mem+n_chg<=pre_used

# Need To AllocateMemory
if(is_new):
if(need_new):
p=create_string_buffer(mb10)
list.append(p)
dest_mem=dest_mem-n_chg
cur_used=cur_used+n_chg
else:
return"end"
# Need To FreeMemory
else:
idx=len(list)-1
if(need_deland (idx>=0)):
p=list[idx]
del list[idx]
p=None
dest_mem=dest_mem+n_chg
cur_used=cur_used-n_chg
else:
return"end"
print("****** MemoryUsed(MB):%d"%(cur_used))

# Entry Of Program

# List Of Memory Object, 10MB Of One Object
list=[]
# Get Current Memory Info
mem=get_memory_stat()
# Get Simple Memory Info
smp=get_memory_info(mem)
org_rate=smp['rate']
total=smp['total']

while(True):
# Get Rate OfMemory To Be Used
info=input_memory_used_rate(org_rate)
new_rate=float(info['rate'])
pre_used=float(info['used'])
# Set Rate OfMemory To Be Used
rtn=set_memory_used_rate(new_rate, total, pre_used, list)
if(not rtn):
print("bye!")
exit()

⑷ 《PythonUNIX和Linux系统管理指南》pdf下载在线阅读,求百度网盘云资源

《Python UNIX和Linux系统管理指南》(基弗特 (Gift, Noab))电子书网盘下载免费在线阅读

资源链接:

链接: https://pan..com/s/1o7aYwEqisD0WIASv8Il3lw

提取码: 2e41

书名:Python UNIX和Linux系统管理指南

作者:基弗特 (Gift, Noab)

译者:杨明华

豆瓣评分:7.5

出版社:机械工业出版社

出版年份:2009-9

页数:417

内容简介:

《Python UNIX和Linux系统管理指南》介绍了Python语言如何为管理uNIx和Linux服务器提供各种更加有效的任务处理方式。书中各章都提出了具体的管理问题,如并发或数据备份,然后通过Python示例提供了解决方案。通过《Python UNIX和Linux系统管理指南》,读者可以学习如何用Python开发自己的一套命令行工具来解决诸多问题。

作者建立了一个免费下载的Ubuntu虚拟机,其中包含《Python UNIX和Linux系统管理指南》的源代码和运行实例,也包括SNMP、IPython、SQLAlchemy及其他工具。通过《Python UNIX和Linux系统管理指南》,你可以发现Python在如下几个方面的作用:

读取文本文件并提取信息。

使用多线程和fork选项。

使用网络设备从一个进程获取另一个进程的信息。

创建可点击的、易于交互的GUl工具。

通过交互式SNMP编程实现监控大型主机集群。

掌握IPython shell,作为Bash、Korn或Z—Shell的替换或补充。

将云计算整合到基础设施中,编写Google App引擎的应用程序。

通过定制脚本解决独特数据备份的难题。

使用Djan90、SQLAlchemy和Storm ORM与数据库进行交互。

通过《Python UNIX和Linux系统管理指南》及其补充的虚拟机,你可以了解如何打包并部署Python应用程序和库,以及编写代码在类似的多个UNIXfH Linux平台上运行。

⑸ linux 终端 运行 python

Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来。
打开命令行窗口
打开命令行窗口的快捷键如下:
Ctrl + Alt + t
关闭名命令行窗口
关闭命令行窗口的快捷键如下:
Ctrl + d
进入python环境
在命令行中直接输入python即进入了python的编辑环境。进入环境后最明显的提示是:光标由~$变成>>>。
退出python环境
使用ctrl +d的方式退出python环境。回到命令行环境。
在python环境中输入多行函数
在python环境中,回车是输入结束并执行语句。在输入多行函数的情况下,输入一行后回车则直接运行了某句代码而不是整个函数块。因此,需要能够换行但不结束输入的方法。
在语句的末尾输入英文的;\即可实现换行。
例如:
?

1
2
3

def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1);\
return tf.Variable(initial);\

注意:输入函数块时注意缩进,否者会报出IndentationError: unexpected indent python错误。
non-ascii character xe5 in file解决方法
原因:程序中的编码错误,python默认支持acii模式,但不支持utf8,因此,程序中的中文注释会引发Error。
解决方法:源代码文件第一行添加#coding:utf-8即可避免。
退出python环境
使用ctrl +d的方式退出python环境。回到命令行环境。
在python环境中输入多行函数
在python环境中,回车是输入结束并执行语句。在输入多行函数的情况下,输入一行后回车则直接运行了某句代码而不是整个函数块。因此,需要能够换行但不结束输入的方法。
在语句的末尾输入英文的;\即可实现换行。
例如:
?

1
2
3

def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1);\
return tf.Variable(initial);\

注意:输入函数块时注意缩进,否者会报出IndentationError: unexpected indent python错误。
non-ascii character xe5 in file解决方法
原因:程序中的编码错误,python默认支持acii模式,但不支持utf8,因此,程序中的中文注释会引发Error。
解决方法:源代码文件第一行添加#coding:utf-8即可避免。

阅读全文

与linuxpython系统管理相关的资料

热点内容
如何让软件在多个安卓系统上运行 浏览:573
java判断半角 浏览:880
java判断正负 浏览:320
刷头条程序员的日常 浏览:102
吉林程序员吐槽 浏览:243
单片机温度范围 浏览:419
程序员为什么素质低 浏览:897
可爱的程序员小姐姐 浏览:145
服务器上网站的地址 浏览:798
苹果平板如何找到app资源库 浏览:321
阿里云可以云服务器地址 浏览:249
熊猫绘画app如何导入图片 浏览:555
如何自己编辑手机app 浏览:924
程序员那么可爱带的项链 浏览:532
安卓系统导航mic什么意思 浏览:192
编译sdk如何输出bin文件 浏览:679
如何用html5开发app 浏览:143
怎么隐藏苹果的app 浏览:328
上海積架空气压缩机 浏览:458
51单片机换行 浏览:739