草庐IT

linux - 从 shell (gentoo amd64) 杀死 linux socket

伙计们,在Linux中从shell中终止已建立连接的最佳方法是什么?看起来有“tcpkill”和“cutter”工具可用,但是,在我的gentooamd64上,tcpkill被“amd64”关键字和cutter禁用,当使用时,打印错误“openning/proc/net/ip_conntrack:没有这样的文件或目录”。还有其他方法可以终止连接吗?谢谢。 最佳答案 2.4_beta1-r4ofdsniff(包含tcpkill)“仅”标记为~amd64,因此您可能还是想试一试。(虽然不完全是一个编程问题......)

linux - 为什么进程在 4GB 时被杀死?

我编写了一个处理大量数据的程序。我的CPU和操作系统(Ubuntu)都是64位的,我有4GB的内存。使用“top”(%Mem字段),我看到进程的内存消耗上升到大约87%,即3.4+GB,然后它被杀死了。然后我使用“uname-m”检查一个进程可以访问多少内存,结果是“无限制”。现在,由于操作系统和CPU都是64位的,并且还存在一个交换分区,操作系统应该使用虚拟内存,即总共[>3.4GB+yGBfromswapspace]并且仅当进程需要更多时内存,它应该被杀死。所以,我有以下问题:一个进程理论上可以在64位m/c上访问多少物理内存。我的答案是2^48字节。如果存在少于2^48字节的物理

java - Selenium 服务器在被 SIGTERM 杀死后不绑定(bind)到套接字

在被杀死一次后,selenium服务器在所有进一步启动时挂起,甚至没有尝试获取服务器端口。重启解决问题。以不同的用户身份运行也会使selenium再次启动,但是在那个进程被杀死后它就不再工作了。这是在VirtualBoxVM中的Linux2.6.32-5-amd64(debiansqueeze)上。在working时查看系统调用的日志和whenit'snot,某些组件似乎在套接字绑定(bind)之前就锁定了。seleniumlog没有太大帮助。输出也没有给出任何指示:$java-jarselenium-server-standalone-2.28.0.jarDec27,20125:41

linux - 使用 shell 脚本杀死 vim 进程会留下 .swp 文件

我开发了一个脚本来杀死所有正在运行的“vim”进程xxx.log文件:ps-ef|grepvim|grepxxx.log|awk'{print$2}'|xargskill-9但是,.swp(交换)文件会为每个被杀死的vim实例保留。我怎样才能在同一个脚本或其他一些简短的解决方案中删除交换文件而不搜索交换的位置等? 最佳答案 从kill中删除-9;这将向Vim发送TERM(inate)信号,允许它清理并删除交换文件(至少它在Ubuntu上对我这样做了)。通过使用-9/KILL,您不会给进程清理的机会。这应该只用于绝对必要的情况(例如,

php - 无法杀死 PHP 脚本

我正在Namecheap共享服务器上开发一些PHP脚本。我不小心做了一个似乎无限期(或很长时间)的循环,所以现在我试图使用SSH终止它。我用top查看了一个正在运行的进程列表,找到了行为异常的PHP脚本,并尝试用kill将其终止。然而,在我用这个命令杀死它之后,当我尝试使用ps时,它仍在运行!ps的结果:PIDTTYSTATTIMECOMMAND819520?S0:00/usr/bin/php/my/php/file.php我试过一遍又一遍地终止进程,但它就是死不了!SSH是有限的,所以我不能使用像killall这样的命令。我该怎么办??! 最佳答案

linux - 当一个进程被杀死时,这些信息会记录在任何地方吗?

问题:当进程被杀死时,该信息是否记录在任何地方(即内核中),例如syslog(或者可以配置为记录在syslog.conf中)是否是凶手的PID、被杀时间日期及原因等信息update-大家给了我一些启发,非常感谢| 最佳答案 如果您的Linux内核编译时启用了进程记帐(CONFIG_BSD_PROCESS_ACT)选项,您可以使用accton(8)命令开始记录进程记帐信息并使用sa(8)访问记录的信息。记录的信息包括32位退出代码,其中包括信号编号。(这些天这些东西并不广为人知/使用,但我仍然记得在VAXes上的4.xBsd时代...

linux - 如何保护我的进程不被杀死?

我们在Linux之上有一个关键任务服务器程序,我们不希望其他人意外终止它。如果有人终止它或它崩溃,我们希望它重新启动。所以我们打算再写一个程序,比如说程序B。我们希望程序B和服务器程序互相保护。如果我们的服务器程序退出,程序B将重新启动它。如果程序B终止,服务器程序将再次启动它。但是我们没有一个好的机制可以让程序B和服务器程序在其对等退出时得到通知。 最佳答案 您可以使用init来照看进程,并且由于init仅在重新启动时终止,因此您不需要“程序B”。在/etc/inittab的末尾添加:x:3:respawn:/path/to/my

php - 杀死用popen()打开的进程?

我正在使用popen()打开一个长时间运行的进程。为了调试,我想在进程完成之前终止它。调用pclose()只会阻塞直到子进程完成。如何终止进程?我没有看到任何简单的方法来从popen()返回的资源中获取pid,以便我可以向它发送信号。我想我可以做一些笨拙的事情,并尝试使用某种命令行hackery将pid伪造到输出中...... 最佳答案 好吧,找到了解决方案:我切换回了proc_open()而不是popen()。然后就这么简单:$s=proc_get_status($p);posix_kill($s['pid'],SIGKILL);

PHP - 杀死由 pcntl_fork 启动的子进程

我正在使用pcntl_fork启动子进程以通过SMTP发送电子邮件。子进程使用PEARMail包发送电子邮件,但问题是如果远程服务器不响应,则进程将永远运行以等待响应,而不管php.ini中设置的任何时间限制.为了解决这个问题,我使用pcntl_alarm函数在30秒后触发一个函数,如果子进程仍在运行,它会终止它。functionhandlesig($sig){global$pid,$node,$resend;posix_kill($pid,SIGKILL);mysql_query("insertintolog(event)values('Timedout!')");}当我杀死子进程时

linux - 我怎样才能用 Perl 杀死整个进程树?

从Perl脚本中终止进程及其所有子进程的最佳方法是什么?它应该至少在Linux和Solaris下运行,并且不需要安装任何额外的包。我的猜测是通过解析/proc中的文件或通过解析ps的输出来获取所有进程及其父进程的列表(两者似乎都无法在Linux和Solaris之间移植);然后杀死树中的所有进程(这似乎容易出现竞争条件)。在这种特殊情况下,我可以忍受竞争条件,但我如何可移植地获取进程列表? 最佳答案 如果您可以忍受终止进程组,您可以使用以下命令:kill-$signum,$pgid;其中$signum是信号编号,$pgid是进程组ID