我对linux和这个论坛非常陌生。我正在为一个客户解决一个问题,他们有10+ Red Hat Linux5.5 64位服务器。他们希望在某些服务器上使用stop脚本(该脚本使用'kill -15')停止tomcat进程,该脚本运行良好,并在几秒钟内停止tomcat进程。在一些服务器上,有时它会很快停止,有时它会持续运行几分钟,最后客户不得不使用'kill -9‘命令来停止tomcat。日志不会显示任何内容。
你知道为什么这个脚本会有间歇性的行为吗?我们怎样才能在日志中捕获它呢?
从Python脚本中,我希望在一个新线程中打开vlc,并允许用户干净地关闭它(仍然是从这个脚本)。看来send_signal()指令实际上并没有关闭vlc,我做错了什么?
import subprocess
import signal
s = subprocess.Popen("vlc", shell=True)
raw_input("Press Enter to stop vlc...")
s.send_signal(signal.SIGINT)
print "waiting for vlc to exit..."
s.wait()
编辑:为
每当我想通过键入以下命令来停止在RaspBMC中运行mpd服务器时:
service mpd stop
控制台显示了典型的[ ok ]消息:
[ ok ] Stopping Music Player Daemon: mpd.
但是服务并没有真正停止(进程一直在运行)。我在服务脚本中进行了深入搜索,并找到了启动停止守护进程的调用:
start-stop-daemon --stop --quiet --oknodo --retry 5 --pidfile ~/.mpd/pid --exec /usr/bin/mpd
如果我在控制台中执行此命令(没有--quiet选项),将得到以下消息:
No /u
我正在尝试使用以下代码限制ruby进程的执行时间:
trap("XCPU") do
abort "Max Time exceeded"
end
Process.setrlimit(:CPU, 5)
loop do
end
进程确实结束了,但是陷阱代码没有运行(我只是在命令行上被“杀死”了)。但是,当我将硬限制设置为大于5的值时,陷阱代码将运行
trap("XCPU") do
abort "Max Time exceeded"
end
Process.setrlimit(:CPU, 5, 6)
loop do
e
我有一个测试脚本,它需要打开一个进程(一个Pyro服务器),做一些调用打开的进程获取信息的事情,当所有这些都完成后,需要关闭进程。这都是在临时服务器上进行自动化测试的一部分。
在python 2.6中,您可以这样做:
pyro_server = subprocess.Popen(['python', 'pyro_server.py'])
# Do stuff, making remote calls to the Pyro server on occasion
pyro_server.terminate()
遗憾的是,我在这里工作时被锁定在python2.4中,
我有一个大型存储库(Android实例),我试图缩小.git文件夹的大小(目前为76G),因为构建的空间正在耗尽。
我试着从git gc --prune=now --aggressive中运行,但失败了,出现了以下错误:
git gc --prune=now --aggressive
Enumerating objects: 998206, done.
Counting objects: 100% (998206/998206), done.
Delta compression using up to 16 threads
error: pack-objects died of signal
我需要编写一个脚本来自动化捕获和发送数据的过程。
我有脚本mqtt.py(在我的Raspberry上),它经常在myFile.dat中捕获和存储数据。我使用rsync命令将文件从我的Raspberry Pi发送到我的pc。
我需要运行mqtt.py脚本开始捕获数据,让我们说,在1分钟后,进程停止,文件被发送到我的pc,然后捕获进程再次启动,1分钟后,同样的事情再次发生。
我试图编写脚本,但缺少了杀死进程mqtt.py的命令。
while(true) do
python mqtt.py #Capturing and storing data in myFile.dat
echo "Pr
我为一个设计为在linux上运行的应用程序设置了一个信号处理程序,如下面的c++所示:
设置信号处理程序以调用静态函数:
// Setup the SIGNTERM signal handler for kill/pkill or systemd terminate
if (signal(SIGTERM, manager_signal_handler) == SIG_ERR)
{
ERROR << "Failed to add signal SIGTERM to signal handler with error code: " << std::
在另一个 on of 中,这位评论员说:
除非绝对必要,否则不要使用杀伤-9!SIGKILL不能被捕获,所以被杀死的程序不能运行任何关闭例程,例如擦除临时文件。首先尝试HUP(1),然后是INT(2),然后退出HUP(3)
我原则上同意SIGKILL,但其他的对我来说都是新闻。考虑到kill发送的默认信号是SIGTERM,我认为它是任意进程优雅关闭的最常见的信号。此外,我还看到SIGHUP用于非终止性的原因,例如告诉守护进程“重新读取您的配置文件”。在我看来,SIGINT (和Ctrl通常会遇到的中断一样,对吧?)并没有得到应有的广泛支持,也没有很好地终止。
考虑到SIGKILL是最