标签: process

在bash脚本中,如何逐行捕获stdout

在 bash 脚本中,我想逐行捕获长命令行的标准输出,以便在初始命令仍在运行时对其进行分析和报告。这是我能想象的复杂方法:

# Start long command in a separated process and redirect stdout to temp file
longcommand > /tmp/tmp$$.out &

#loop until process completes
ps cax | grep longcommand > /dev/null
while [ $? -eq 0 ]
do
    #capture the last lines in temp file and determine if there is new content to analyse
    tail /tmp/tmp$$.out

    # ...

    sleep 1 s  # sleep in order not to clog cpu

    ps cax | grep longcommand > /dev/null
done
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更简单的方法。

编辑: …

bash process stdout

35
推荐指数
2
解决办法
9万
查看次数

如何杀死给定名称的所有进程?

我运行命令ps -A | grep <application_name>并获取这样的进程列表:

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>
Run Code Online (Sandbox Code Playgroud)

我想从列表中杀死所有进程:19440, 21630, 22694

我试过,ps -A | grep <application_name> | xargs kill -9 $1但它有错误。

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>
Run Code Online (Sandbox Code Playgroud)

我怎样才能优雅地做到这一点?

grep process kill ps

35
推荐指数
2
解决办法
8万
查看次数

为什么大部分磁盘 IO 都归因于 jbd2 而不是实际使用 IO 的进程?

在监控磁盘 IO 时,大部分 IO 都归因于 jbd2,而导致高 IO 的原始进程归因于低得多的 IO 百分比。为什么?

这是iotop输出的示例(省略了 IO<1% 的其他进程):

在此处输入图片说明

process io disk

35
推荐指数
1
解决办法
4万
查看次数

我在哪里可以看到内核杀死的进程列表?

有什么方法可以检查内核杀死了我的哪些进程?有时我登录到我的服务器,发现应该运行一整夜的东西在 8 小时后停止了,我不确定是应用程序在做还是内核在做。

linux process logs kill monitoring

34
推荐指数
2
解决办法
6万
查看次数

如何为 linux 设置每个进程的交换率?

/proc/sys/vm/swappiness很好,但我想要一个像/proc/$PID/oom_adj. 这样我就可以让某些进程比其他进程更不可能换掉它们的任何页面。与 不同memlock(),这不会阻止程序被换出。就像nice,默认情况下,用户不能使他们的程序不太可能,但只会更有可能被交换。我想我不得不调用这个/proc/$PID/swappiness_adj

linux process swap

34
推荐指数
1
解决办法
1万
查看次数

如何查看在某个 bash 实例中执行的确切命令行?

我有一个长时间运行的bash实例(在screen会话内),它在循环内执行一组复杂的命令(每个循环执行管道、重定向等)。

长命令行写在终端内 - 它不在任何脚本内。现在,我知道 bash 进程 ID,并且我有 root 访问权限 - 我怎样才能看到在其中执行的确切命令行bash

例子
bash$ echo $$
1234
bash$ while true ; do \
    someThing | somethingElse 2>/foo/bar | \
    yetAnother ; sleep 600 ; done
Run Code Online (Sandbox Code Playgroud)

在另一个 shell 实例中,我想查看在 PID 1234 中执行的命令行:

bash$ echo $$
5678
bash$ su -
sh# cd /proc/1234
sh# # Do something here that will display the string  \
   'while true ; do someThing | somethingElse 2>/foo/bar | \
    yetAnother ; sleep …
Run Code Online (Sandbox Code Playgroud)

bash process debugging

34
推荐指数
2
解决办法
7507
查看次数

如何知道进程进入睡眠状态并唤醒它的原因?

当我执行 'top' 时,我看到我的 perl 脚本进程处于 'S' 状态。有没有办法知道,是什么让这个 perl 进程进入睡眠状态以及唤醒它的方法?任何调试方法以提供有关 perl 脚本中行的更多见解,使其进入“S”状态。

linux process top administration perl

33
推荐指数
2
解决办法
5万
查看次数

如何查看进程进行了多少次上下文切换?

我想看看我的进程是否进行了很多上下文切换。我还想看看操纵任务组如何影响上下文切换的数量。

linux shell process

33
推荐指数
3
解决办法
8万
查看次数

进程何时开始

要知道进程何时开始,我的第一个猜测是检查/proc/<pid>/cmdline上次写入/修改的时间。

ps还显示一个START字段。我认为这两个来源是相同的。有时它们并不相同。怎么会这样?

linux process ps proc

33
推荐指数
2
解决办法
2万
查看次数

systemd 如何在 kill -9 中存活下来?

在最近的“为什么 'kill -9 0' 结束我的控制台会话”和“如何获得内核恐慌”问题之间,我在我的马鞍下有一个毛刺,并尝试kill -9 1了一个最新的 Arch linux 笔记本电脑。我是作为用户 ID“root”来做的。

我完全预料到会发生某种崩溃、恐慌或关机,但什么也没发生。我又做了kill -9 1一次,没有效果。

Arch linux 机器systemd这些天都systemd在运行,所以:如何在 kill -9中幸存下来?我希望在 Linux 3.7 内核中有特殊情况代码,但也许存在一些我没有想到的其他原因。

用 PID 1 运行的其他东西呢?init我相信Slackware 仍在使用,但我害怕在我的生产 Slackware 服务器上尝试它。我的无线路由器上的 DD-WRT 运行某种形式的 /sbin/init。

process kill signals systemd init

33
推荐指数
1
解决办法
9090
查看次数

标签 统计

process ×10

linux ×5

kill ×3

bash ×2

ps ×2

administration ×1

debugging ×1

disk ×1

grep ×1

init ×1

io ×1

logs ×1

monitoring ×1

perl ×1

proc ×1

shell ×1

signals ×1

stdout ×1

swap ×1

systemd ×1

top ×1