- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过早于 x 的正则表达式终止所有进程 - 但没有找到任何进程!
dep@srv-05:~$ ps aux | grep sidekiq
dep 6154 65.5 4.8 4652148 3170540 ? Ssl 10:00 32:35 sidekiq 4.2.6 au [1 of 8 busy] stopping
dep 6172 80.8 4.3 4462376 2897480 ? Ssl 10:20 23:52 sidekiq 4.2.6 au [8 of 8 busy]
dep 9099 89.9 1.7 2216372 1167664 ? Ssl 10:48 1:23 sidekiq 4.2.6 au [8 of 8 busy]
dep 9548 86.8 1.6 2624832 1097428 ? Ssl 10:48 1:16 sidekiq 4.2.6 au [8 of 8 busy]
dep 14196 0.0 0.0 13224 2076 pts/17 S+ 10:50 0:00 grep --color=auto sidekiq
dep 21933 84.8 4.2 4342940 2792592 ? Ssl 10:41 7:34 sidekiq 4.2.6 au [8 of 8 busy]
dep 26466 29.5 5.8 5116960 3822876 ? Ssl 09:07 30:18 sidekiq 4.2.6 au [1 of 8 busy] stopping
dep 27790 64.3 4.8 5074216 3210584 ? Ssl 09:58 33:34 sidekiq 4.2.6 au [3 of 8 busy] stopping
dep 29695 87.4 3.1 3405204 2094332 ? Ssl 10:44 4:53 sidekiq 4.2.6 au [7 of 8 busy]
dep 29850 0.2 5.0 4663268 3296372 ? Ssl mar02 12:42 sidekiq 4.2.6 au [1 of 8 busy] stopping
dep 29919 87.5 2.7 3207616 1805844 ? Ssl 10:45 4:35 sidekiq 4.2.6 au [8 of 8 busy]
dep@srv-05:~$ killall -o 24h -r sidekiq.*au.*stopping
sidekiq.*au.*stopping: no process found
但不知何故它不起作用?
更新
删除 -o 24h
没有帮助:
dep@srv-05:~$ killall -r sidekiq.*au.*stopping
sidekiq.*au.*stopping: no process found
最佳答案
我写了一个thing关于这个。
当不需要检查命令参数时,将是完美的工具,只考虑进程名称。
-o, --older-than Match only processes that are older (started before) the time specified. The time is specified as a float then a unit. The units are s,m,h,d,w,M,y for seconds, minutes, hours, days, weeks, Months and years respectively.
-r, --regexp Interpret process name pattern as an extended regular expression.
例子:
pkill -f "sidekiq.*au.*stopping"
解决了隐藏参数的问题:
-f
Match the pattern anywhere in the full argument string of the process instead of just the executable name.
但是没有提供一种按耗时对进程进行排序的方法。
让我们回到老 friend 身边 ps
.
来自 man 页面:
-e Select all processes.
-o format user-defined format.
AIX 格式描述符
This ps supports AIX format descriptors, which work somewhat like the formatting codes of printf(1) and printf(3). For example, the normal default output can be produced with this:
ps -eo "%p %y %x %c"
CODE NORMAL HEADER
%C pcpu %CPU
%G group GROUP
%P ppid PPID
%U user USER
%a args COMMAND
%c comm COMMAND
%g rgroup RGROUP
%n nice NI
%p pid PID
%r pgid PGID
%t etime ELAPSED
%u ruser RUSER
%x time TIME
%y tty TTY
%z vsz VSZ
首先,要杀死一个进程,我们需要它的PID
,然后获取它运行了多长时间,最后获取命令名称及其参数。
这可以通过使用上表中提到的代码的格式字符串来完成:
ps -eo "%p>~<%t>~<%a"
注意:选择一个复杂字符串作为字段之间的分隔符很重要 >~<
,我们不希望在命令名称或 args 中找到相同的名称来混淆我们的数据。
为了处理这个输出,让我们组成一个 awk
一步一步。
在ps
手册页:
etime
ELAPSED elapsed time since the process was started, in the form[[dd-]hh:]mm:ss
因此,第二个字段中的破折号 表示该程序已运行至少 24 小时。
例子:
$ ps -eo "%p>~<%t>~<%a" | awk -v '$2 ~ /-/' FS='>~<'
528>~<49-04:37:37>~</sbin/udevd -d
746>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log800 86400
747>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log445 86400
748>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log1447 86400
749>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log450 86400
2170>~<49-04:37:14>~</sbin/rsyslogd -i /var/run/syslogd.pid -c 5
2204>~<49-04:37:14>~<irqbalance --pid=/var/run/irqbalance.pid
2270>~<49-04:37:14>~</usr/sbin/mcelog --daemon
6892>~<49-04:37:01>~</usr/sbin/snmpd -LS0-6d -Lf /dev/null -p /var/run/snmpd.pid
6920>~<49-04:37:01>~<xinetd -stayalive -pidfile /var/run/xinetd.pid
注意:FS
设置为 ps
中使用的字符串格式:>~<
最后一步,检查是否 command
+ args
( %a
) 包含我们的 regexp
,对于此示例,rotatelogs 字符串。
$ ps -eo "%p>~<%t>~<%a" | awk -v r="rotate.*access.*" '$2 ~ /-/ && $3 ~ r' FS='>~<'
746>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log800 86400
747>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log445 86400
748>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log1447 86400
749>~<21-08:21:52>~</dummys/apache/bin/rotatelogs -f /logs/access_log450 86400
让我们只打印 pids。
$ ps -eo "%p>~<%t>~<%a" |\
awk -v r="rotate.*access.*" '$2 ~ /-/ && $3 ~ r{printf "%d ",$1}' FS='>~<'
746 747 748 749
Bash command substituion
将做出最后一招。
$ kill $(ps -eo "%p>~<%t>~<%a" |\
awk -v r="rotate.*access.*" '$2 ~ /-/ && $3 ~ r{printf "%d ",$1}' FS='>~<')
kill $(ps -eo "%p>~<%t>~<%c %a"|\
gawk -v r="sidekiq.*au.*stopping" '$2~/-/ && $3 ~ r{print $1}' FS='>~<')
如果你想最好控制app
和 args
值(value)观:
kill $(ps -eo "%p>~<%t>~<%c>~<%a"|\
gawk -v app="sidekiq" -v args="au.*stopping" '$2~/-/ && $3 ~ app && $4 ~ args{printf "%d ",$1}' FS='>~<')
关于bash - 杀死所有早于 x 的进程,匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42622496/
如何在终止父进程时关闭我的子文件描述符? 我创建了一个执行以下操作的程序: 派生 2 个子进程。 进程 1 是一个读取器。它从 STDIN_FILENO 读取并使用 scanf/printf 写入 S
我试着写了一个小的暴力破解程序。密码程序在密码正确时返回 1,错误时返回 0。所以它很简单。 在 bruteforce 程序中,我使用 createprocess() 调用 pw 程序。 我的问题是,
谁能帮我解释一下我从一本书中得到的这个脚本。练习是编写一个名为 killalljobs 的脚本来终止所有后台作业。 为此给出的代码是: kill "$@" $( jobs -p) 我确定我在这里真
我正在开发一个包含许多库的应用程序。后来我注意到有几次应用程序进程在关闭应用程序后仍在耗尽 CPU。 我先终止了进程,但它继续运行。我卸载了该应用程序 - 但它仍然存在! (使用开发人员选项中的“显示
有没有办法在无人机完成或超时之前杀死它? 无人机的默认超时时间为 6 小时 ( https://github.com/drone/drone/blob/master/cmd/drone/drone.g
我有几个自动启动的菜单栏程序/进程/应用程序。我希望能够使用单个命令或脚本将它们全部关闭;有时带宽受到限制或受限,它们会导致(或至少导致)旋转的沙滩球死亡。目前,我手动关闭每一个。 关注 answer
当我阅读 learnyousomeerlang.com 上的一篇文章时,我有一个问题。 http://learnyousomeerlang.com/errors-and-processes 它说: E
有什么方法可以通过 OpenCL API 终止正在运行的 OpenCL 内核吗?我没有在规范中找到任何内容。 我能想出的唯一解决方案是 1) 定期检查内核中的标志,当主机希望内核停止时写入该标志,或
我已经对套接字(使用fsockopen()和stream_socket_client())和cURL进行了一些测试,以强制关闭连接(TCP/HTTP)。但是,没有运气。 无论我使用的是1毫秒的超时时间
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我以不太优雅的方式杀死了 IRB 提示符(从 heroku run irb 开始),现在我有一个僵尸进程,但我似乎无法杀死它: Process State Co
致kill background process inside Codeship我们需要使用以下命令: #!/bin/bash nohup bash -c "YOUR_COMMAND 2>&1 &"
我第一次在这里发帖,因为我在互联网上找不到干净的解决方案。 我的目标很简单,我需要创建 一个 后台操作 (goroutine 或进程或其他...)我可以 正确杀死 (不要留在后台)。 我尝试了很多事情
我有一个进程调用: p=multiprocessing.Process(target=func_a) 然后func_a启动一个子进程: subprocess.Popen(["nc", "-l", "-
我正在运行一个基本上运行一堆服务器以进行本地测试的脚本。 这些 jar 在不同的 screen 中运行,因为它们需要独立地接受键盘输入。为此,我使用了 screen 。 command1="java
我有一个用 java 编写的应用程序,它在 Unix 上运行,并在启动时启动两个子进程(通过 Runtime.getRuntime().exec())。如果应用程序由于某种原因崩溃,子进程不会被终止。
我想要像 Pushbullet、SmartLockScreen 或 WhatsApp 那样独立运行的服务,它正在等待某个事件的发生。我已经尝试过前台服务,在 onStartCommand 中返回 ST
强制停止应用程序后,是否可以在 Android 应用程序中获取位置更新。在 IOS 中,如果我们强制停止应用程序,则有可能获得位置更新,以类似的方式,是否有任何服务可以为在 android 中被杀死的
我正在调查是否有任何方法可以防止 android 服务因未捕获的异常而被杀死。 我们有 10 个 UI 应用程序与 5-6 个服务通信。该平台是Android 2.2。 由于不可预见的情况,服务中的某
我刚刚将我的 javascript 转移到 jQuery 来实现简单的 AJAX 功能。不过,我尝试将灯箱插件与 jQuery 结合使用,因为我想保留相同的功能,但不想包含 10 个不同的库。如果我删
我是一名优秀的程序员,十分优秀!