标签: kill

在linux bash中杀死一个进程子树

我正在键入一个小的bash脚本,它应该克隆一个git存储库,签出一个特定的硬编码分支并监听一些新的提交.如果发现新的提交,脚本应该杀死正在运行的'MyApp'实例,执行git pull并最终使用gradle构建它.它也应该再次通过gradle开始.

是的,它是一个带有gradle构建文件的java应用程序.

这是我的代码:

##!/bin/bash

# GitHub Repository and Paths
GLOBAL_REPOSITORY="..."
LOCAL_REPOSITORY="..."

# Go to the repository
cd $LOCAL_REPOSITORY

# Clone the git repository if not already done
if [ ! -d "$LOCAL_REPOSITORY/.git" ]
then
  git clone $GLOBAL_REPOSITORY $LOCAL_REPOSITORY
  git checkout dev
fi

# Pull and build if there are new commits
LAST_GLOBAL_COMMIT=""
LAST_LOCAL_COMMIT=""

CHILDS_PID=""

while true; do
  git fetch origin

  LAST_GLOBAL_COMMIT="$(git rev-parse origin/dev)"
  LAST_LOCAL_COMMIT="$(git rev-parse dev)"

  if [ "$LAST_GLOBAL_COMMIT" != "$LAST_LOCAL_COMMIT" ]
  then
    if [ "$CHILDS_PID != "" ] …
Run Code Online (Sandbox Code Playgroud)

linux bash kill process pkill

6
推荐指数
0
解决办法
100
查看次数

如果我在构建 testcover 过程完成之前终止了它,我可以强制 Perl Devel::Cover 生成覆盖报告吗?

如果我能够成功启动 Devel::Cover 并且它开始在 cover_db 目录中收集数据,那么我是否可以终止该进程,然后在事后获取 Devel::Cover 或其他一些实用程序来处理这些二进制 Devel::将运行文件和结构文件覆盖到 HTML 覆盖率报告中?

以另一种方式提出问题......我可以使用 Devel::Cover 来获取我无法停止的进程的覆盖率报告,除了终止进程吗?

这个问题与:Selenium 执行时如何获得 Perl CGI 脚本的代码覆盖率?

perl reporting code-coverage kill

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

如何终止正在进行的请求 Request 对象

编辑:在此修订/更新之前这个问题的主要部分是如何终止 QThread。这个问题已经解决了,问题正在修改为如何终止正在进行的请求剩余对象。

http://docs.python-requests.org/en/v0.10.4/user/advanced/#asynchronous-requests 看来使用异步请求仍然会阻塞 - 用户无法在发布过程中取消发布。

基本上这是所需的功能:当用户按下 时Stop Uploading,上传必须立即停止,我可以使用 stop() 停止线程,但是只有在循环再次循环后才会检查是否应该停止。

所以基本上,应该可以使用异步请求,让我检查是否应该在请求期间取消它,但是,我不知道如何取消。

有什么建议么?帖子的前一部分仍然相关,因此如下。
请注意,如何终止 QThread 的最初问题已经解决,因此下面的代码并不是太重要,它只是用于上下文,我现在需要帮助的是我刚才描述的内容。




我一直在编写一个程序,它是一个照片上传器,我创建了一个上传文件的线程。我不知道如何退出线程。我尝试过从这里读到的建议:

1)我尝试了一个 bool 标志,将它包裹在方法和执行工作的 for 语句周围。

2)我使用了“with”,然后尝试设置例外。

我希望能够取消上传,最好是尽快取消。我读过很多文章,总是建议在终止线程之前“清理”线程,老实说,我不知道“清理”是什么意思。但是,我认为我应该能够终止该线程 - 因为它所做的只是将图像的二进制数据发送到 TUMBLR api。如果提前取消请求也没关系,因为它也会取消 api 中的上传。

无论如何,这是我的主题:

class WorkThread(QtCore.QThread):
    def __init__(self):
        QtCore.QThread.__init__(self)
        global w
        w = WorkThread
    def __del__(slf):
        self.wait()        
    def run(self):
        url = 'https://www.tumblr.com/api/write'
        files = os.listdir(directory)
        for file in files:
            file_path = os.path.join(directory + '\\' + file)
            file_path = str(file_path)
            if file_path[-3:] in ['bmp', 'gif', 'jpg', 'png', 'thm', …
Run Code Online (Sandbox Code Playgroud)

python multithreading kill qthread python-requests

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

Bash脚本在Ctrl + C上杀死背景(大)孩子

我有一个Bash脚本(Bash 3.2,Mac OS X 10.8),它可以并行调用多个Python脚本,以便更好地利用多个内核.每个Python脚本都需要很长时间才能完成.

问题是,如果我在Bash脚本中间按Ctrl + C,Python脚本实际上不会被杀死.如何编写Bash脚本以便杀死它也会杀死所有后台子节点?

这是我原来的"简化测试案例".不幸的是,我似乎已经减少了太多,以至于它不再表现出问题; 我的错.

set -e

cat >work.py <<EOF
import sys, time
for i in range(10):
    time.sleep(1)
    print "Tick from", sys.argv[1]
EOF

function process {
    python ./work.py $1 &
}

process one
process two
wait
Run Code Online (Sandbox Code Playgroud)

这是一个完整的测试用例,仍然大大减少,但希望这个将证明问题.它在我的机器上再现......但是,两天前,我认为我的机器上再现了旧的测试用例,今天它肯定没有.

#!/bin/bash -e
set -x

cat >work.sh <<EOF
for i in 0 1 2 3 4 5 6 7 8 9; do
    sleep 1; echo "still going"
done
EOF
chmod +x work.sh

function kill_all_jobs { jobs -p …
Run Code Online (Sandbox Code Playgroud)

bash shell kill process wait

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

防止POSIX xargs尝试运行空命令

我对bash不太好,但我正在尝试创建一个脚本来杀死一些java进程:

/usr/ucb/ps -auxww    \
  | grep 'XUnit'      \
  | grep -v 'grep'    \
  | cut -c -2000      \
  | awk '{print $2;}' \
  | xargs kill
Run Code Online (Sandbox Code Playgroud)

cut这里使用的是因为awk行过长而失败(请参阅awkLINE_MAXPOSIX规范中的限制参考).

当没有这样的进程时会出现问题 - xargs尝试kill不带参数运行,从而导致错误.

我的xargs不接受-r或者--no-run-if-emptyargs,正如在没有指定POSIX合规性的相关问题的答案中所建议的那样.

shell posix kill xargs

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

我怎样才能杀死所有线程?

在此脚本中:

import threading, socket    

class send(threading.Thread):

    def run(self):
        try:
            while True:
                try:
                    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    s.connect((url,port))
                    s.send(b"Hello world!")
                    print ("Request Sent!")
                except:
                    s.close()
        except KeyboardInterrupt:
            # here i'd like to kill all threads if possible

for x in range(800):
    send().start()  
Run Code Online (Sandbox Code Playgroud)

是否可以杀死除键盘中断之外的所有线程?我在网上搜索过,是的,我知道已经有人问过这个问题了,但我对Python真的很陌生,而且我对堆栈上提出的其他问题的方法不太了解。

python multithreading kill terminate python-3.x

5
推荐指数
1
解决办法
2万
查看次数

重新加载gunicorn工人需要很长时间才能加载

我有一个 Nginx+Gunicorn+Flask 应用程序,它使用机器学习模型提供一些 API。该模型存储在一个大文件中,需要很长时间(大约一分钟)才能加载到内存中。现在我想更新模型文件并在不停机的情况下重新启动工作程序。如何配置gunicorn(或其他东西)等待新进程加载?

仅仅发送kill -HUP似乎不足以达到目的。在新进程加载之前发出的请求似乎被丢弃。

python kill application-restart flask gunicorn

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

如何防止Python杀掉代码

我有一个相当长的 Python 3 代码,它对许多图像进行过采样,然后将它们拟合为 2D 高斯分布,以查找图像中源的相关参数(质心坐标、幅度等),将其移动到中心,标准化,然后堆叠所有这些都以中位数结束。我正在尝试使用大约 50,000 张图像的数据来做到这一点。我已经提取了数据并从以前的代码中保存了它,这给了我一个名为 的文件中所有图像数据(numpy 数组)的二进制文件initial_data.data,并且我还使用了 astropy wcs 包来找到对质心坐标的良好猜测,因此它们也保存(以相同的顺序)在centroid_coords.data. 当我第一次尝试在所有图像上运行我的代码时,它Killed在代码的过采样部分期间说道。然后我决定尝试将所有图像分成几个小节,并一次在一个小节上运行代码。如果只是几个小节,这还可以,但如果我必须一次只处理 5,000 张图像,那就太乏味且不切实际了!下面是我的代码的其余部分,其中我尝试了三分之一的小节,并尝试仅对第一个进行操作(因此我在1第一个用户输入行之后输入)。

import pickle
import numpy as np
import re
from scipy import optimize, interpolate
from astropy.io import fits
from astropy.nddata import Cutout2D

frac = int(input('Subset 1, 2, or 3? ')) # select which subset of images to operate on
oversampled_file = 'oversampled_images_frac%d.data' % (frac)
params_file = 'gparams_2D_frac%d.data' % (frac)
final_images_file = 'images_b4stacking_2D_frac%d.data' % (frac)
FWHM_file = 'FWHM_2D_frac%d.data' …
Run Code Online (Sandbox Code Playgroud)

python memory kill generator python-3.x

5
推荐指数
0
解决办法
958
查看次数

如何使用高级 asyncio API 干净地终止子进程?

这是我尝试使用高级 asyncio 子进程 API过早终止子进程的程序:

import asyncio

async def test():
    process = await asyncio.create_subprocess_shell(
        "sleep 2 && echo done",
        stdout=asyncio.subprocess.PIPE,
    )
    await asyncio.sleep(1)
    process.kill()
    await process.wait()
    # process._transport.close()

asyncio.run(test())
Run Code Online (Sandbox Code Playgroud)

退出时,它将以下内容写入stderr

$ python3.9 test.py

Exception ignored in: <function BaseSubprocessTransport.__del__ at 0x1065f0dc0>
Traceback (most recent call last):
  File "/usr/local/Cellar/python@3.9/3.9.2_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_subprocess.py", line 126, in __del__
    self.close()
  File "/usr/local/Cellar/python@3.9/3.9.2_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_subprocess.py", line 104, in close
    proto.pipe.close()
  File "/usr/local/Cellar/python@3.9/3.9.2_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/unix_events.py", line 536, in close
    self._close(None)
  File "/usr/local/Cellar/python@3.9/3.9.2_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/unix_events.py", line 560, in _close
    self._loop.call_soon(self._call_connection_lost, exc)
  File "/usr/local/Cellar/python@3.9/3.9.2_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 746, …
Run Code Online (Sandbox Code Playgroud)

python subprocess kill python-3.x python-asyncio

5
推荐指数
0
解决办法
778
查看次数

如何快速关闭VS Code中所有打开的终端?

如何快速关闭VS Code中所有打开的终端?

我有很多打开的终端,我可以一一检查它们并分别杀死它们。或者我可以选择其中的一些,然后杀死选定的批次。但这两种方法都不方便,因为它们需要大量时间。我至少有 10000 个开放终端,而在一批中我可以选择几百个。

有没有办法一次性杀死所有终端?

在此输入图像描述

terminal kill batch-processing visual-studio-code

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