首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python记录运行pid,并在需要时

跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环,直到分配给该进程的任务都跑完才退出的。...如果我们想中途结束掉这些任务,是没办法手工一个一个kill掉的。那么该如何结束这些进程呢?   我的方法就是在运行爬虫进程时,记录该进程的Pid,然后需要手动结束时,再用语句kill掉它们。...for i in {1..100} do nohup python NetEase_comms_proxy.py > hehe.dat 2>&1 & echo $!...>> run.pid sleep 10 done 上述语句完成了将脚本在后台运行100便,并且将pid append到run.pid文件中。其中nohup 是 no hang up的缩写命令。...其他的程序可能会share这些进程的Pid,这样如果在运行kill脚本的时候,可能附带就把这些进程也给Kill掉了,造成不必要的麻烦。

90720

Node.js 抓取数据过程的进度保持

听到爬虫二字,我们常常想到的是 Python, Beautiful Soup 之流,而对于简单地抓取数据这种需求来说,一个小米加步枪就能干掉的东西,拉个加农炮来,显得有些大材小用。...,再次启动,脚本得重头开始跑,这显然有点不够智能,有没有办法实现在程序中断过后再次启动时让程序恢复上次的进度?...迭代,实际上是用固定数目的状态变量表示当前程序的状态的计算过程。迭代计算过程中,程序根据之前设定好的规则从一个状态转移到下一个状态,直到状态不再满足某个设定条件才结束。...这个变量存在于内存,而内存中的状态随着程序的中止而消失,所以关键在于如何把这个状态固定到磁盘数据库等地方。这里能想到的思路是,程序启动时把状态加载进来,状态更新的同时把它固定下来。...有没有什么办法把这些操作集中起来?

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

解决问题,别扩展问题

那么有没有办法让我遍历结束日志的时候能很轻松地找到开始日志里面对应的那条请求日志呢?...eee fff 我只需要记录每一个 unique_id 结束日志里的的行数,查找开始时间时,直接取开始日志里的对应行就可以了。...由于脚本是完全同步运行的,所以子进程耗时很长,主进程的 read 也只能等待,导致整个脚本的耗时增加。 为了验证我的猜测,我把脚本简写后,使用 time 命令统计了耗时分布。 #!...我忽然注意到脚本里的一个循环 for j in `seq $i $total`, 这个语句也创建了子进程,那它跟主进程之间的交互就是问题了所在了, 脚本运行初期,$i 非常小,而 $total 是结束日志的总行数...针对 X 问题提出了一个方案,方案实施过程中,遇到了问题 Y,于是不停地查找 Y 问题的解决办法,而忽略了原来的问题 X。

88210

内存泄漏测试方法及其python实现

方法一中,工具的原理一般是通过检查当程序动态分配内存后,是否有释放来判断有没有发生内存泄漏。其优点很明显,发现泄漏时能很方便定位到代码的具体哪个地方泄漏内存。...作为测试人员,真正关心的难道是程序结束时内存有没有free吗?不然。绝大多数的进程原本就该持续运行永不结束(至少我们希望是这样),测试人员真正关心的是进程所使用的内存是基本稳定的,还是持续增长的。...综上, Bamboo OS测试人员根据方法二总结了内存泄漏测试方法,并利用python实现了工具脚本。  3、linux内存管理机制   Linux的内存管理机制,网上的资料很多,就不多谈了。...mytest,并周期性的查看ntpd进程的rss内存和私有内存信息   4)主程序初始时和结束时获取了一次ntpd进程的完整pmap信息,方便在怀疑ntpd存在内存泄漏时进行进一步的定位分析。...因为想进一步分析内存的变化,所以对比了程序执行前后ntpd的pmap信息。可以看到结束时,pmap信息里多了更多的大小为4K的分页。

1.7K10

手把手 | 嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!

总有对应的Python库让你轻松完成任务。 然而,Python的运营速度一直饱受诟病。默认状态下,Python程序使用单个CPU的单个进程。...也就是说,当你程序运行结束的时候,你的计算机有75%或者更多的计算资源都是空置的! 让我们来看看如何通过并行运算充分利用计算资源。...即便我的程序把那个CPU核完全占满,但是其他3个CPU核什么也没干。我们需要想办法把整个程序的工作量分成4份然后平行运行。所幸Python可以做到这一点!...四个Python程序分别在4个CPU上运行,跟之前1个CPU运行相比大概可以达到4倍的速度,对不对? 好消息是Python可以帮我们解决并行运算麻烦的部分。...Python的zip()函数可以一步获取原始文件名以及相应结果。 下面是经过三步改动之后的程序: 让我们试着运行一下,看看有没有缩短运行时间: 2.274秒程序就运行完了!这便是原来版本的4倍加速。

1.4K50

Mysql DDL出现长时间等待MDL问题分析

然后登陆到目标机器,查看端口号对应的进程,通过lsof命令查看 lsof -i tcp:52951 从图中可以看出,是一个python进程的mysql连接开启的事物,进程id为5436 ?...这个脚本正是测试aiomysql的python脚本,内容比较简单 import asyncio import aiomysql loop = asyncio.get_event_loop() @asyncio.coroutine...这个问题抛出,通过with打开连接获取游标后,执行mysql,但是没有commit之前,会锁表,这个期间修改表都会出现等待 下面近给出了解答,并没有看到更多的深层次的说明,先记录下,解决办法就是创建连接池的时候...start transaction开始的操作 AC-NL-RO(auto-commit non-locking read-only): auto commit 开启之下的select操作 b....为什么需要MDL锁 当事务本身执行的时候理论上是不能容忍表结构中途发生改变的

1.3K10

CPU被挖矿了,却找不到哪个进程

通过修改LD_PRELOAD环境变量/etc/ld.so.preload文件,配置动态链接库,实现将其注入到目标进程中。...内核级隐藏 模块注入的方式是应用层执行函数HOOK,隐藏挖矿进程,更进一步,可以通过加载驱动程序的方式在内核空间HOOK相应的系统调用来实现隐藏。...揪出挖矿进程 通过上面的进程隐藏原理看得住来,都是想尽办法隐藏/proc目录下的内容,类似于“障眼法”,所以包含ps、top、ls等等在内的命令,都没办法看到挖矿进程的存在。...于是退而求其次,选择通过源码安装,又是一直各种报错··· 因为我没办法亲自操作这台服务器,沟通起来比较麻烦,于是我决定研究下这个unhide工具的源码,然后编一个python脚本发给他执行。...按照这个思路,我编写了一个Python脚本发给这位朋友,执行后果然发现了隐藏的进程: ?

3.1K20

PWK 以及 OSCP 常见问题

考虑参加 PWK的 学生应具有 TCP/IP 网络,Linux 和 Bash 脚本编写的一些经验。具备 Python Perl 的基本知识。...那么关于考试呢 考试,监考以及认证流程没有变化,但是具体内容有没有改变,官方肯定也不会透露。 2020 年的更新会影响 lab 报告么 旧的报告包含旧的机器的联系仍然有效。...如果在中途升级的话,你的旧的报告依然有效。不过如果为了获取那额外的 5分,你需要结合新旧机器里面的联系。...其他前提包括对 TCP/IP 网络有扎实的理解以及合理的 Windows 和 Linux 管理经验,熟悉基本的 Python Perl 更好。...专业发展 ISC2 课程结束时提交练习文档通过认证挑战后,PWK会 授予学生 40(ISC² CPE 学分 CREST 官方与 CREST 达成协议,OSCP等同于 CRT 级别 2

2.3K30

逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃的位置?

你想看看这条有问题的数据,但是现在程序已经崩溃了,进程结束了,这条有问题的数据也就永久丢失了。你再也不可能知道它长什么样了。...那么,Python里面我们有没有什么办法程序起死回生,看到当初导致程序报错的那一行代码呢?如果你是使用python3 xxx.py运行的程序,那么确实,除非你能重新导入刚才的数据,否则无法知道。...我们恢复一下 Redis 的数据(当然,在生产环境里面你可能就没有办法恢复了。...但现在写文章的示例数据,我还是可以回复的^_^) 然后使用python3 -i read_name.py重新运行这个程序: ? 可以看到,现在虽然程序崩溃了,但是却出现了 Python 的交互环境。...进程并没有完全退出。这样一来,我们就可以输入魔法指令,让程序倒退回到报错的那个地方。输入命令: import pdb pdb.pm() 运行效果如下图所示: ? 现在,我们已经回到了报错的那一行了。

74150

python之调用系统命令 原

一、python中执行cmd 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码...使用os.popen调用test.sh的情况:python调用Shell脚本,有两种方法:os.system(cmd)os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容...Popen的方法: Popen.poll() 用于检查子进程是否已经结束。设置并返回returncode属性。 Popen.wait() 等待子进程结束。...windows平台下,该方法将调用Windows API TerminateProcess()来结束进程。 Popen.kill() 杀死子进程。...Windows 下 Python 脚本以管理员方式执行 Windows 命令或者程序:https://testerhome.com/topics/11793 }

2.2K40

十一假期即将结束 不如复习下Python基础

Python是动态类型语言,指的是你声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。...迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。...即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。 解决办法就是下面的“可读取确认”。...三、Web框架 1.CGI和WSGI CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据文件等。...WSGI, Web Server Gateway Interface,是Python应用程序框架和Web服务器之间的一种接口,WSGI的其中一个目的就是让用户可以用统一的语言(Python)编写前后端

65110

今天不如来复习下Python基础

Python是动态类型语言,指的是你声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。...迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。...即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。 解决办法就是下面的“可读取确认”。...而是调用发出后,被调用者通过状态、通知来通知调用者,通过回调函数处理这个调用。...WSGI, Web Server Gateway Interface,是Python应用程序框架和Web服务器之间的一种接口,WSGI的其中一个目的就是让用户可以用统一的语言(Python)编写前后端

1.1K50

为 Node.js 应用建立一个更安全的沙箱环境

大多数都是一些客户端程序一些在线的系统和产品中也常常也有类似的需求,事实上,在线的应用中也有不少提供了自定义脚本的能力,比如 Google Docs 中的 AppsScript,它可以让你使用 JavaScript...与运行在「用户电脑中」的客户端应用不同,用户的自定义脚本通常只能影响用户自已,而对于在线的应用服务来讲,有一些情况就变得更为重要,比如「安全」,用户的「自定义脚本」必须严格受到限制和隔离,即不能影响到宿主程序...浏览器中,还可以利用 iframe,创建一个再多安全一些的隔离环境,本文着眼于 Node.js,在这里不做过多讨论。 Node.js 中呢,有没有其它选择?...require('vm2'); new VM().run('this.constructor.constructor("return process")().exit()'); 如上代码,并没有成功结束掉宿主程序...相较于内建的 VM 及常见的几个沙箱模块, Safeify 具有如下特点: 为将要执行的动态代码建立专门的进程池,与宿主应用程序分离不同的进程中执行 支持配置沙箱进程池的最大进程数量 支持限定同步代码的最大执行时间

2.2K10

vim编辑时遇到E325: ATTENTION Found a swap file by the name “..backu.sh.swp”错误代码的解决办法「建议收藏」

这种情况多半发生在你上次编辑脚本或者其他文件,中途因为某些原因,强制杀死进程,或者强制退出导致的。...对比windows系统下,我们编辑文件强制退出,我们也会遇到这样的提示,正常打开word时,如左图所示,当我们没有保存文档时,强制结束进程时,下次打开这个文档会出现右图所示的情景。...问题原因: 我们通过错误E325的提示可以知道,出现这种情况的原因有两种,其一,是当前有其他的进程正在对相同的文档进行编辑;其二,之前的编辑会话被销毁了(crashed)(也就是说,你上次编辑的时候...解决办法: 当我们知道了这个机制,我们就要考虑如何去解决这种问题。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144180.html原文链接:https://javaforall.cn

85210

Supervisor使用详解

一、supervisor简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。...= relative/directory/*.ini ;可以指定一个多个以.ini结束的配置文件 子进程配置文件说明: 给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d.../目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。...command=/usr/bin/python /opt/bin/test.py #supervisor启动的时候是否随着同时启动,默认True autostart=true #当程序exit的时候...解决办法:使用ps -fe | grep supervisord查看所有启动过的supervisord服务,kill相关的进程

44820

刷题外传之如何优雅的杀掉进程

进程的启动 启动进程其实最简单,假如我们有一段 Python Script (hello.py): print “hello world” 运行它非常容易: python hello.py 然后一个新的进程就产生了...进程的终结 重点来了,进程的终结相对复杂,来看看一些常见情况: 程序运行很短(如上例),运行之后正常结束程序运行时间长,小白用户烦了,Ctrl + C 硬关; 程序运行时间长,程序员烦了,kill.../ pkill; 程序运行时间长,一定要关死它(立即马上),kill -9 显然,关闭进程的方式多种多样,最理想的是,它正常结束。...对于 SIGINT & SIGTERM, 如果程序没有注册处理信号的方法,那么默认的行为是结束进程。...比如程序和数据库打交道,如果中途被 SIGITN 或者 SIGTERM,可以做点 logging (记录下为什么要结束),然后 mark job/state as failure 之类。

1.7K60

PostgreSQL 管理PG 的 4个 自制小脚本

转到本期的主体,POSTGRESQL 自制小脚本管理PG,这个问题是最近自己没有办法办法,主要在于云上的POSTGRESQL,需要更快速和更专业的快速响应,当然线下的PG 也可以用这些脚本。...主要的思想是,通过批量的灵活的脚本,最终产生在上端产生一个管理这些脚本和使用这些脚本的WEB 程序,集中快速的管理PG 数据库。...整体的脚本全部用PG 的函数撰写,后期可能用存储过程撰写,有人会问,为什么不用 GO ,PYTHON ,哪怕SHELL 撰写。...目前写了4 个小的脚本,下面简单的说说功能 1 pg_stat_activity 表信息的收集工具 这里主要解决的问题是,发生系统CPU 内存等系统资源告急的情况下,一般都需要对当前的连接的信息进行收集...程序中包含一个核心的地方,就是删除的进程前,会保留要清理的进程,因为清理进程后,会有相关的人员,问,你到底清理了那些进程,此时如果手动,估计你也说不行,而这个命令的特殊性就在于,清理前会记录,可以进行查询

68110

Python线程、协程探究(一)——Python多线程困境

这样的结果就是,这个拥有2个纯CPU计算线程的python程序进程运行结束需要8s,因为每个时刻,python进程中永远只有一个线程再被运行。那这就很胃疼了,这么看似乎python的多线程就没用了?...也不是的, 上述情况下多线程没用,是因为我们假定的是每个线程运行代码都是纯CPU计算过程,不会遇到IO等阻塞操作,只执行结束或者“轮转时间片”到了之后才会被切换,( 之所以打引号,是因为python的多线程调度的轮转时间片并不是常规...image.png image.png 我们可以看到,顺序执行的过程中,只有一个子线程执行my_counter(), 主线程由于等待子线程执行结束,所以每次获得GIL锁之后又会立马释放锁...运行时间为10.5s, 第二个程序中,我们同时创建两个子线程,“同时运行”my_counter(),python程序进程运行过程中,会有三个线程被调度切换,两个子线程“同时运行”程序,时间非但没有缩短...这个例子中,我们看到频繁的线程切换开销还是很高昂的, 这样的话,我们就干脆用python的单线程好了,但是单线程进程运行过程中当线程被阻塞时任务就停滞了,有没有一种办法,既能让单线程进程即使运行到阻塞操作如读取文件时

1.8K500

Python做个微信自动回复机器人

2.增强功能 这时功能基本已经完成了,这就结束了吗?别着急,再想想有没有需要完善一下的地方?用过微信web端的同学应该知道,当web端长期处于未操作的状态下会失去连接。...我们这个情况下,假如你长时间未收到微信消息,后台程序将会与微信失去连接,再次开启需要登上服务器重启程序,这显然非常麻烦。有没有什么简单的解决办法呢?...这里需要注意,如果仅用python xxxx.py来运行的话,关闭shell会导致进程结束,所以我们需要使用nohup python xxxx.py &来全方位守护进程,这里啰嗦一句,nohup和&的功能是不一样的...Python真的非常有趣,可以做很多事情,细心的发现生活里面的一些点点滴滴,用技术去改变生活。也许这个小脚本并不是很复杂,但是通过这样的练习,你会有极大的成就感。...感谢寒食君的投稿,他是一个非常具有工匠精神的程序员,加油! Python玩微信是不是很酷,欢迎留言讨论!

2.2K40

Python RASP 工程化:一次入侵的思考

Tips: RASP,全称应用运行时自我保护解决方案,可以简单理解为部署应用环境的监控防御程序。...现有的防御办法是静态分析,通过抓取Python 进程参数,匹配关键字,比如exec,decode,base64 就会很容易发现。但是如果咱们脑暴一下做一次静态策略绕过,你会发现静态分析是多么的脆弱。...到此为止,Python RASP的所有的技术点都结束了。。。呼吸一口新鲜空气。。。 第五节 亦正亦邪 技术点结束了,下面就需要落地了。...落地的过程中,有以下问题需要注意: 数据压制:Agent采集函数日志的时候,因为很多Python程序都是做周期性任务,重复数据会很多。...设计策略的过程中,注意收集一些执行命令和网络的函数,在下一篇我会列举出来。 大家有没有想过Python RASP中使用的技术,是不是特别像木马后门。这可能就是所谓的技术本没有好坏,看你怎么用罢了。

2K20
领券