相关疑难解决方法(0)

有没有办法使bash作业控制安静?

在后台运行作业时,Bash非常冗长:

$ echo toto&
toto
[1] 15922
[1]+  Done                    echo toto
Run Code Online (Sandbox Code Playgroud)

由于我试图并行运行作业并使用输出,我想找到一种方法来沉默bash.有没有办法删除这个多余的输出?

unix parallel-processing bash shell

38
推荐指数
2
解决办法
9224
查看次数

如何获取在bash脚本中执行的命令的进程ID?

我有一个脚本我想同时运行2个程序,一个是交流程序,另一个是cpulimit,我想先在后台以"&"启动C程序,然后得到C程序的PID和将它交给cpulimit,它也将在后台以"&"运行.

我尝试在下面这样做,它只是启动第一个程序,永远不会启动cpulimit.

另外,我使用archd中的systemd作为root用户运行它作为启动脚本.

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0
Run Code Online (Sandbox Code Playgroud)

linux bash shell sh systemd

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

在后台执行进程,不打印"完成",并获取PID

这似乎是一件非常微不足道的事情,但我很困难.

要在后台执行某些操作,请使用&:

>>> sleep 5 &
[1] 21763
>>> #hit enter
[1]+  Done                    sleep 5
Run Code Online (Sandbox Code Playgroud)

但有一个.bashrc的来源背景脚本输出作业信息是非常令人沮丧的,所以你可以做这个来解决它:

>>> (sleep 5 &)
Run Code Online (Sandbox Code Playgroud)

好的,所以现在我想获得sleepfor wait或的PID kill.不幸的是它在子shell中运行所以典型的$!方法不起作用:

>>> echo $!
21763
>>> (sleep 5 &)
>>> echo $!
21763 #hasn't changed
Run Code Online (Sandbox Code Playgroud)

所以我想,也许我可以通过这种方式获得子shell来打印它的PID:

>>> sleep 5 & echo $!
[1] 21803 #annoying job-start message (stderr)
21803 #from the echo
Run Code Online (Sandbox Code Playgroud)

但是现在当我在子shell中抛出它时,无论我如何尝试捕获子shell的stdout,它似乎都会阻塞直到sleep完成.

>>> pid=$(sleep 5 & echo $!)
Run Code Online (Sandbox Code Playgroud)

如何在后台运行某些内容,获取其PID并停止打印作业信息和" Done"?

bash

7
推荐指数
1
解决办法
3271
查看次数

如何在没有stdbuf和类似工具的情况下解除传统运行二进制文件的stdout

我想监视我将要开始的程序的实时输出.我试图通过将程序的输出重定向到管道,然后从监视脚本中读取管道来实现此目的.

./program >> apipe
Run Code Online (Sandbox Code Playgroud)

然后从监控脚本

cat apipe
Run Code Online (Sandbox Code Playgroud)

但是由于>>中的缓冲区,没有输出.无论如何我可以禁用此缓冲区?我在一个准系统嵌入式系统(petalinux)上运行,因此我无法访问unbuffer,脚本或stdbuf来帮助我.

我已经尝试了另一个平台上的脚本,其中unbuffer可用,它可以正常工作.

我可以用任何方式配置这个缓冲区,或使用另一个二进制文件来重定向?

编辑:我无法访问我尝试运行的命令的源代码.它是传统的二进制文件.

bash buffer pipe petalinux

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

标签 统计

bash ×4

shell ×2

buffer ×1

linux ×1

parallel-processing ×1

petalinux ×1

pipe ×1

sh ×1

systemd ×1

unix ×1