标签: kill

在perl中重定向输出时fork exec kill的问题

我在perl中创建了一个脚本来运行超时的程序.如果正在执行的程序需要更长的时间,那么超时将比脚本终止该程序并返回消息"TIMEOUT".

脚本工作得很好,直到我决定重定向执行程序的输出.

当stdout和stderr被重定向时,脚本执行的程序没有被杀死,因为它的pid与我从fork获得的pid不同.

似乎perl执行一个shell,在重定向的情况下执行我的程序.

我想有输出重定向但仍能够在超时的情况下终止程序.

有关如何做到这一点的任何想法?

我的脚本的简化代码是:

#!/usr/bin/perl

use strict;
use warnings;
use POSIX ":sys_wait_h";

my $timeout = 5;
my $cmd = "very_long_program 1>&2 > out.txt";

my $pid = fork();
if( $pid == 0 )
{
   exec($cmd) or print STDERR "Couldn't exec '$cmd': $!";
   exit(2);
}
my $time = 0;
my $kid = waitpid($pid, WNOHANG);
while ( $kid == 0 )
{
   sleep(1);
   $time ++;
   $kid = waitpid($pid, WNOHANG);
   print "Waited $time sec, result $kid\n";
   if ($timeout > 0 && …
Run Code Online (Sandbox Code Playgroud)

perl redirect fork kill

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

为什么android'复活'崩溃的应用程序?

如果你有一个Android应用程序有多个活动,活动A启动B,所以如果活动b崩溃,该过程被杀死但由Android操作系统恢复并再次启动活动A而不是仅仅关闭应用程序,为什么?

android kill android-activity

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

如何处理硒崩溃

我目前正在使用每小时运行的硒RC自动化测试.一切都运行顺利,但有时候火狐会崩溃或硒RC只会挂起,因为这两个问题,测试不会继续,而且会停滞不前.有谁知道如何使firefox.exe和/或java.exe(selenium实例)在崩溃或挂起时被杀死,因此测试可以恢复.我看到的问题是当firefox或selenium挂起时自动检测并自动通过脚本将其杀死.

谢谢!

firefox selenium kill process selenium-rc

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

#!/ usr/bin/env和进程名称:价格可移植性?

使用#有很多好的 理由!在/ usr/bin中/ env的.底线:它使您的代码更具可移植性.好吧,有点儿.看一下这个....


我有两个几乎相同的脚本, bintest.py

#! /usr/bin/python
import time
time.sleep(5*60)
Run Code Online (Sandbox Code Playgroud)

envtest.py

#! /usr/bin/env python
import time
time.sleep(5*60)
Run Code Online (Sandbox Code Playgroud)

请注意,他们只是在他们的shebangs不同.


bintest.py 按预期运行

br@carina:~$ ./bintest.py & ps && killall bintest.py
[1] 15061
  PID TTY          TIME CMD
14625 pts/0    00:00:00 bash
15061 pts/0    00:00:00 bintest.py
15062 pts/0    00:00:00 ps
br@carina:~$ 
[1]+  Terminated              ./bintest.py

envtest.py做的事情不是最优的

br@carina:~$ ./envtest.py & ps && killall envtest.py
[1] 15066
  PID TTY          TIME CMD
14625 pts/0    00:00:00 bash
15066 pts/0    00:00:00 python
15067 …

command-line portability kill shebang environment-variables

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

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

退出eclipse并保持Java应用程序运行?

如何在不杀死eclipse中启动的应用程序的情况下退出Eclipse?我知道在调试模式下启动的应用程序与Eclipse有一个网络链接,但在发布模式下启动的应用程序应该没有问题.但是,无论我如何结束eclipse(甚至杀死进程)都会在几秒钟后杀死已启动的应用程序,无论这些程序中的重要未保存数据如何.

动机?可以是任何:eclipse内部错误请求重启,需要释放更多内存(eclipse是330MiB),由进程资源管理器意外杀死.

java eclipse kill exit

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

在终止风暴拓扑之前如何调用特定方法

在终止风暴拓扑之前如何调用特定方法。

我已经在风暴中创建了一个拓扑,我想在拓扑被杀死之前调用特定的方法。

在Storm框架中是否有任何预定义的替代方法或任何可用的方法来做到这一点。

提前致谢:)

java topology kill apache-storm

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

完成后如何停止iperf服务器?

客户端完成后,该过程将自动关闭。我想在服务器端执行相同的操作,因为我想使某些进程自动化,但是服务器端完成但仍保持打开状态。

unix kill process iperf

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

MongoDB被linux杀死了

我的mongoDB总是在没有被访问的几个小时内收到KILL信号,我不知道原因.

我正在使用:
SO:Ubuntu 16.04,512MB内存.
在pm2中运行节点7.5.0.
MongoDB版本3.4.1

状态mongod:

mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: signal) since Fri 2017-06-02 06:25:06 BRT; 9h ago
 Docs: https://docs.mongodb.org/manual
Process: 1334 ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf (code=killed, signal=KILL)
Main PID: 1334 (code=killed, signal=KILL)

May 29 19:12:16 admin systemd[1]: Started High-performance, schema-free document-oriented database.
Jun 02 06:25:06 admin systemd[1]: mongod.service: Main process exited, code=killed, status=9/KILL
Jun 02 06:25:06 admin systemd[1]: mongod.service: Unit entered failed state.
Jun 02 06:25:06 …
Run Code Online (Sandbox Code Playgroud)

linux signals kill mongodb

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

在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
查看次数