小编Chr*_*ris的帖子

如何查找/杀死特定的python程序

此 VM 中运行着两个不同的 Python 程序

一个是监控文件夹然后“做事”的后台工作(有几个工人)

10835 ?        Sl     0:03 python main.py
10844 ?        Sl    34:02 python main.py
10845 ?        S     33:43 python main.py
Run Code Online (Sandbox Code Playgroud)

第二个是通过脚本启动的

20056 pts/1    S+     0:00 /bin/bash ./exp.sh
20069 pts/1    S+     0:00 /bin/bash ./exp.sh
20087 pts/1    S+     0:10 python /home/path/second.py
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来找到只杀死主程序的方法(我想构建一个 cron 看门狗),但没有成功

第一个我只想找到挂起的“python main.py”进程(伴随着 [defunct]),但我什至无法单独找到这个进程。

上面的来自 ps -ax(所以它们当前都在运行) pgrep 'python' 返回所有 PID,也来自我不想要的 second.py :(没有用,因此 pkill 也是如此)

pgrep 'python'
10835
10844
10845
20087
Run Code Online (Sandbox Code Playgroud)

pgrep 'python main.py' 总是返回空, pgrep 'main.py 也是如此;

唯一有效的东西

ps ax | grep 'python main.py' …
Run Code Online (Sandbox Code Playgroud)

linux bash grep ps

6
推荐指数
2
解决办法
9932
查看次数

postgreSQL不使用temp_tablespace

我目前在运行某些查询时遇到空间问题,postgreSQL用尽了临时空间。查询会生成几GB的列表(它们已经是碎片)

目前,我想通过将temp_tablespace移动到另一个文件夹来解决此问题,然后再移动整个数据库。

等/ postgresql.conf

temp_tablespaces = '/var/lib/postgresql/9.2/importdb02/tmp_consDB'
Run Code Online (Sandbox Code Playgroud)

/var/lib/postgresql/9.2/importdb02/

drwxr-xr-x  2 postgres postgres 4096 May 22 12:08 tmp_consDB
Run Code Online (Sandbox Code Playgroud)

postgresql:postgresql是该文件夹的所有者,我重新启动了该文件,但postgreSQL仍未使用此表空间进行查询。

当我运行查询并通过DF监视可用空间时,它仍在使用那些临时表的主表空间,我还可以看到/var/lib/.../base/pgsql_tmp文件夹在增加,而temp_tablespace文件夹保持空着。

所有查询看起来像这样

COPY(
SELECT  column_a,
        column_b,
        (around 8 group by columns)
        sum(tosumup),
        sum(tosumup)
        (up to 100 sum columns)
FROM    master_table
WHERE   id>=25000 AND id<50000 (running in batches)
GROUP BY
        group by colums
) TO stdout WITH DELIMITER ';' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)

我在这里想念什么?

我的替代解决方案是将/ base / pg_tmp链接到另一个驱动器,但这就是黑客的版本。


我是在Clodoaldo Neto的回答后这样做的

作为postgres

CREATE TABLESPACE tempimpdb02 LOCATION '/var/lib/postgresql/9.2/importdb02/tmp_consDB';
Run Code Online (Sandbox Code Playgroud)

/ var /等

temp_tablespaces = 'tempimpdb02'
Run Code Online (Sandbox Code Playgroud)

重新启动,检查一切

postgres=# SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql

1
推荐指数
1
解决办法
5577
查看次数

标签 统计

bash ×1

grep ×1

linux ×1

postgresql ×1

ps ×1