Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Ambari自定义服务开发-项目初始化
  • Ambari自定义服务开发-组件安装启动停止卸载介绍
  • Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法
  • Ambari自定义服务开发-自定义服务配置文件生成
  • Ambari自定义服务开发-代码如何获取配置参数
  • Ambari自定义服务开发-修改配置文件提示服务重启
  • Ambari自定义服务开发-自定义告警
  • Ambari自定义服务开发-查看历史版本配置
  • Ambari自定义服务开发-调试方法
  • Ambari自定义服务开发-执行Shell命令
  • Ambari自定义服务开发-快捷访问链接生成
  • Ambari自定义服务开发-服务组件启动顺序设置
  • Ambari自定义服务开发-服务组件安装依赖另外一个组件设置
  • Ambari自定义服务开发-监控指标Metrics介绍
  • Ambari自定义服务开发-使用客户端下载配置文件
  • Ambari自定义服务开发-美化(增强型)配置参数设置
  • Ambari自定义服务开发-自定义开发安装包整合到Ambari-Server中
  • Ambari自定义服务开发-自定义脚本运行
  • Ambari自定义服务开发-常用函数
    • 判断某个rpm是否安装
    • 根据PID判断某个进程是否存在
    • 根据进程名称查找某一个进程是否存在
    • 以某个用户执行sh文件
    • 删除目录
    • 创建目录
    • 判断文件是否存在
  • Ambari自定义服务开发问题处理-中文乱码
  • Ambari自定义服务开发问题处理-告警项UNKWN
  • Ambari自定义服务开发问题处理-Agent安装服务报错unknown
  • Ambari自定义服务开发问题处理-修改源码配置,服务重启后未生效
  • 《Ambari自定义开发教程》笔记
Jast-zsh
2024-04-08
目录
判断某个rpm是否安装
根据PID判断某个进程是否存在
根据进程名称查找某一个进程是否存在
以某个用户执行sh文件
删除目录
创建目录
判断文件是否存在

Ambari自定义服务开发-常用函数

[toc]

自定义开发服务时,经常会用到的函数汇总

# 判断某个rpm是否安装

    # 如果rpm存在则卸载
    def remove_rpm(self,rpm_name):
        if self.rpm_install_status(rpm_name):
            cmd = 'rpm -qa | grep "{0}" | xargs rpm -e'.format(rpm_name)
            Execute(cmd)
            
    # 判断某个rpm是否安装
    def rpm_install_status(self, rpm_name):
        cmd = 'rpm  -qa  |  grep  -q  "{0}"  &&  echo  "True"  ||  echo  "False"'.format(rpm_name)
        result = subprocess.check_output(cmd ,
                                         stderr=subprocess.STDOUT,
                                         shell=True,
                                         universal_newlines=True).strip()
        if result == 'True':
            return True
        else:
            return False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 根据PID判断某个进程是否存在

    # 根据PID查询进程是否存在
    def process_exist(self, pid):
        try:
          	# kill 0 并不会真实kill进程
            os.kill(pid, 0)
            logger.info("process already exists! ")
            process_is_exist = True
        except OSError:
            logger.error("Process with pid {0} is not running.".format(pid))
            process_is_exist = False
        return process_is_exist
1
2
3
4
5
6
7
8
9
10
11

# 根据进程名称查找某一个进程是否存在

    def find_hugegraph_pid(self, env):
        import params
        env.set_params(params)
        cmd = "ps -ef | grep \'{0}\' | grep -v grep | awk \'{ {print $2}}\'".format('com.xxx')
        result = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True, universal_newlines=True).strip()
        if result.isdigit():
            return result
        else:
            return -1
1
2
3
4
5
6
7
8
9

返回:

  • -1:进程不存在
  • 其他:进程ID

# 以某个用户执行sh文件

        try:
            # 启动HugeGraph服务,并打印启动输出内容
            print subprocess.check_output(format('sudo -i -u '+params.hugegraph_user+' {hugegraph_base_dir}/bin/start-hugegraph.sh'),
                                         stderr=subprocess.STDOUT,
                                         shell=True,
                                         universal_newlines=True)
        except subprocess.CalledProcessError as e:
            error_output = e.output
            print(error_output)
1
2
3
4
5
6
7
8
9

# 删除目录

        # 删除pid目录
        Directory([params.hubble_pid_dir],
                  action="delete")
1
2
3

# 创建目录

        # 创建pid目录
        Directory([params.hubble_log_dir, params.hubble_pid_dir],
                  mode=0755,
                  cd_access='a',
                  owner=params.hugegraph_user,
                  group=params.user_group,
                  create_parents=True
                  )
1
2
3
4
5
6
7
8

# 判断文件是否存在

    # 判断文件是否存在
    def fileExists(self,file_path):
        # 1代表不存在,0代表文件存在
        cmd = format('[ -f "{0}" ] && echo 0 || echo 1'.format(file_path))
        print cmd
        result = subprocess.check_output(cmd,
                                         stderr=subprocess.STDOUT,
                                         shell=True,
                                         universal_newlines=True)
        if int(result.strip()) == 1:
            return False
        else:
            return True
1
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2024/04/08, 16:09:09
Ambari自定义服务开发-自定义脚本运行
Ambari自定义服务开发问题处理-中文乱码

← Ambari自定义服务开发-自定义脚本运行 Ambari自定义服务开发问题处理-中文乱码→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式