stderr

supervisor 托管ELK

℡╲_俬逩灬. 提交于 2020-04-01 09:26:46
一、说说前因后果 elasticsearch,kafka,zookeeper,kibana,elasticsearch-head,logstash,logstash是需要经常重启的,你上了点过滤规则或者修改点啥的,每次都尼玛杀进程,再nohup ,还看不到日志,这太不符合人性了,人性的优点之一就是懒惰。打开web 界面,点一下鼠标解决问题岂不是棒棒哒,还能通过web 界面看看后台日志,故而用supervisor托管 supervisor运行的系统:centos 7 supervisor version:3.3.4 二、安装 用easy_install 安装pip easy_install pip #之后通过pip 安装supervisor pip install supervisor #为supervisor创建工作目录与配置文件目录并且赋予该目录755 的权限; mkdir -m 755 -p /etc/supervisor/conf.d #通过supervisor 提供的 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisor/supervisord.conf #通过cat 命令查看配置文件是否生成; cat /etc/supervisor/supervisord.conf |grep

supervisor 托管ELK

╄→гoц情女王★ 提交于 2020-04-01 09:18:05
一、说说前因后果 elasticsearch,kafka,zookeeper,kibana,elasticsearch-head,logstash,logstash是需要经常重启的,你上了点过滤规则或者修改点啥的,每次都尼玛杀进程,再nohup ,还看不到日志,这太不符合人性了,人性的优点之一就是懒惰。打开web 界面,点一下鼠标解决问题岂不是棒棒哒,还能通过web 界面看看后台日志,故而用supervisor托管 supervisor运行的系统:centos 7 supervisor version:3.3.4 二、安装 用easy_install 安装pip easy_install pip #之后通过pip 安装supervisor pip install supervisor #为supervisor创建工作目录与配置文件目录并且赋予该目录755 的权限; mkdir -m 755 -p /etc/supervisor/conf.d #通过supervisor 提供的 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisor/supervisord.conf #通过cat 命令查看配置文件是否生成; cat /etc/supervisor/supervisord.conf |grep

python-进程与线程 六

不想你离开。 提交于 2020-03-27 23:40:48
Subprocess 模块:   作用1:它通过主进程,生成一个子进程,来执行一个操作系统命令,然后返回执行结果。这个结果可以存储到变量里,做后续使用   作用2:某个命令指向之后的结果,还可以传递给另外一个命令   在CMD中 >>> import os >>> a = os.system('dir') 驱动器 C 中的卷是 OS 卷的序列号是 DC49-453A C:\Users\admin\PycharmProjects\test1 的目录 2020/03/27 20:16 <DIR> . 2020/03/27 20:16 <DIR> .. 2020/03/27 20:20 <DIR> .idea 2020/03/26 09:33 1,091 generator.py 2020/03/27 16:31 502 hello.py 2020/03/20 23:16 426 index.html 2020/03/16 08:03 <DIR> parent_directory 2020/03/27 20:16 270 test1.py 2020/02/11 11:32 <DIR> venv 2020/03/16 15:16 <DIR> __pycache__ 4 个文件 2,289 字节 6 个目录 113,394,843,648 可用字节 >>> a # 无法获取上面的数据

Redirect STDOUT and STDERR to python logger and also to jupyter notebook

吃可爱长大的小学妹 提交于 2020-03-25 16:06:45
问题 Important to know: I am working on jupyter notebook. I want to create a logger to which I will redirect the STDOUT and STDERR but I also want to see those outputs on the jupyter notebook output console. So far what I have implemented is: import logging import sys class StreamToLogger(object): """ Fake file-like stream object that redirects writes to a logger instance. """ def __init__(self, logger, log_level=logging.INFO): self.logger = logger self.log_level = log_level self.linebuf = '' def

常用模块介绍

孤街醉人 提交于 2020-03-25 03:10:27
subprocess模块 它是可以远程操作主机,模拟shell命令 'dir'是windows上查看任务的命令 import subprocess obj = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #Popen是模拟cmd命令,'dir'是windows上查看任务的命令,shell=True是指可以用shell命令了, 输出和错误,放到管道(PIPE)里 # print(obj.stdout.read().decode('gbk')) #打印输出的内容 # print(obj.stderr.read().decode('gbk')) #打印错误的内容 res = obj.stdout.read() + obj.stderr.read() #错误和输入放到一起给变量res print(res.decode('gbk')) #打印res 在linux里可以创建python脚本,写入 import subprocess obj = subprocess.Popen('ls;lsblk', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #Popen是模拟cmd命令,'dir

Python超级无敌技巧分享

风流意气都作罢 提交于 2020-03-18 18:02:26
这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。 注意:很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python实战教程免非下,,一起相互监督共同进步! 1 排列组合 示例程序: #!/usr/bin/env python # coding=utf8 import itertools for p in itertools.permutations('ABC', 2): print p ''' ('A', 'B') ('A', 'C') ('B', 'A') ('B', 'C') ('C', 'A') ('C', 'B') ''' for c in itertools.combinations('ABC', 2): print c ''' ('A', 'B') ('A', 'C') ('B', 'C') ''' 通过itertools模块,可以很方便实现元素的排列和组合。由示例中可以看到,分别从ABC三个字母中取2个字母,实现其排列和组合,itertools模块还有很多有用功能,感兴趣可以看看。 2 创建临时文件 示例程序: #!/usr/bin/env python # -*- coding:

Shell 输入/输出重定向

左心房为你撑大大i 提交于 2020-03-16 08:05:01
大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取 输入。 重定向命令列表如下: 命令 说明 command > file 将输出重定向到file. command < file 将输入重定向到file. n > file 将文件描述符为n的文件重定向到file. n >> file 将文件描述符为n的文件以追加的方式重定向到file. n>&m 将输出文件m和n合并. n<&m     将输入文件m和n合并. <<tag     将开始标记tag和结束标记tag之间的内容作为输入. 需要注意的是文件描述符0通常是标准输入(STDIN),1 是标准输出(STDOUT),2是标准错误输出(STDERR). 输出重定向 重定向一般通过在命令间插入特定的符号来实现,特别的,这些符号的语法如下所示: command > file1 上面这个命令执行command1然后将输出的内容存入file1. 注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符. 实例 执行下面的who命令,他将命令的完整的输出重定向在用户文件中(users): $ who > users 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。

subprocess模块

荒凉一梦 提交于 2020-03-14 15:43:19
  subprocess模块 允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获取标准的输入、标准输出、标准错误以及返回码等。 Popen类   subprocess模块中定义了一个Popen类,通过它可以来创建进程,并与其进行复杂的交互。 Popen类的构造函数如上图,其主要参数为:    args :是一个字符串或者序列类型(如:字符串、list、元组),用于指定进程的可执行文件及其参数。如果是一个序列类型参数,则序列的第一个元素通常都必须是一个可执行文件的路径。当然也可以使用executeable参数来指定可执行文件的路径。   stdin,stdout,stderr :分别表示程序的标准输入、标准输出、标准错误。有效的值可以是PIPE,存在的文件描述符,存在的文件对象或None,如果为None需从父进程继承过来,stdout可以是PIPE,表示对子进程创建一个管道,stderr可以是STDOUT,表示标准错误数据应该从应用程序中捕获并作为标准输出流stdout的文件句柄。   shell :如果这个参数被设置为True,程序将通过shell来执行。   env :它描述的是子进程的环境变量。如果为None,子进程的环境变量将从父进程继承而来。   cwd :用于设置子进程的当前目录。    universal_newlines :不同系统的的换行符不同

第12 章 显示数据

落爺英雄遲暮 提交于 2020-03-08 07:05:08
12.1 了解输入和输出 12.1.1 标准文件描述符 linux 使用文件描述符,标识每个文件对象 STDOUT 和 STDERR STDERR 时shell 发送 错误消息的 目的地,默认情况下 STDERR 和 STDOUT文件描述符 指向相同的位置,即显示器。重定向 STDOUT 不会自动重定向 STDERR 12.1.2 重定向错误 ls -al badfile 2> test4 文件重定向符必须位于 > 前 ls -al test1 test2 test3 2>test5 (文件test1 test2 存在)屏幕会显示1 ,2 信息 ,test3的错误信息 会重定向到test5 2. 重定向错误和数据 如果需要重定向 错误 和 输出, 需要两个 文件重定向符 ls -al test1 test2 test3 2>test5 1>test6 1> 重定向 STDOUT 2> 重定向STDERR 也可以将 STDOUT 和 STDERR 重定向 到一个文件 (&) ls -al test1 test2 test3 &> test5 12.2 在脚本中重定向输出 12.2.1 临时重定向 如果想故意在脚本中生成错误消息,可以将单个输出行重定向到 STDERR ,需要做的只是使用 输出重定向 符号,将 输出 重定向到 STDERR文件描述,还必须在文件描述符前面添加& echo

宏的使用

僤鯓⒐⒋嵵緔 提交于 2020-03-06 16:42:36
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean value type. */ typedef unsigned long int uint32; /* Unsigned 32 bit value */ typedef unsigned short uint16; /* Unsigned 16 bit value */ typedef unsigned char uint8; /* Unsigned 8 bit value */ typedef signed long int int32; /* Signed 32 bit value */ typedef signed short int16; /* Signed 16 bit value */ typedef signed char int8; /* Signed 8 bit value */ //下面的不建议使用 typedef