我想根据命令名称杀死一个 java 进程......最好的方法是什么?
(即当您ps -f在CMD列中输入名称时)。
感谢您花时间检查我的问题。
我目前正在处理一个以前只出现过一次的问题。回到 1 月 3 日,当它第一次出现时,我们能够重新启动服务器,一切似乎都很好,但现在又回来了。这是一个生产数据库系统,因此有时很难找到重新启动的窗口。我希望在我们几天后再次重新启动以提供另一个临时解决方案之前,能够牢牢掌握这次可能发生的实际情况。开始了...
相关系统的用户身份验证通过 Red Hat Directory Server 9 使用 LDAP 处理。下面描述的问题仅在这台服务器上出现,即使是共享数据库的对应服务器也不会显示相同的症状。截至目前,没有任何 LDAP 帐户能够进行身份验证并登录到服务器。LDAP 身份验证正在由 SSSD 处理,目前无法停止或重新启动。尝试执行任一操作时,SSH 控制台都没有响应。(ctrl-c 无法退出发出的命令)
PS 显示通常的 sssd 相关进程正在运行,但kill -9对它们的尝试似乎并没有成功阻止它们中的任何一个。
ps aux | grep sss | grep -v grep
root 1150 0.0 0.0 150828 2908 ? D 09:05 0:00 /usr/libexec/sssd/sssd_nss -d 0 --debug-to-files
root 7025 0.0 0.0 93616 2504 pts/2 D 16:18 0:00 /usr/sbin/sssd -f -D
root 11148 0.0 0.0 179436 5672 ? D Jan08 16:22 /usr/libexec/sssd/sssd_be -d 0 --debug-to-files --domain …Run Code Online (Sandbox Code Playgroud) 像这样杀死正在运行的守护进程 systemd 服务有什么区别:
kill -SIGKILL 3645
和
systemctl -s kill -SIGKILL 3645
其中 3645 是 systemd 服务的 pid。使用第一种方法有什么缺点吗?
最近我们有一个 SQL 作业插入到数据库中。该查询已不必要地运行了几天,因此使用 KILL SPID 将其终止。然后这个过程开始回滚好几天,似乎只是挂在那里。
运行 KILL SPID WITH STATUSONLY 给出一条消息,指出“估计完成”为 100%,“估计剩余时间”为 0 秒。
最终,我们不得不重新启动删除该进程的 SQL 服务。
我的问题是 - 你应该如何杀死 SQL 进程?这是唯一的方法吗?
似乎我的服务器由于使用了过多的 RAM 而杀死了一个进程。这可能吗?如果它可以发生,我怎么知道它杀死的时间和进程?
我们有一个在 Mac OS X 上运行的 Java 服务器应用程序。
有时这个应用程序变得没有响应,我们不得不使用kill -9. 然而,这个过程并没有消失;它似乎仍然是ps,其名称周围带有括号,并且 STAT 列中有一个问号:
$ ps u -p 776
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
camadmin 776 0.0 0.0 0 0 ?? ?E 5:12PM 0:00.00 (java)
Run Code Online (Sandbox Code Playgroud)
更重要的是,服务器正在使用的端口仍然是绑定的:
$ netstat -na | grep 9902
tcp4 0 0 *.9902 *.* LISTEN
Run Code Online (Sandbox Code Playgroud)
即使它不可见lsof:
$ sudo lsof -P -i tcp | grep 9902
$
Run Code Online (Sandbox Code Playgroud)
由于端口仍然绑定,我们无法重新启动服务器应用程序。没有重新启动机器,可以做些什么来释放端口并真正杀死这个进程?
我们已经经历过几次了。突然我们的生产服务器不会响应,因为一个进程处于无限循环中,或者 MySQL 服务器停止服务新请求,因为一个查询阻塞了一切......
我们通过 SSH 连接到服务器并使用ps auxortop找到罪魁祸首,mytop或者SHOW FULL PROCESSLIST在 MySQL 中找到违规的进程 ID 和kill它。然后我们尝试在测试服务器上重新创建这种情况并修复错误。
但有时服务器挂得太好了,您ps aux/ top/ mytop/SHOW FULL PROCESSLIST无法通过 - 甚至管理员也被阻止。
确保管理员始终可以访问服务器并终止违规进程或查询(在 Linux 和 MySQL 上)的最佳方法是什么?
我已经检查过nice(1),但不断地与 nice -20 建立开放连接似乎有点过分且难以使用(更不用说作为 root 的危险了)。
我现在正在运行 PHP 脚本,root 权限从以下几行开始:
set_time_limit(0);
ini_set('log_errors', 1);
ini_set('error_log', "log.txt");
Run Code Online (Sandbox Code Playgroud)
它是由 web 管理面板从 root 用户作为 cron 任务意外启动的。现在脚本正在将类似这样的事情引起的警告写入while(!feof($file_handle))文件,将其大小增加 10 兆字节/秒。
我没有对网站的控制台 root 访问权限,由于时差,服务器所有者不可用。我只能以 root 身份运行命令,每分钟一次,使用 web 面板中的 cron(如你所知,没有输出)。
如何阻止我的脚本浪费系统资源?现在我每分钟都使用相同的 cron 脚本删除文件,因此服务器可以继续工作。不幸的是,我的 linux 知识不足以在没有帮助的情况下解决这个问题。
我在屏幕上运行 perl 脚本(我可以登录并检查调试输出)。脚本逻辑中的任何内容都不能杀死它。
我是仅有的两个可以访问服务器的人之一,另一个人发誓不是他(我们都有很多钱可以继续顺利运行)。我没有理由相信某些黑客已经设法获得了一个 shell 或类似的东西。我几乎没有理由怀疑主机操作的管理员(带宽/cpu 方面,这个脚本非常轻量级)。
Screen 继续运行,但在 perl 脚本的输出结束时,我看到“Killed”并且它已回落到提示。我如何去测试什么是该死的东西?
我检查了 crontab,里面没有任何东西可以杀死随机/非随机进程。任何日志文件中都没有任何提示。它将运行 2 到 8 小时,看起来(在我家里的 Mac 上,它可以运行 24 小时以上没有问题)。服务器正在运行 Ubuntu 版本,如果重要的话,我可以查一下。
我在 Debian GNU/Linux 上。“kill”的手册页说我可以使用负 PID 值来杀死进程组,但是在命令行上运行时,它不起作用:
$ /bin/kill -9 -21581
/bin/kill: invalid option -- '2'
Usage:
kill [options] <pid> [...]
etc.
Run Code Online (Sandbox Code Playgroud)
使用 bash 内置 kill 时,它工作正常。