当我执行以下命令时,我有一台在我的机器上运行的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?)脚本中,以便我可以将其与this StackOverflow solution结合使用,以便在崩溃时重新启动服务器。现在,我尝试过这样的事情:
#!/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
代码的问题?或者我应该用管道替换>>
(它仍会按预期工作吗?)?
此外,在重启过程解决方案中,有一个until myserver; do
行。我应该写什么而不是myserver
? startServer
?
谢谢大家:)
编辑:似乎2> >(echo "$(date)"; tee -a ./logs/errors.log >&2)
确实将错误消息放在errors.log中,但它不会在之前的文件中打印日期。 :(