小编Asa*_*vic的帖子

后台进程管道输入

如果我想在屏幕上显示“aaa”:

(1)$: echo aaa | cat                 ... works OK
(2)$: echo aaa | ( cat )             ... works OK
(3)$: echo aaa | ( cat & )           ... NOT working
(4)$: ( echo aaa & ) | cat           ... works OK 
(5)$: echo aaa | ( cat <&0 & )       ... works ok in BASH (but not in SH)
(6)$: echo aaa | ( cat <&3 & ) 3<&0  ... works ok in BASH and SH
Run Code Online (Sandbox Code Playgroud)

来自 (3) 和 (4) …

pipe background-process stdin

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

为什么php看不到/tmp文件

我有简单的 test.php 页面:

<pre><?php system("ls -la /tmp"); ?></pre>
Run Code Online (Sandbox Code Playgroud)

它总是只显示:...文件夹,浏览器中没有其他内容。

在命令行中:

1) ls -la /tmp
2) sudo -u http ls -la /tmp
3) php test.php
4) sudo -u http php test.php
Run Code Online (Sandbox Code Playgroud)

所有这些命令都返回目录文件/子目录的完整列表。

这是什么原因???

问题与“/tmp”文件夹相关,因为ls -lah /usr工作正常。

我在 4 个 comps 上对此进行了测试(其中一个是带有 php 5.0.6 的 debian,并且 php 像我预期的那样显示所有文件,其他 3 个 comps 有 php7 并显示空的 /tmp)。

更新:

即使在将 http 添加到 sudoers 文件并运行 'sudo ls /tmp' 之后,问题在 php 版本 >7 上也是一样的。

但是乳宁“系统( “回声AAA> /tmp/aaa.txt; LS -la / TMP”)所示 …

php systemd tmp files sandbox

7
推荐指数
2
解决办法
7868
查看次数

将空 STDIN 模拟为分离命令

我想用'command &'最后或'nohup command &'来分离命令,但它在分离后立即停止。

命令很少具体,如果它在输入时收到 eof,它会中断,因此 /dev/null 作为输入将导致结束和通常有效的解决方案:

$ command < /dev/null > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

不工作...

unix/linux 中是否有其他设备可以替换 /dev/null 并表现得像空输入,但不发送 eof。

(顺便说一句,命令是非常有用的多播工具emcast,我可以尝试自己修补它,或者为此目的找到修补版本......但似乎问题可以在外面解决)

我正在添加此 EDIT 以使我的问题更清楚。我制作了 2 行完美运行的 C 程序:程序名称是“donothing”

#include <unistd.h>
int main() {  while (1)  { sleep(10); } return 0; }
Run Code Online (Sandbox Code Playgroud)

这就是我正在寻找的,一些设备/程序,什么都不做,但保持其标准输出打开。两者(“command & ... disown”和“nohup command &”)都有效。

$ donothing | mycommand >/dev/null & 
$ disown %1
Run Code Online (Sandbox Code Playgroud)

效果很好,所以现在的问题只是:什么 unix 设备/程序表现得像我的“无所事事”。

nohup stdin

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

标签 统计

stdin ×2

background-process ×1

files ×1

nohup ×1

php ×1

pipe ×1

sandbox ×1

systemd ×1

tmp ×1