Php 将输出重定向到两个文件,并在其死机时重新启动整个过程

Php 将输出重定向到两个文件,并在其死机时重新启动整个过程,php,linux,bash,process,Php,Linux,Bash,Process,当我执行以下命令时,我有一个PHP服务器在我的机器上运行: php src/server.php > >(tee -a ./logs/logs.txt) 2> >(echo "$(date)"; tee -a ./logs/errors.log >&2) 如果我没有弄错,它应该运行服务器,将所有消息提示到控制台,并将它们写入./logs/logs.txt,另外,将错误输出写入带有时间戳的.logs/errors.log 该命令在我的控制台中执行良好,并在创

当我执行以下命令时,我有一个PHP服务器在我的机器上运行:

php src/server.php > >(tee -a ./logs/logs.txt) 2> >(echo "$(date)"; tee -a ./logs/errors.log >&2)
如果我没有弄错,它应该运行服务器,将所有消息提示到控制台,并将它们写入./logs/logs.txt,另外,将错误输出写入带有时间戳的.logs/errors.log

该命令在我的控制台中执行良好,并在创建日志文件时启动服务器


我正在寻找一种方法,将这一行放入(bash?)脚本中,以便在服务器崩溃时将其与脚本结合起来重新启动服务器。目前,我已经尝试过以下方法:

#!/bin/bash

php src/server.php >> >(echo "$(date)"; tee -a ./logs/logs.txt) 2>> >(echo "$(date)"; tee -a ./logs/errors.log >&2)
但它给了我以下错误:

startServer.sh: line 3: syntax error near unexpected token `>'
startServer.sh: line 3: `php src/server.php >> >(echo "$(date)"; tee -a ./logs/logs.txt) 2>> >(echo "$(date)"; tee -a ./logs/errors.log >&2)'
我不明白为什么它不能工作,因为当我直接运行命令时,它运行得非常完美。这是
的问题!bin/bash
代码?或者我应该用管道替换
>
(它是否仍能按预期工作?)


另外,在重启流程解决方案中,有一个
直到myserver;执行
行。我应该写什么来代替myserver<代码>启动服务器

谢谢大家:)


编辑:看起来像
2>(echo“$(日期)”;tee-a./logs/errors.log>&2)
将错误消息放入errors.log,但它不会在之前的文件中打印日期:(

无论运行什么
startServer.sh
都没有使用bash,而是使用
sh
(或其他shell)。此外,如果你想在它死后重新启动它,我会使用流程/服务管理器(如systemd、runit等),而不是使用循环思想。我一直认为“sh”类似于“bash”(因为上海狂欢节)。今晚我会睡得更香!当使用
bash startServer.sh
时,它运行得非常好!我现在会看看你推荐的一些流程主管。谢谢你的帮助!顺便说一句,我编辑了我的消息,因为在添加错误消息之前,我没有在我的errors.log中打印时间戳。你有办法让它工作吗?你知道吗如果你想让日志文件起作用,还需要将日期的输出重定向到日志文件。它们“相似”,但“相似”不是“相同”。谢谢你的帮助!