Python模块知识6,线上问题排查思路与工具使用

Python模块知识6:OS、SYS模块,pythonos

1、os模块,和系统相关的,比如获取路径、目录、文件夹之类

常用方法:

  • os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径

  • os.rename(‘oldname’,’new’)#重命名文件/目录

  • os.path.abspath(path) #返回path规范化的绝对路径,含文件名的

  • os.path.dirname(path) #获取文件所在的文件夹名称

  • os.chdir(“dirname”) #改变当前脚本的工作目录,相当于shell下的cd

  • os.path.join(path1[,path2[,…]])#将多个路径组合返回,第一个绝对路径之前的参数将被忽略

  • os.curdir #返回当前目录:(’.’)

  • os.pardir #获取当前目录的父目录字符串名(’..’)

  • os.makedirs(‘dir1/dir2’)#可生产多层递归目录

  • os.removedirs(‘dirname1’)#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推

  • os.mkdir(‘dirname’)#生成单级目录,相当于shell中的mkdir dirname

  • os.rmdir(‘dirname’)#删除单级空目录,若目录不为空,则无法删除,报错,相当于shell中的rmdir
    dirname

  • os.listdir(‘dirname’)#列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

  • os.remove()#删除一个文件,

  • os.stat(‘path/filename’)#获取文件/目录信息

  • os.sep 操作系统特定的路径分隔符,win下为”\\”,linux下为”/”

  • os.linesep #当前平台使用的行中支付,win下为”\t\n”,Linux下为”/n”

  • os.pathsep#用于分隔文件路径的字符串

  • os.name #字符串只是当前使用平台,win->’nt’;Linux->’posix’

  • os.system(“bash command”)#运行shell命令,直接显示

  • os.environ#获取系统环境变量

  • os.path.split(path)#将path分割成目录和文件名二元组返回

  • os.path.basename(path)#返回path最后的文件名,如何path以/或\结尾,那么就会返回空值,即os.path.split(path)第二个元素

  • os.path.exists(path) #如果path存在,返回True,如果path不存在,则返回False

  • os.path.isabs(path)#如果path是绝对路径,返回True

  • os.path.isfile(path)#如果path是一个存在的文件,返回True,否则返回False

  • os.path.isdir(path)#如果path是一个存在的目录,则返回True,否则返回False

  • os.path.getatime(path)#返回path所指向的文件或者目录最后存取的时间

用法案例:

案例1:分别获取绝对路径和文件夹

import os
print(os.getcwd())#C:\Users\huhuanhuan\PycharmProjects\study2017
print(os.path.abspath(__file__))#方法1获取文件的绝对路径C:\Users\huhuanhuan\PycharmProjects\study2017\s1.py
print(os.path.abspath("s2.py"))#方法2获取文件的绝对路径C:\Users\huhuanhuan\PycharmProjects\study2017\s2.py
print(os.path.dirname(os.path.abspath(__file__)))#获取文件所在的文件夹C:\Users\huhuanhuan\PycharmProjects\study2017
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#C:\Users\huhuanhuan\PycharmProjects

效果:

案例2:获取绝对路径和上级文件夹

import os
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.abspath(__file__)))
print (base_dir)

效果:

案例3:程序中常和sys结合使用,自动添加目录

案例4:os.rename(‘oldname’,’new’)#重命名文件/目录

如果和程序在同一个目录,可以直接写文件名,如果不在同一目录,需要制定详细的路径。

案例5:os.chdir(“dirname”) 改变当前脚本的工作目录,相当于shell下的cd

2、SYS模块

    sys模块则是python程序用来请求解释器行为的接口。比如关于调试类的(trace,
frames,except)等,profiling类(stats,
getsizeof),运行时环境类(python path, stderr,
stdout),解释器本身(如version)。inspect某种程度上可以看成是在sys提供的功能上的一个包装。

案例1:命令行参数List,第一个元素是程序本身路径,sys.argv[0]为脚本名称

import sys

print(sys.argv)

结果:

[‘C:/Users/…/PycharmProjects/study2017/s2.py’]

案例2:返回python解释程序的版本信息

print(sys.version)

3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit
(AMD64)]

案例3:模块查找目录优先级。

sys.path是python的搜索模块的路径集,是一个list

import sys
for item in sys.path:
print(item)

查找优先级:

案例4:假设s2不在系统的目录,则可以先添加,再导入s2文件:

import sys
sys.path.append('D:\\')#导入D盘文件夹
import s2#文件名

使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!

如果需要更好地控制输出,而print
不能满足你的要求,则可使用标准的写入写出的功能;sys.stdout.write(),sys.stdout.flush()。

案例5:进度条案例:会显示1%一直变到100%

import time
import sys
def view_bar(num,total):
    rate=num/total
    rate_num=int(rate*100)
#d='\r%d%%'%(rate_num,)#\r代表重新回到当前行的首个位置,需要和时间停留配合使用,要么时针会有错,显示为一直变的数字,如17%
    d='\r%s>%d%%'%("="*num,rate_num)#如果是此语句,则显示方式可以为=================>17%
   sys.stdout.write(d)
    sys.stdout.flush()

if __name__=='__main__':
for i in range(0,101):
        time.sleep(0.5)
        view_bar(i,100)

效果:

一直到100%

Java 线上问题排查思路与工具使用,java排查

本文来自作者 蓬蒿 在 GitChat 上分享 「Java
线上问题排查思路与工具使用」,「阅读原文」查看交流实录。

「文末高能」

编辑 | 哈比

101道RHCE考题和详细答案(七),101道rhce考题答案

一、前言

Java 语言是当前互联网应用最为广泛的语言,作为一名 Java
程序猿,当业务相对比较稳定之后平常工作除了 coding
之外,大部分时间(70%~80%)是会用来排查突发或者周期性的线上问题。

由于业务应用 bug(本身或引入第三方库)、环境原因、硬件问题等原因,Java
线上服务出现故障 /
问题几乎不可避免。例如,常见的现象包括部分请求超时、用户明显感受到系统发生卡顿等等。

尽快线上问题从系统表象来看非常明显,但排查深究其发生的原因还是比较困难的,因此对开发测试或者是运维的同学产生了许多的困扰。

排查定位线上问题是具有一定技巧或者说是经验规律的,排查者如果对业务系统了解得越深入,那么相对来说定位也会容易一些。

不管怎么说,掌握 Java 服务线上问题排查思路并能够熟练排查问题常用工具 /
命令 / 平台是每一个 Java 程序猿进阶必须掌握的实战技能。

笔者依据自己的
工作经验总结出一套基本的线上问题排查流程,同学们可以根据自己的实际工作情况进行归纳总结。

**

为了让有计划考红帽认证和打算进行运维工作的人更系统的学习,我从网上挑选了101道RHCE真题和答案,考虑到每天学习量比较大,所以每天摘取10道题进行推送,直至推送完毕,希望对大家有用,谢谢。

61、1、建立一个分区,大小为300M,挂在到/common,并使之永久生效
#fdisk /dev/sda
p→n→+300M→w
#partprobe
#mkfs.ext3 /dev/sda5
#mkdir /common
#mount /dev/sda5 /common
#df -TH
#vim /etc/fstab
/dev/sda5 /common ext3 defaults 0 0

假设你的分区是/dev/sda5
方法2:

  1. e2label /dev/sda5 common
  2. echo -e “LABEL=common \t /common \t ext3 \t defaults \t 1 1”
    >>/etc/fstab
    方法3:
    echo “mount /dev/sda5 /common” >>/etc/rc.local

62、配置 NTP客户端使其能够与
server1.example.com服务器进行网络时间同步

开机自启动
                            RHCT
您需要在3.5时内完成所有试题,3.5小时后,系统将自动关机!
您会注意到有些条件指定某一个服务对my133t.org
域无效,这个域中的所有的系统在172.25.0.0/255.255.0.0网段中,同时这个网段中的所有主机也在my133t.org域内;example.com域中主机在172.24.0.0/255.255.0.0网段内!
如果需要安装软件,您可以通过YUM实现,YUM源路径为:
http://server1.example.com/pub/server
在您进行考试之前,您首先要取得权限,并设置您系统的密码为:rW9ySX
配置静态地址信息:
IP地址为:172.24.0.X(其中X为本机编号)
子网掩码:255.255.0.0
网关;172.24.254.254
DNS:172.24.254.254
加入
vim /etc/hosts
172.24.X.X  stationX.example.com  stationX

64、配置 apache虚拟主机,满足以下需求
a.DocumentRoot路径为/var/www/virt
b.从服务器

cd /var/www/virt/
wget
vim /etc/httpd/conf/httpd.conf
修改985行虚目录
ServerAdmin
[email protected]
    DocumentRoot /var/www/virt
    ServerName www13.example.com
DirectoryIndex virt.html

/etc/init.d/httpd restart

c.网站域名为 station编号)
d.允许用户 usr-2能够在/var/www/virt文件夹中创建文件
cd /var/www/
setfacl -m u:usr-2:rwx virt/
检测su到usr-2 在virt下创建文件

65、配置 Squid代理服务器,满足以下需求
yum install squid -y
a.更改 Squid监听端口为 8080
vim /etc/squid/squid.conf
921行改为 8080
b.只允许本机以及 example.com域内的所有主机访问本机 Squid服务
在574行下加一行acl example src 172.24.0.0/255.255.255.0
在637行下加一行http_access allow example(注意不要加到DENY下边)
/etc/init.d/squid restart
chkconfig squid on
检测在浏览器里设置代理检测

66、配置 apache服务,满足以下需求
yum install httpd-* -y
a.通过 stationx.example.com可以访问本机 apache服务(x为当前
station编号)
cd /var/www/html/
wget
b.主页路径为
vim /etc/httpd/conf/httpd.conf
修改985行虚目录
ServerAdmin
[email protected]
    DocumentRoot /var/www/html
    ServerName station13.example.com
DirectoryIndex test.html
/etc/init.d/httpd restart

67、拒绝 hack.org域内的所有主机访问本机的 ftp服务
vim /etc/hosts.deny
vsftpd:172.25.0.0/255.255.0.0

68、配置 ftp服务
yum install vsftpd –y
/etc/init.d/vsftpd restart
chkconfig vsftpd on

59、配置 IMAPS邮件加密服务,满足以下需求
vim /etc/dovecot.conf
91  92 行去掉注释
a.IMAPS只为 example.com域内的所有主机提供服务
,IMAPS所使用的电子证书信息如下 :
cd /etc/pki/tls/certs
make dovecot.pem
按下面要求做dovecot.pem
b.使用默认的 country.state.locality.organization
c.Organizational unit设置为 rhce
c.Common Name为 stationx.example.com(x为当前 station编号)
才.邮件地址为
[email protected](x为当前
station编号)
最后复制dovecot.pem 到/etc/dovecot 91 92行的目录里面
cp dovecot.pem /etc/pki/dovecot/private/
cp dovecot.pem /etc/pki/dovecot/certs/
/etc/init.d/dovecot restart
检测mutt -f
imaps://[email protected]

69、拒绝 hack.org域内的所有主机访问本机的 pop3服务
iptables -A INPUT -p tcp -s 172.25.0.0/16 –dport 110 -j REJECT
iptables -A INPUT -p udp-s 172.25.0.0/16 –dport 110 -j REJECT
iptables -A INPUT -p tcp -s 172.25.0.0/16 –dport 993 -j REJECT
/etc/init.d/iptables save

70、配置本机 SMTP服务,使其可以接受本机以及外部的邮件
yum install sendmail-* -y
yum install m4 –y(可能默认安装好的)
cd /etc/mail
vim sendmail.mc
116 行 127.0.0.1 改成0.0.0.0
m4 sendmail.mc>sendmail.cf
vim local-host-names
添加 stationX.example.com
/etc/init.d/sendmail restart
测试
mutt -f
imap://[email protected]
收发邮件测试

Linux云计算免费课程火热开启,5天免费**运维干货内容免费听,点击文末“阅读原文”**即可免费听运维课**速速来抢~~~~

**PS:记得查收小编送你的免费大礼包呦~**

福利 | 一万多套PPT模板等你免费来拿!无条件领取!


**免费送 | 1000多套简历模板免费拿,附赠简历制作教程!**

免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~

▼▼点击【阅读原文】,免费听5天Linux运维干货分享课,火热开讲中,速来抢!

二、Java 服务常见线上问题

所有 Java
服务的线上问题从系统表象来看归结起来总共有四方面:CPU、内存、磁盘、网络。例如
CPU 使用率峰值突然飚高、内存溢出 (泄露)、磁盘满了、网络流量异常、FullGC
等等问题。

基于这些现象我们可以将线上问题分成两大类: 系统异常、业务服务异常。

1. 系统异常

常见的系统异常现象包括:  CPU 占用率过高、CPU
上下文切换频率次数较高、磁盘满了、磁盘 I/O 过于频繁、网络流量异常
(连接数过多)、系统可用内存长期处于较低值 (导致 oom killer) 等等。

这些问题可以通过
top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)
等工具获取系统异常现象数据。

此外,如果对系统以及应用进行排查后,均未发现异常现象的更笨原因,那么也有可能是外部基础设施如
IAAS 平台本身引发的问题。

例如运营商网络或者云服务提供商偶尔可能也会发生一些故障问题,你的引用只有某个区域如广东用户访问系统时发生服务不可用现象,那么极有可能是这些原因导致的。

今天我司部署在阿里云华东地域的业务系统中午时分突然不能为广东地区用户提供正常服务,对系统进行各种排查均为发现任何问题。

最后,通过查询阿里云公告得知原因是 “
广东地区电信线路访问华东地区互联网资源(包含阿里云华东 1
地域)出现网络丢包或者延迟增大的异常情况 “。

2. 业务服务异常

常见的业务服务异常现象包括: PV
量过高、服务调用耗时异常、线程死锁、多线程并发问题、频繁进行 Full
GC、异常安全攻击扫描等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注