python在linux下运维_linux运维和python运维 - CSDN
精华内容
参与话题
  • 最佳运维实践了解一下

    千次阅读 2019-07-05 10:14:20
    序言 很多事,你不努力一下,你都体验不到绝望的感觉。。。哈哈,越努力越绝望怎么办。。。怎么办。。。哈哈 告警治理暂且告一段落,最近一周都没告警,感觉有点心虚...
        
    序言

         很多事,你不努力一下,你都体验不到绝望的感觉。。。哈哈,越努力越绝望怎么办。。。怎么办。。。哈哈


        告警治理暂且告一段落,最近一周都没告警,感觉有点心虚。。。心慌慌。


        时间多了,就容易思考,所以来讲述下最佳运维实践。


    运维的根本目标

         运维的根本目标用一句话总结就是:无运维。无论是从系统的角度来看,还是从技术的角度来看,还是从最终用户的使用来看,就是无运维,系统自动故障自愈,所有的技术的产出也是为了最终系统无须运维,从客户的角度来看,运维就是透明的,无须关心。


    运维的个人发展

        从个人的发展来看,其实主要的是技术运维,因为技术是最终的生产力,无论你使用的是python,还是各种中间件,nginx,httpd,tomcat,还是各种缓存,varnish,squid,还是各种数据库,mysql,pg,还是各种存储,块存储,对象存储,文件系统存储,最终的目标都是构建一个可靠性强,可用性高,可扩展性强,安全的,成本低的,规模化的系统无论你学什么样的技术,你最终是为了运维系统


        那么从个人发展的角度来说,最大的价值在于哪儿?最大的价值在于能解决一切问题。无论是客户反馈的问题,还是系统的事件告警故障,总体来说,没有人会关心你采用什么手段来解决这个问题,每个人关心的只是你花费了多少时间来解决问题,无论你是自己去动手解决,还是调动资源来解决,每个人看的只是结果。


        从个人发展的角度来说,最大的难点在于哪儿?最大的难点在于如何解决一切问题。你了解系统多少,你能掌握系统的请求,输入,输出,系统的每个组件的功能,系统的数据流,数据的存储,数据流向的日志,调试技巧,那么多的项目,那么多的产品,那么多的组件,那么多的模块,那么多的进程,那么多的线程,你如何用最少的时间投入达到最好的效果,这。。。才是你需要考虑的问题。


        从个人发展的角度来说,起始点在哪儿?运维的起始点是对于新系统的好奇之心,想探寻数据的流向,想搭建测试环境,模拟故障。。。而对于大部分的运维来说,死在搭建测试环境的一步就太多了,没有现成的测试环境,搭建就是一件很痛苦的事,各种依赖,各种安装包,各种环境变量,各种后端服务,各种资源,在搭建上面就耗费了太多的精力,而搭建好之后,如何来模拟各种故障进行测试。。。模拟的场景,模拟的请求,模拟的测试。。。你如何来使用测试方法来模拟生产环境的故障,然后总结处理故障的逻辑,这个其实才是最根本的起点。你搭建了一个测试环境,本意在于磨砺你所掌握的理论,你所掌握的技能,但是,如果你不进行各种测试,不进行各种折腾,等到了故障的时候,你还是懵逼,如何在保持压力的情况下进行故障问题处理,成了一个最重要的素质


        其实看运维的最佳实践,也就是找出运维的复杂点在哪里。运维最复杂的地方在哪儿?每个人的场景不一样,有的人可能是不了解原理,出现问题用搜索;有的人可能记不住实际指令,每次出问题都要看一下man手册;有的人就牛逼了,出问题了过一会儿就自动好了。


        可运维的系统很重要,如何去构建可运维的系统,那就要靠很多人的努力了。


        一句话总结个人发展的运维的最佳实践:了解理论--搭建环境--模拟故障--解决问题--形成通用的解决问题的思路--继续模拟故障---优化--识别瓶颈--自动化运维


        如果只是单纯的依赖测试就能获取运维经验,那么整个就不算是运维了,因为运维还是需要脑子的,突如其来的问题,各种突发性的事件和故障。


    从客户角度看运维

         传统运维是没事要运维干啥,有事运维干了啥。。。没事的时候是多余的,有事的时候是抗锅的。被动型运维是相当累人的。


        客户看运维,想客户之所想,急客户之所急。能站在客户的角度思考问题这个就是最大的价值了。


        在这里,你所用的技术可能是你所知道的百分之二十都不到,因为客户根本不看技术,你是否可靠?你是否值得信任?我的核心系统交给你,我是否可以依赖你


        信任,那么如何和客户建立信任?。。。这个问题就要留给你来思考了。。。


        客户关心的无非是几个问题:

        1、 系统每周的运行情况,例如SLA指标,事件告警故障数量

        2、 系统的资源统计,例如分布式存储,还能存储多少数据,剩余空间多大,是否需要扩容

        3、 故障影响范围,故障报告,本质原因,是否彻底解决,如何预防

        4、 新上线一个系统,有什么好的建议,如何规划,如何做标准规范

        

        有的时候,技术人员去汇报,去开会,看起来很浪费时间,不。。。就是浪费时间,但是却有巨大的价值,有的时候就和八二法则一样,用最小的成本能换取最大的回报。但是,作为技术人员,一般会用最大的复杂度去解决问题,因为。。。这样才能秀一把技术。


        主动巡检,主动创造故障解决故障,这叫故障演练。。。。主动测试系统,主动进行高可用性测试。。。破坏系统,然后修好系统。。。如何主动才算主动,这又是一个度的问题,影响了生产的服务,主动抗锅!!!


    扯淡

         努力了才会绝望,其实。。。绝望也是对思想的一种磨砺,磨砺你的内心,看看你的内心是否坚定


        其实对于技术过度执着也不是好事,所谓的精通,如何才算精通?会搭建环境?会处理各种突如其来的故障?了解各种原理和配置?看源代码?分析每一个数据块?无底洞。。。


        何为完美的体验???


        用最复杂的架构解决最简单的问题,用最先进的技术解决最简单的问题。。。没有人,没有时间,没有精力。。。。其实又要扯到权衡上面,秀技术,要的就是复杂;而合适才是最重要的。。。。慢慢的演进然后就变成了复杂,而在演进的时候。。。又要保持简单。。。。


        复杂性。。。复杂度。。。呈线性增长。。。。懂的越多,复杂度越高,越来越难以触及完美的境界。。。心境不圆满,不能突破这个境界了。。。。


        浴火重生的方式总是最难的一种方式。。。我能怎么办,我也很无奈啊。。。还好,我躺在床上磨砺我的思想。


        天生的问题解决者,这道难题。。。还是很有难度。。。。无风不起浪。。。。浪不起来。。。。风又不来。。。


    640?wx_fmt=jpeg

        欢迎留言,谈谈你认为的运维的最佳实践是啥。。。。欢迎探讨


         欢迎留言,谈谈你认为的运维的最佳实践是啥。。。。欢迎探讨

        


      

    展开全文
  • 使用Linux命令可以查看当前系统状态和运行状况的相关数据。然而,单个Linux命令和应用程序只能获取某一方面的系统数据。我们需要利用Python模块将这些详细信息反馈给管理员,同时生成一份有用的系统报告。 我们将...

    使用Linux命令可以查看当前系统状态和运行状况的相关数据。然而,单个Linux命令和应用程序只能获取某一方面的系统数据。我们需要利用Python模块将这些详细信息反馈给管理员,同时生成一份有用的系统报告。

    我们将报告分为两部分。第一部分是使用platform模块获取的一般系统信息,第二部分是硬件资源,如CPU和内存等。

    首先从导入platform模块开始,它是一个内置的Python库。platform模块中有很多方法,它们可用来获取当前运行Python命令的操作系统的详细信息。

    import platform
    system = platform.system()
    print(system)

    上述代码的运行结果如下。

    Python自动化运维实战:从Linux系统中收集数据

     

    该脚本返回当前系统的类型,同样的脚本在Windows系统上运行会得到不同的结果。当它在Windows系统上运行时,输出结果就变成Windows。

    Python自动化运维实战:从Linux系统中收集数据

     

    常用的函数uname()和Linux命令(uname -a)的功能一样:获取机器的主机名、体系结构和内核信息,但是uname()采用了结构化格式,以便通过序号来引用相应的值。

    import platform
    from pprint import pprint
    uname = platform.uname()
    pprint(uname)

    上述代码的运行结果如下。

    Python自动化运维实战:从Linux系统中收集数据

     

    system()方法获得的第一个值是系统类型,第二个是当前机器的主机名。

    使用PyCharm中的自动补全功能可以浏览并列出platform模块中的所有可用函数,按Ctrl + Q组合键就可以查看每个函数的文档(见下图)。

    Python自动化运维实战:从Linux系统中收集数据

     

    然后,使用Linux文件提供的信息列出Linux机器中的硬件配置。这里需要记住,在/proc/目录下可以访问CPU、内存以及网络等相关信息;我们将读取这些信息并在Python中使用标准的open()函数访问它们。查看/proc/目录可以获取更多信息。

    下面给出具体的脚本。

    首先,导入platform模块,它仅在当前任务中使用。

    #!/usr/bin/python
    __author__ = "Bassim Aly"
    __EMAIL__ = "basim.alyy@gmail.com"
    
    import platform

    然后,定义函数。以下代码包含了本次练习中需要的两个函数——check_feature()和get_value_from_string()。

    def check_feature(feature,string):
        if feature in string.lower():
            return True
        else:
            return False
    def get_value_from_string(key,string):
        value = "NONE"
        for line in string.split("\n"):
            if key in line:
                value = line.split(":")[1].strip()
        return value

    最后是Python脚本的主要部分,其中包括用来获取所需信息的Python代码。

    cpu_features = []
    with open('/proc/cpuinfo') as cpus:
        cpu_data = cpus.read()
        num_of_cpus = cpu_data.count("processor")
        cpu_features.append("Number of Processors: {0}".format(num_of_cpus))
        one_processor_data = cpu_data.split("processor")[1]
        print one_processor_data
        if check_feature("vmx",one_processor_data):
            cpu_features.append("CPU Virtualization: enabled")
        if check_feature("cpu_meltdown",one_processor_data):
            cpu_features.append("Known Bugs: CPU Metldown ")
        model_name = get_value_from_string("model name ",one_processor_data)
        cpu_features.append("Model Name: {0}".format(model_name))
    
        cpu_mhz = get_value_from_string("cpu MHz",one_processor_data)
        cpu_features.append("CPU MHz: {0}".format((cpu_mhz)))
    
    memory_features = []
    with open('/proc/meminfo') as memory:
        memory_data = memory.read()
        total_memory = get_value_from_string("MemTotal",memory_data).replace("kB","")
        free_memory = get_value_from_string("MemFree",memory_data).replace("kB","")
        swap_memory = get_value_from_string("SwapTotal",memory_data).replace("kB","")
        total_memory_in_gb = "Total Memory in GB:
    {0}".format(int(total_memory)/1024)
        free_memory_in_gb = "Free Memory in GB:
    {0}".format(int(free_memory)/1024)
        swap_memory_in_gb = "SWAP Memory in GB:
    {0}".format(int(swap_memory)/1024)
        memory_features =
    [total_memory_in_gb,free_memory_in_gb,swap_memory_in_gb]

    这部分代码用来输出从上一节的代码中获取的信息。

    print("============System Information============")
    
    print("""
    System Type: {0}
    Hostname: {1}
    Kernel Version: {2}
    System Version: {3}
    Machine Architecture: {4}
    Python version: {5}
    """.format(platform.system(),
               platform.uname()[1],
               platform.uname()[2],
               platform.version(),
               platform.machine(),
               platform.python_version()))
    
    print("============CPU Information============")
    print("\n".join(cpu_features))
    
    print("============Memory Information============")
    print("\n".join(memory_features))

    在上面的例子中我们完成了以下任务。

    (1)打开/proc/cpuinfo并读取其内容,然后将结果存储在cpu_data中。

    (2)使用字符串函数count()统计文件中关键字processor的数量,从而得知机器上有多少个处理器。

    (3)获取每个处理器支持的选项和功能,我们只需要读取其中一个处理器的信息(因为通常所有处理器的属性都一样)并传递给check_feature()函数。该方法的一个参数是我们期望处理器支持的功能,另一个参数是处理器的属性信息。如果处理器的属性支持第一个参数指定的功能,该方法返回True。

    (4)由于处理器的属性数据以键值对的方式呈现,因此我们设计了get_value_from_string()方法。该方法根据输入的键名通过迭代处理器属性数据来搜索对应的值,然后根据冒号拆分返回的键值对,以获取其中的值。

    (5)使用append()方法将所有值添加到cpu_feature列表中。

    (6)对内存信息重复相同的操作,获得总内存、空闲内存和交换内存的大小。

    (7)使用platform的内置方法(如system()、uname()和python_version())来获取系统的相关信息。

    (8)输出包含上述信息的报告。

    脚本输出如下图所示。

    Python自动化运维实战:从Linux系统中收集数据

     

     

    另一种呈现数据的方式是利用第5章中介绍的Matplotlib库,可视化随时间变化的数据。

    11.1.1 通过邮件发送收集的数据

    从上一节生成的报告中可以看到系统中当前的资源。在本节中,我们调整脚本,增强其功能,比如,将这些信息通过电子邮件发送出去。对于网络操作中心(Network Operation Center,NOC)团队来说,这个功能非常有用。当某个特殊事件(如HDD故障、高CPU或丢包)发生时,他们希望被监控系统能够自动给他们发送邮件。Python有一个内置库smtplib,它利用简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)从邮件服务器中发送和接收电子邮件。

    使用该功能要求在计算机上安装本地电子邮件服务器,或者能够使用免费的在线电子邮件服务(如Gmail或Outlook)。在这个例子中我们将使用SMTP登录Gmail网站,将数据通过电子邮件发送出去。

    接下来,开始动手修改脚本,为其添加SMTP功能。

    将所需模块导入Python,这次需要导入smtplib和platform。

    #!/usr/bin/python
    __author__ = "Bassem Aly"
    __EMAIL__ = "basim.alyy@gmail.com"
    
    import smtplib
    imp        ort platform

    下面是check_feature()和get_value_from_string()这两个函数的代码。

    def check_feature(feature,string):
        if feature in string.lower():
            return True
        else:
            return False
    
    def get_value_from_string(key,string):
        value = "NONE"
        for line in string.split("\n"):
            if key in line:
                value = line.split(":")[1].strip()
        return value

    最后是Python脚本的主体,其中包含了获取所需信息的Python代码。

    cpu_features = []
    with open('/proc/cpuinfo') as cpus:
        cpu_data = cpus.read()
        num_of_cpus = cpu_data.count("processor")
        cpu_features.append("Number of Processors: {0}".format(num_of_cpus))
        one_processor_data = cpu_data.split("processor")[1]
        if check_feature("vmx",one_processor_data):
            cpu_features.append("CPU Virtualization: enabled")
        if check_feature("cpu_meltdown",one_processor_data):
            cpu_features.append("Known Bugs: CPU Metldown ")
        model_name = get_value_from_string("model name ",one_processor_data)
        cpu_features.append("Model Name: {0}".format(model_name))
    
        cpu_mhz = get_value_from_string("cpu MHz",one_processor_data)
        cpu_features.append("CPU MHz: {0}".format((cpu_mhz)))
    
    memory_features = []
    with open('/proc/meminfo') as memory:
        memory_data = memory.read()
        total_memory = get_value_from_string("MemTotal",memory_data).replace("kB","")
        free_memory = get_value_from_string("MemFree",memory_data).replace("kB","")
        swap_memory = get_value_from_string("SwapTotal",memory_data).replace("kB","")
        total_memory_in_gb = "Total Memory in GB:
    {0}".format(int(total_memory)/1024)
        free_memory_in_gb = "Free Memory in GB:
    {0}".format(int(free_memory)/1024)
        swap_memory_in_gb = "SWAP Memory in GB:
    {0}".format(int(swap_memory)/1024)
        memory_features =
    [total_memory_in_gb,free_memory_in_gb,swap_memory_in_gb]
    
    Data_Sent_in_Email = ""
    Header = """From: PythonEnterpriseAutomationBot <basim.alyy@gmail.com>
    To: To Administrator <basim.alyy@gmail.com>
    Subject: Monitoring System Report
    
    """
    Data_Sent_in_Email += Header
    Data_Sent_in_Email +="============System Information============"
    
    Data_Sent_in_Email +="""
    System Type: {0}
    Hostname: {1}
    Kernel Version: {2}
    System Version: {3}
    Machine Architecture: {4}
    Python version: {5}
    """.format(platform.system(),
               platform.uname()[1],
               platform.uname()[2],
               platform.version(),
               platform.machine(),
               platform.python_version())
    
    Data_Sent_in_Email +="============CPU Information============\n"
    Data_Sent_in_Email +="\n".join(cpu_features)
    
    Data_Sent_in_Email +="\n============Memory Information============\n"
    Data_Sent_in_Email +="\n".join(memory_features)

    下面给出连接到gmail服务器所需的信息。

    fromaddr = 'yyyyyyyyyyy@gmail.com'
    toaddrs = 'basim.alyy@gmail.com'
    username = 'yyyyyyyyyyy@gmail.com'
    password = 'xxxxxxxxxx'
    server = smtplib.SMTP('smtp.gmail.com:587')
    server.ehlo()
    server.starttls()
    server.login(username,password)
    
    server.sendmail(fromaddr, toaddrs, Data_Sent_in_Email)
    server.quit()

    在前面的例子中实现了以下功能。

    (1)第一部分与上一个例子相同,只是没有将数据输出到终端,而是将其添加到Data_Sent_in_Email变量中。

    (2)Header变量表示电子邮件标题,包括发件人地址、收件人地址和电子邮件主题。

    (3)使用smtplib模块内的SMTP()类连接到公共Gmail SMTP服务器并完成TTLS连接。这也是连接Gmail服务器的默认方法。我们将SMTP连接保存在server变量中。

    (4)使用login()方法登录服务器,最后使用sendmail()函数发送电子邮件。sendmail()有3个输入参数——发件人、收件人和电子邮件正文。

    (5)关闭与服务器的连接。

    脚本输出如下图所示。

    Python自动化运维实战:从Linux系统中收集数据

     

    11.1.2 使用time和date模块

    到目前为止,我们已经能将从服务器中生成的自定义数据通过电子邮件发送出去。但由于网络拥塞、邮件系统故障或任何其他问题,生成的数据与电子邮件的传递时间之间可能存在时间差,因此我们不能根据收到电子邮件的时间来推算实际生成数据的时间。

    出于上述原因,需要使用Python中的datetime模块来获取被监控系统上的当前时间。该模块可以使用各种字段(如年、月、日、小时和分钟)来格式化时间。

    除此之外,datetime模块中的datetime实例实际上是Python中独立的对象(如int、string、boolean等),因此datetime实例在Python中有自己的属性。

    使用strftime()方法可以将datetime对象转换为字符串。该方法使用下表中的格式符号来格式化时间。

    Python自动化运维实战:从Linux系统中收集数据

     

    修改脚本,将下面的代码段添加到代码中。

    from datetime import datetime
    time_now = datetime.now()
    time_now_string = time_now.strftime("%Y-%m-%d %H:%M:%S")
    Data_Sent_in_Email += "====Time Now is {0}====\n".format(time_now_string)

    在这段代码中,首先从datetime模块中导入datetime类。然后使用datetime类和now()函数创建time_now对象,该函数返回系统的当前时间。最后使用带格式化符号的strftime()来格式化时间并将其转换为字符串,用于输出(注意,该对象包含了datetime对象)。

    脚本的输出如下。

    Python自动化运维实战:从Linux系统中收集数据

     

    11.1.3 定期运行脚本

    在脚本的最后一步,设置运行脚本的时间间隔,它可以是每天、每周、每小时或某个特定的时间。该功能使用了Linux系统上的cron服务。cron用来调度周期性的重复事件,例如,清理目录、备份数据库、转储日志或任何其他事件。

    使用下面的命令可以查看当前计划中的任务。

    crontab -l
    

    编辑crontab需要使用-e选项。第一次运行cron时,系统会提示你选择自己喜欢的编辑器(nano或vi)。

    典型的crontab由5颗星组成,每颗星代表一个时间项(见下表)。

    Python自动化运维实战:从Linux系统中收集数据

     

    如果需要每周五晚上9点运行某个任务,可以使用下面的配置。

    0 21 * * 5 /path/to/command

    如果需要每天0点运行某条命令(比如备份),使用这个配置。

    0 0 * * * /path/to/command

    另外,还可以让cron以某个特定时间间隔运行。如果需要每5min运行一次命令,可以使用这个配置。

    */5 * * * * /path/to/command

    回到脚本,如果我们期望它每天早上7:30运行,使用这个配置。

    30 7 * * * /usr/bin/python /root/Send_Email.py

    最后,记得在退出之前保存cron配置。

     

    最好使用绝对路径的Linux命令,而不是相对路径,以避免出现任何潜在的问题。

    本文摘自《Python自动化运维实战》

    Python自动化运维实战:从Linux系统中收集数据

    本书旨在讲述通过Python简化运维、提升运维效率的方法和实践。 
    本书首先介绍如何开发Python程序 、创建Python模块,然后讲述如何使用Python工具获取重要的输出信息、生成通用的配置模板、自动安装操作系统、配置大量服务器,最后讨论如何创建和管理虚拟机,如何利用OpenStack、VMware、AWS自动执行管理任务等。 
    通过本书,你将掌握用Python实现自动化运维的各种方法和技巧。

    本书主要内容:

    • Python中常用模块的用法;
    • 通过Python脚本管理网络设备的方法;
    • 使用Ansible和Fabric自动执行常见的Linux管理任务的方法;
    • 使用Python管理VMware、OpenStack和AWS实例的方法;
    • 基于Python的安全工具的用法。
    展开全文
  • Python 运维 Linux基本命令(一)

    千次阅读 2018-11-02 18:02:00
    1. Linux 运维工程师的职责 2. 开发、测试、运维工程师的开发流程 开发需要将项目代码实现–&amp;amp;amp;gt;提交给测试工程师进行测试–&amp;amp;amp;gt;测试完成后,提交给运维工程师进行上线,发布...

    1. Linux 运维工程师的职责
    在这里插入图片描述

    2. 开发、测试、运维工程师的开发流程

    在这里插入图片描述

    开发需要将项目代码实现–>提交给测试工程师进行测试–>测试完成后,提交给运维工程师进行上线,发布、运行、维护,给用户提供服务(数据服务)

    3.Centos、Ubuntu、Debian三个都是Linux非常优秀的系统,开源,分收费的商业版和免费版
    Centos 是从Redhat源代码编译重新发布版,命令行操作可以方便管理系统和应用,并且有帮助文档和社区的支持
    Ubuntu 有着靓丽的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,并且对计算机硬件的要求优于Centos和Debian,兼容性强,但对于服务器来说,并不需要太多的应用程序,需要的稳定,操作方便,维护简单的系统
    4.Linux常用的命令 shell命令行来实现的
    pwd 获取当前目录的绝对路径
    cd change direct 改变目录
    ls 查看目录下的所有文件
    docker images 查看当前目录下的所有镜像
    vi 输入 i 表示编辑 输入:w 写入文件并保存 输入:q 退出
    可以连写 :wq 写入保存并退出
    :q! 强制退出
    cat filename 表示将filename文件内容打印到终端
    cp file1 newfile1 拷贝file1并新建newfile1文件
    cp -r 目录1 目录2 拷贝目录1 并新建目录2
    -r 表示递归复制目录大的内容
    rm filename 删除文件 删除文件目录需加 -r
    mv -f file1 file2 将file1强制放入file2中
    tar -cvf file filename1 将文件压缩到file中
    tar -xvf file 将file文件解压

    5.Linux 系统的目录结构
    在这里插入图片描述

    第一列 表示文件的权限 由二进制组成 分为三组 最高权限为7 分为读写 只读 只写
    第二列 表示文件下数量
    第三列 文件的时间
    第四列 文件的名称

    在这里插入图片描述

    命令

    功能说明

    线上查询及帮助命令 (2 个)

    man

    查看命令帮助,命令的词典,更复杂的还有 info,但不常用。

    help

    查看 Linux 内置命令的帮助,比如 cd 命令。

    文件和目录操作命令 (18 个)

    ls

    全拼 list,功能是列出目录的内容及其内容属性信息。

    cd

    全拼 change directory,功能是从当前工作目录切换到指定的工作目录。

    cp

    全拼 copy,其功能为复制文件或目录。

    find

    查找的意思,用于查找目录及目录下的文件。

    mkdir

    全拼 make directories,其功能是创建目录。

    mv

    全拼 move,其功能是移动或重命名文件。

    pwd

    全拼 print working directory,其功能是显示当前工作目录的绝对路径。

    rename

    用于重命名文件。

    rm

    全拼 remove,其功能是删除一个或多个文件或目录。

    rmdir

    全拼 remove empty directories,功能是删除空目录。

    touch

    创建新的空文件,改变已有文件的时间戳属性。

    tree

    功能是以树形结构显示目录下的内容。

    basename

    显示文件名或目录名。

    dirname

    显示文件或目录路径。

    chattr

    改变文件的扩展属性。

    lsattr

    查看文件扩展属性。

    file

    显示文件的类型。

    md5sum

    计算和校验文件的 MD5 值。

    查看文件及内容处理命令(21 个)

    cat

    全拼 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。

    tac

    tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。

    more

    分页显示文件内容。

    less

    分页显示文件内容,more 命令的相反用法。

    head

    显示文件内容的头部。

    tail

    显示文件内容的尾部。

    cut

    将文件的每一行按指定分隔符分割并输出。

    split

    分割文件为不同的小片段。

    paste

    按行合并文件内容。

    sort

    对文件的文本内容排序。

    uniq

    去除重复行。oldboy

    wc

    统计文件的行数、单词数或字节数。

    iconv

    转换文件的编码格式。

    dos2unix

    将 DOS 格式文件转换成 UNIX 格式。

    diff

    全拼 difference,比较文件的差异,常用于文本文件。

    vimdiff

    命令行可视化文件比较工具,常用于文本文件。

    rev

    反向输出文件内容。

    grep/egrep

    过滤字符串,三剑客老三。

    join

    按两个文件的相同字段合并。

    tr

    替换或删除字符。

    vi/vim

    命令行文本编辑器。

    文件压缩及解压缩命令(4 个)

    tar

    打包压缩。oldboy

    unzip

    解压文件。

    gzip

    gzip 压缩工具。

    zip

    压缩工具。

    信息显示命令(11 个)

    uname

    显示操作系统相关信息的命令。

    hostname

    显示或者设置当前系统的主机名。

    dmesg

    显示开机信息,用于诊断系统故障。

    uptime

    显示系统运行时间及负载。

    stat

    显示文件或文件系统的状态。

    du

    计算磁盘空间使用情况。

    df

    报告文件系统磁盘空间的使用情况。

    top

    实时显示系统资源使用情况。

    free

    查看系统内存。

    date

    显示与设置系统时间。

    cal

    查看日历等时间信息。

    搜索文件命令(4 个)

    which

    查找二进制命令,按环境变量 PATH 路径查找。

    find

    从磁盘遍历查找文件或目录。

    whereis

    查找二进制命令,按环境变量 PATH 路径查找。

    locate

    从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。

    用户管理命令(10 个)

    useradd

    添加用户。

    usermod

    修改系统已经存在的用户属性。

    userdel

    删除用户。

    groupadd

    添加用户组。

    passwd

    修改用户密码。

    chage

    修改用户密码有效期限。

    id

    查看用户的 uid,gid 及归属的用户组。

    su

    切换用户身份。

    visudo

    编辑 / etc/sudoers 文件的专属命令。

    sudo

    以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。

    基础网络操作命令(11 个)

    telnet

    使用 TELNET 协议远程登录。

    ssh

    使用 SSH 加密协议远程登录。

    scp

    全拼 secure copy,用于不同主机之间复制文件。

    wget

    命令行下载文件。

    ping

    测试主机之间网络的连通性。

    route

    显示和设置 linux 系统的路由表。

    ifconfig

    查看、配置、启用或禁用网络接口的命令。

    ifup

    启动网卡。

    ifdown

    关闭网卡。

    netstat

    查看网络状态。

    ss

    查看网络状态。

    深入网络操作命令(9 个)

    nmap

    网络扫描命令。

    lsof

    全名 list open files,也就是列举系统中已经被打开的文件。

    mail

    发送和接收邮件。

    mutt

    邮件管理命令。

    nslookup

    交互式查询互联网 DNS 服务器的命令。

    dig

    查找 DNS 解析过程。

    host

    查询 DNS 的命令。

    traceroute

    追踪数据传输路由状况。

    tcpdump

    命令行的抓包工具。

    有关磁盘与文件系统的命令(16 个)

    mount

    挂载文件系统。

    umount

    卸载文件系统。

    fsck

    检查并修复 Linux 文件系统。

    dd

    转换或复制文件。

    dumpe2fs

    导出 ext2/ext3/ext4 文件系统信息。

    dump

    ext2/3/4 文件系统备份工具。

    fdisk

    磁盘分区命令,适用于 2TB 以下磁盘分区。

    parted

    磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。

    mkfs

    格式化创建 Linux 文件系统。

    partprobe

    更新内核的硬盘分区表信息。

    e2fsck

    检查 ext2/ext3/ext4 类型文件系统。

    mkswap

    创建 Linux 交换分区。

    swapon

    启用交换分区。

    swapoff

    关闭交换分区。

    sync

    将内存缓冲区内的数据写入磁盘。

    resize2fs

    调整 ext2/ext3/ext4 文件系统大小。

    系统权限及用户授权相关命令(4 个)

    chmod

    改变文件或目录权限。

    chown

    改变文件或目录的属主和属组。

    chgrp

    更改文件用户组。

    umask

    显示或设置权限掩码。

    查看系统用户登陆信息的命令(7 个)

    whoami

    显示当前有效的用户名称,相当于执行 id -un 命令。

    who

    显示目前登录系统的用户信息。

    w

    显示已经登陆系统的用户列表,并显示用户正在执行的指令。

    last

    显示登入系统的用户。

    lastlog

    显示系统中所有用户最近一次登录信息。

    users

    显示当前登录系统的所有用户的用户列表。

    finger

    查找并显示用户信息。

    内置命令及其它(19 个)

    echo

    打印变量,或直接输出指定的字符串

    printf

    将结果格式化输出到标准输出。

    rpm

    管理 rpm 包的命令。

    yum

    自动化简单化地管理 rpm 包的命令。

    watch

    周期性的执行给定的命令,并将命令的输出以全屏方式显示。

    alias

    设置系统别名。

    unalias

    取消系统别名。

    date

    查看或设置系统时间。

    clear

    清除屏幕,简称清屏。

    history

    查看命令执行的历史纪录。

    eject

    弹出光驱。

    time

    计算命令执行时间。

    nc

    功能强大的网络工具。

    xargs

    将标准输入转换成命令行参数。

    exec

    调用并执行指令的命令。

    export

    设置或者显示环境变量。

    unset

    删除变量或函数。

    type

    用于判断另外一个命令是否是内置命令。

    bc

    命令行科学计算器

    系统管理与性能监视命令 (9 个)

    chkconfig

    管理 Linux 系统开机启动项。

    vmstat

    虚拟内存统计。

    mpstat

    显示各个可用 CPU 的状态统计。

    iostat

    统计系统 IO。

    sar

    全面地获取系统的 CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU 中断和网络等性能数据。

    ipcs

    用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。

    ipcrm

    用来删除一个或更多的消息队列、信号量集或者共享内存标识。

    strace

    用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

    ltrace

    命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。

    关机 / 重启 / 注销和查看系统信息的命令(6 个)

    shutdown

    关机。

    halt

    关机。

    poweroff

    关闭电源。

    logout

    退出当前登录的 Shell。

    exit

    退出当前登录的 Shell。

    Ctrl+d

    退出当前登录的 Shell 的快捷键。

    进程管理相关命令(15 个)

    bg

    将一个在后台暂停的命令,变成继续执行 (在后台执行)。

    fg

    将后台中的命令调至前台继续运行。

    jobs

    查看当前有多少在后台运行的命令。

    kill

    终止进程。

    killall

    通过进程名终止进程。

    pkill

    通过进程名终止进程。

    crontab

    定时任务命令。

    ps

    显示进程的快照。

    pstree

    树形显示进程。

    nice/renice

    调整程序运行的优先级。

    nohup

    忽略挂起信号运行指定的命令。

    pgrep

    查找匹配条件的进程。

    runlevel

    查看系统当前运行级别。

    init

    切换运行级别。

    service

    启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

    展开全文
  • 第一章 Python 生态工具 1.1 Python内置小工具 1.1.1 1秒钟启动一个下载服务器 1 python2中: 2 python -m SimpleHTTPServer ...3 python3中: ...6 #执行上面的命令就会 当前目录 启动一...

    第一章 Python 生态工具

    1.1 Python内置小工具

    1.1.1 1秒钟启动一个下载服务器

    1 python2中:
    2 python -m SimpleHTTPServer
    3 python3中:
    4 python -m http.server
    5 #快速启动一个web服务,如果没有Index页面,即为简易的ftp服务。
    6 #执行上面的命令就会在 当前目录下 启动一个文件下载服务器,默认打开 8000 端口。 

    1.1.2 字符串转换为json 

     1      JSON是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。由于 JSON 的诸多优点,
     2   已被广泛使用在各个系统中。 JSON 使用越广泛,需要将 JSON 字符串转换为 JSON 对象的需求就越频繁。
     3      例如,在工作过程中,我们的系统会调用底层服务的 API。底层服务的API一般都是以 JSON 的格式返回,
     4   为了便于问题追踪,我们会将 API 返回的 JSON 转换为字符串记录 到日志文件中。当需要分析问题时,就需要
     5   将日志文件中的 JSON 字符串拿出来进行分析。这个时候,需要将一个 JSON 字符串转换为 JSON 对象,以提高日志的可读性。
     6 
     7   [root@docker ~]# echo '{"job":"developer","test":"python","api":"testapi"}' > 2.json    
     8   [root@docker ~]# python -m json.tool 2.json 
     9   {
    10      "api": "testapi",
    11      "job": "developer",
    12      "test": "python"
    13   }

     1.1.3 检查第三方库是否安装正确

    1 [root@docker ~]# python -c "import paramik"   
    2 Traceback (most recent call last):
    3   File "<string>", line 1, in <module>
    4 ImportError: No module named paramik
    5 [root@docker ~]# python -c "import psutil"
    6 #错误会提示不存在,正确没有提示

     

    转载于:https://www.cnblogs.com/catinsky/p/9173455.html

    展开全文
  • 1. 1秒钟启动一个下载服务器要访问文件的目录执行:python3 -m http.server网页上访问:http://ip:8000/就可以下载该目录的文件(windows中也可以用)2. python 一行试解析jsonecho '{"job": &...
  • Python开发 ...python强力Django 和杀手级xadmin ...Python 3 视频 高级运维 Django 基础进阶高级 项目实战 ...第四套 2017最新python就业班(1) ...Python3自动化运维开发(约50G) ...01 linux基础+就业 Python
  • 不懂编程的运维人员到底还能走多远? 首先,可以肯定的说,未来的IT岗位需要的是综合能力强的人员,运维、开发、数据库、网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作。 下面已经不是...
  • 为什么运维Python

    千次阅读 2018-04-23 17:27:28
    基于Python本身的优点:简单,易学,速度快,免费、开源,高层语言,可移植性,解释性,可扩展性,可嵌入性,丰富的库,独特的语法。Python已经成为现在编程的必备语言。作为“胶水语言”它能够把其他语言制作的各种...
  • Linux运维常用命令----持续更新

    万次阅读 2018-06-28 11:14:56
    于是乎稍微总结一下运维这段时间常用的操作指令1、查看当前目录所有文档的内容行数2、查看当前目录所有文档的大小3、后台启动Python脚本输出日志到文件,查看日志文件4、...
  • 推荐一套适合运维的书籍

    万次阅读 2017-11-08 15:35:57
    linux基础入门 全面的是《鸟哥的Linux私房菜》 精简的当然是我的《跟阿铭学Linux》 shell 我看过最好的 《shell编程艺术》 综合运维 《高性能Linux服务器构建实战》 lamp/lnmp nginx: 《取代Apache的...
  • 先了解linux运维工程师需要做的事情 1.熟悉linux命令基本操作,玩不转基本操作别的都是空中楼阁 2.熟悉tomcat,nginx,memcache等等应用服务器的配置和管理 3.熟悉集群的,以及负载均衡的规划与搭建,熟悉常规...
  • 找了一个星期的python实习,投了十几家公司都没有反应,...需要python的太少了,那需要python实习的更加少了,python比运维难找多了,如果这周日还是没有反应,就找linux运维了,运维也能接触python,差不到哪去,而...
  • 外界都说运维只是处于被动低效率手工救火的状态,企业对其重视程度不高,提起运维很多人能联想到的字眼就有“苦逼”、...现在,运维人员的发展前景也开始让很多程序员眼羡,作为Linux运维人员的你:这一年,你的L...
  • Linux运维学习路径

    千次阅读 2018-09-28 15:41:30
    实验楼楼+训练营的Linux运维工程师需要的全部技术要求(只是个人学习的一个借鉴路径) Linux基础,Shell编程与文本处理,应用服务运维,数据库服务运维,日志与监控,Python基础,Python自动化运维,Docker自动化...
  • 运维人该醒醒了,要变天了

    千次阅读 2017-10-26 13:17:39
    传统运维人员该转型了
  • Linux运维高级架构师实战视频教程

    万次阅读 2019-04-27 20:59:36
    Linux运维高级架构师实战视频教程 运维工程师需要了解系统的服务搭建.shell脚本的编写(便于维护或者日程),mysql操作。 这是重要的,而且是必须的。其次就是涉及Linux系统接入网络的应用。你可以直接去搜一下简历上...
  • Python 在运维中要掌握的 20个技能

    千次阅读 2018-09-20 18:59:10
    能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及...2、IPy(http://github.com/haypo/python-ipy),辅助IP规划。 3、dnspython(http://dnspython.org)Pytho...
  • 或许你听说过:一个高级运维必须掌握Python技术,而会Python运维更具竞争力,也更“值钱”。那么,运维Python到底是什么关系呢?为什么掌握Python运维...
  • Python运维常用的20个库和模块

    千次阅读 2018-12-27 10:26:39
    Python运维常用的20个库 1、psutil是一个跨平台库(https://github.com/giampaolo/psutil) 能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理。 ...
  • Shell运维的重要性_python的作用

    千次阅读 2017-10-08 00:36:41
    随着互联网的爆发,Linux 运维在最近几年也迎来了春天,出现了大量的职位需求,催生了一批 Linux 运维培训班。 如今的 IT 服务器领域是 Linux、UNIX、Windows 三分天下,Linux 系统可谓后起之秀,特别是“互联网...
1 2 3 4 5 ... 20
收藏数 32,033
精华内容 12,813
关键字:

python在linux下运维