小编mvo*_*sek的帖子

如何执行 sudo + exec?

我需要用来sudo以不同的用户身份运行进程。但如何使用sudo类似exec

sudo -u www-data exec php -r 'sleep(2); echo 5;'
Run Code Online (Sandbox Code Playgroud)

替换 sudo 进程?

为什么和要求?

  • 最小化总进程数
  • 命令是连续启动的,不可能一次性启动它们sudo
  • 该解决方案需要表现得像没有exec,即没有背景等。

shell bash sudo exec

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

对于已运行且具有已知 PID 的进程,从外部刷新管道/printf 缓冲区

我正在编写一个数据记录应用程序,所有程序的启动方式如下:

./program > out.bin
Run Code Online (Sandbox Code Playgroud)

数据收集器定期汇集 stdout 输出文件并读取数据。

问题是 IO 流被缓冲,如果某些程序以每秒 1 个字节的速度输出数据,则需要很长时间(默认 4k​​B 缓冲区大小,最多需要 4k 秒)才能实际刷新数据。

我的问题是如何强制 stdout/pipe/printf 缓冲区从外部刷新,即从外部调用类似fflush(stdout).

我读过各种网站,例如Turn off buffering in pipeline,但我无法禁用缓冲区,因为它对 IO 性能有巨大的影响(测量)。

我正在寻找高性能的生产解决方案,并且始终满足以下条件:

  • 程序(数据生产者)PID 始终已知
  • 输出始终是具有已知路径的文件
  • 数据记录进程具有完全root访问权限

shell pipe buffer file-descriptors

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

标签 统计

shell ×2

bash ×1

buffer ×1

exec ×1

file-descriptors ×1

pipe ×1

sudo ×1