我想创建一个bash脚本,它将启动两个进程并在第一个进程完成时终止第二个进程.这是一个例子:
#fork first process producer& #fork second process consumer& #wait for producer to finish ... #kill the consumer ...
我有一种感觉,这可能会变得丑陋,但有一个非常简单的解决方案.请帮我填空.
atm我试着让我的应用程序解决"onSaveInstanceState"和"onRestoreInstanceState",但是我越深入,问题就越多.
所以,例如,我刚刚意识到,通过这两个函数恢复一个活动是没有用的.因为,如果我按下后退按钮并返回之前的活动,这个没有得到它的"savedInstanceState"包,而是完全重新创建.
有没有办法恢复整个应用程序而不只是一个活动?或者这只是一个奇怪的设计,我甚至不打扰恢复一个活动?
亲切的问候,水母
编辑:好的,傻我...
我的主要活动所获得的包不是空的,而只是在"onRestore ..."中.在"onCreate"中它确实是空的,但这一直是真的.(例如,无论我是否在杀人后从另一项活动中回来)
所以现在我以另一种方式感到困惑:我之前在另一个活动中测试了这个,并且在那里,savedInstanceState包的"onCreate"和"OnRestoreInstanceState"在哪里相同!这只是随机或主要活动的特殊内容吗?(尝试了不同的发射模式,但它们没有影响).
好吧,我再次提出另一个令人沮丧的问题.我需要结束我的主进程并重新启动它,但我不能只是优雅地结束应用程序...
我正在将C#应用程序与专有(不是我)数据捕获硬件结合使用,因此它已经很复杂了.
有一种情况,我的软件正在愉快地运行,收集它应该的数据,当我与之接口的硬件突然断电和与我的应用程序的连接时.我的应用程序最终解决了这个问题,我只需要处理我的旧连接,然后重新连接到我的硬件.错误...
当然,我的对象(带有硬件的接口对象)上的.Dispose()方法终止连接什么都不做,实际上当我尝试运行它时,它就永远锁定到位.显然,在断开发生时,需要设备连接的配置方法永远不会超时.我没有写这个方法,所以我真的不知道.
最后,这是我的问题.让我的应用程序重新启动并再次运行的唯一方法是关闭它并重新打开它.当然,我实际上无法很好地关闭它因为我无法运行Dispose方法.我被迫通过任务管理器结束它的过程.是的,这个过程,而不仅仅是应用程序.如果我关闭它,这个过程将永远存在,我别无选择.
我需要找到一种方法来自动化这个过程暗杀,这样我的用户才能真正使用它,但我该怎么办?我知道流程终止是禁忌,但我有什么选择?
我喜欢使用Application.Restart(),但这根本不起作用,我的表格甚至没有关闭,它只是锁定.有没有办法在告诉自己重新启动之前解决这个过程?也许我可以使用批处理文件或其他东西吗?Application.Exit至少将表单从屏幕上移除.
截至目前,我正在从任务管理器中删除它,或者我的用户通过弹出PC上的断路器来杀死它.比任何软件方面都要严厉得多.
我有一个僵尸进程:
$ ps aux | grep Zl
root 6641 122 0.0 0 0 ? Zl 08:57 371:10 [ovs_dpdk] <defunct>
Run Code Online (Sandbox Code Playgroud)
而且,其父项看起来像 init
$ pstree
init???acpid
??atd
??cron
??dbus-daemon
??dnsmasq
??6*[getty]
??irqbalance
??libvirtd???10*[{libvirtd}]
??ovs_dpdk???{ovs_dpdk} <==== here
??rpc.idmapd
Run Code Online (Sandbox Code Playgroud)
但是,杀死-9并不会杀死他...
sudo kill -9 6641
Run Code Online (Sandbox Code Playgroud)
我被困在这里,有什么帮助吗?
我发出命令 task1 & task2 dir/ && task3 &
发行:jobs -l将显示:
[1]- 39281 Running task1 &
[2]+ 39282 Running task2 && task3 &
Run Code Online (Sandbox Code Playgroud)
发行:ps将显示:
39281 ttys002 0:04.17 task1
39282 ttys002 0:00.00 task2
39283 ttys002 0:03.66 task3
Run Code Online (Sandbox Code Playgroud)
问题:
目标: 发出一行命令来初始化工作流并将其发送到后台.准备就绪时,一次性杀死所有已启动的进程.
对于上下文而言,在我的情况下,task1是一个带有livereload的grunt任务,所以它应该被发送到后台.Task2更改目录,以便task3可以监视该目录中更改的文件.
我尝试用终止进程sudo kill 30602。但是在我杀死它之后,我使用它ps aux | grep gmond进行检查,并再次显示另一个pid,就像:
ganglia 30997 0.0 0.1 121812 2128 ? Ssl 16:05 0:00 /usr/sbin/gmond --pid-file=/var/run/ganglia-monitor.pid
Run Code Online (Sandbox Code Playgroud)
无论我如何杀死它,它都会再次显示另一个pid,即使使用kill -9。
有什么问题?以及如何解决呢?
我想看看Python程序如何通过使用该模块发出命令来自杀sys.我怎么能用以下形式的命令让它自杀呢?:
os.system(killCommand)
Run Code Online (Sandbox Code Playgroud)
编辑:强调清晰
所以,为了清楚起见,我希望有一个在shell中运行的字符串可以杀死Python程序.
可能是由内核的建议在此问题。我想知道为什么我被杀,就像发生暗杀一样。:)
此外,我能做些什么使我的程序正常执行吗?
编年史
我的程序正常执行。但是,我们遇到了一个很大的数据集,即1.000.000 x 960浮点数,我家里的笔记本电脑无法拿走它(给出了std::bad_alloc())。
现在,我在实验室中,台式机配备9.8 GiB,处理器3.00GHz×4,其内存是家用笔记本电脑的两倍多。
在家里,数据集无法加载到std::vector存储数据的。在这里,在实验室中,这已经完成,程序继续构建数据结构。
那是我最后一次听到的消息:
Start building...
Killed
Run Code Online (Sandbox Code Playgroud)
实验室中的桌面在Debian 8上运行。我的程序针对数据集的子集(特别是1.00.000 x 960浮点数)按预期运行。
编辑
strace 输出最终可用:
...
brk..
brk(0x352435000) = 0x352414000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f09c1563000
munmap(0x7f09c1563000, 44683264) = 0
munmap(0x7f09c8000000, 22425600) = 0
mprotect(0x7f09c4000000, 135168, PROT_READ|PROT_WRITE) = 0
...
mprotect(0x7f09c6360000, 8003584, PROT_READ|PROT_WRITE) = 0
+++ killed by SIGKILL +++
Run Code Online (Sandbox Code Playgroud)
所以这告诉我们,我的记忆了,我猜。
我需要创建自动脚本,该脚本会杀死特定Java JAR的运行进程。
我是这样手动进行的:
jps -v
6753 Jps
4573 myJarToKill.jar
4574 notMyJarToKill.jar
4576 myJarToKill.jar
Run Code Online (Sandbox Code Playgroud)
我根据JAR名称选择特定的进程,例如myJarToKill.jar并运行以杀死它们。
kill 4573 4576
Run Code Online (Sandbox Code Playgroud)
是否可以像这样通过grep或sth获取此进程的数量?通过它杀死命令?
我一直在玩分布式shell示例,我注意到当我杀死长时间运行的应用程序时,该过程仍然存在.例如,如果我sleep 1000在容器启动几秒后使用命令终止了一个distshell应用程序,则仍会显示一个进程
yarn 33138 0.0 0.0 2432752 508 ?? S 12:20PM 0:00.00 sleep 1000
Run Code Online (Sandbox Code Playgroud)
我认为YARN会对清理子进程有好处吗?也许这仅适用于JAVA流程?